@Nullable
  private InternalIdeaProject readProject(@NotNull final IonReader reader,
                                          @NotNull final ReadContext context) {
    if (reader.next() == null) return null;
    reader.stepIn();

    InternalIdeaProject project =
      context.projectsMap.computeIfAbsent(readInt(reader, OBJECT_ID_FIELD), new IntObjectMap.ObjectFactory<InternalIdeaProject>() {
        @Override
        public InternalIdeaProject newInstance() {
          return new InternalIdeaProject();
        }

        @Override
        public void fill(InternalIdeaProject ideaProject) {
          ideaProject.setName(assertNotNull(readString(reader, "name")));
          ideaProject.setDescription(readString(reader, "description"));
          ideaProject.setJdkName(readString(reader, "jdkName"));
          ideaProject.setJavaLanguageSettings(readJavaLanguageSettings(reader, context));
          ideaProject.setLanguageLevel(new InternalIdeaLanguageLevel(readString(reader, "languageLevel")));
          readModules(reader, context, ideaProject);
        }
      });
    reader.stepOut();
    return project;
  }
@Nullable
  private InternalIdeaProject readProject(@NotNull final IonReader reader,
                                          @NotNull final ReadContext context)