InternalIdeaProject (@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; }