svoid dynamicObject_dropRawField(DynamicObject o, O key, O value) { if (o == null) ret; // double sync, but should be OK here because of locking order o > o.fieldValues synchronized(o) { o.fieldValues = syncMapRemove_deleteMapIfEmpty((LinkedHashMap) o.fieldValues, key, value); } }