code: private Map<String, Object> deserialized() {
          // Written as a loop to prevent the need for locking
          DeserializationState deserState;
          while (!(deserState = _deserState.get()).isDeserialized()) {
              Map<String, Object> deserialized = JsonHelper.fromJson(deserState.json, new TypeReference<Map<String, Object>>() {});
              deserialized.putAll(deserState.overrides);
              DeserializationState newDeserState = new DeserializationState(deserialized);
              _deserState.compareAndSet(deserState, newDeserState);
          }
          return deserState.deserialized;
      }
docs: Returns the JSON as a Map.  If necessary the JSON is converted to a Map as a result of this call.