private static InternalIdeaJavaLanguageSettings readJavaLanguageSettings(final IonReader reader, ReadContext context) {
    IonType ionType = reader.next();
    assertFieldName(reader, "javaLanguageSettings");
    if (ionType == IonType.NULL || ionType == null) {
      return null;
    }
    reader.stepIn();

    InternalIdeaJavaLanguageSettings dependency = context.languageSettingsMap
      .computeIfAbsent(readInt(reader, OBJECT_ID_FIELD), new SimpleObjectFactory<InternalIdeaJavaLanguageSettings>() {
        @Override
        public InternalIdeaJavaLanguageSettings create() {
          InternalIdeaJavaLanguageSettings languageSettings = new InternalIdeaJavaLanguageSettings();
          String languageLevel = readString(reader, "languageLevel");
          if (languageLevel != null) {
            languageSettings.setLanguageLevel(JavaVersion.valueOf(languageLevel));
          }
          String bytecodeVersion = readString(reader, "targetBytecodeVersion");
          if (bytecodeVersion != null) {
            languageSettings.setTargetBytecodeVersion(JavaVersion.valueOf(bytecodeVersion));
          }
          languageSettings.setJdk(readJdk(reader));
          return languageSettings;
        }
      });
    reader.stepOut();
    return dependency;
  }
private static InternalIdeaJavaLanguageSettings readJavaLanguageSettings(final IonReader reader, ReadContext context)