@ Override public Object put ( String key , Object value ) { DeserializationState deserializationState = _deserState . get ( ) ; if ( deserializationState . isDeserialized ( ) ) { return deserializationState . deserialized . put ( key , value ) ; } return deserializationState . overrides . put ( key , value ) ; }
For efficiency this method breaks the contract that the old value is returned . Otherwise common operations such as adding intrinsics and template attributes would require deserializing the object .