private static InternalIdeaCompilerOutput readCompilerOutput(final IonReader reader, final ReadContext context) {
    IonType ionType = reader.next();
    assertFieldName(reader, "compilerOutput");
    if (ionType == IonType.NULL || ionType == null) {
      return null;
    }

    reader.stepIn();
    InternalIdeaCompilerOutput project =
      context.compilerOutputsMap
        .computeIfAbsent(readInt(reader, OBJECT_ID_FIELD), new IntObjectMap.SimpleObjectFactory<InternalIdeaCompilerOutput>() {
          @Override
          public InternalIdeaCompilerOutput create() {
            InternalIdeaCompilerOutput compilerOutput = new InternalIdeaCompilerOutput();
            compilerOutput.setInheritOutputDirs(readBoolean(reader, "inheritOutputDirs"));
            compilerOutput.setOutputDir(readFile(reader, "outputDir"));
            compilerOutput.setTestOutputDir(readFile(reader, "testOutputDir"));
            return compilerOutput;
          }
        });
    reader.stepOut();
    return project;
  }
private static InternalIdeaCompilerOutput readCompilerOutput(final IonReader reader, final ReadContext context)