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

    reader.stepIn();
    InternalProjectIdentifier dependency = context.projectsIdentifiersMap
      .computeIfAbsent(readInt(reader, OBJECT_ID_FIELD), new SimpleObjectFactory<InternalProjectIdentifier>() {
        @Override
        public InternalProjectIdentifier create() {
          String projectPath = readString(reader, "projectPath");
          InternalBuildIdentifier buildIdentifier = readBuildIdentifier(reader, context);
          return new InternalProjectIdentifier(buildIdentifier, projectPath);
        }
      });
    reader.stepOut();
    return dependency;
  }
private static InternalProjectIdentifier readProjectIdentifier(final IonReader reader, final ReadContext context)