I haven't had this be a problem for me in production anywhere, but I noticed that when remove(Object) is called, it'll remove the value from the top-most map in the stack. This then means any queries for the key will fall-thru to lower maps, which is definately *not* what should occur.

Additionally, entrySet() returns an unmodifiable Collection of Map.Entry. However, those entries point to the *original* map. If someone called setValue() on the entry, it would modify the original map, instead of inserting a value into the top-most map.

If others concur with my reading/understanding, then I'll go about adding test cases which expose this, then fixing it.

Reply via email to