code: Modification get(Object key) {
        for (State state = this; state != null; state = state.next) {
           Modification mod = state.modifications.get(key);
           if (mod != null)
              return mod;
           else if (state.clear)
              return CLEAR;
        }
        return null;
     }
docs: Gets the Modification for the specified key from this State object or chained (
  <code>next</code>) State objects.
  
  @param key
  the key to look up
  @return the Modification for the specified key, or <code>CLEAR</code> if the state was
  cleared, or <code>null</code> if the key is not in the state map