@Nullable
  private static ComponentDependencies readComponentDependencies(final IonReader reader, final ReadContext context) {
    if (reader.next() == null) return null;
    reader.stepIn();
    ComponentDependencies dependency =
      context.componentDependenciesMap
        .computeIfAbsent(readInt(reader, OBJECT_ID_FIELD), new IntObjectMap.SimpleObjectFactory<ComponentDependencies>() {
          @Override
          public ComponentDependencies create() {
            String componentName = assertNotNull(readString(reader, "name"));
            DependencyScopeNode compileDependencies = (DependencyScopeNode)assertNotNull(readDependencyNode(reader, context, "compile"));
            DependencyScopeNode runtimeDependencies = (DependencyScopeNode)assertNotNull(readDependencyNode(reader, context, "runtime"));
            return new ComponentDependenciesImpl(componentName, compileDependencies, runtimeDependencies);
          }
        });
    reader.stepOut();
    return dependency;
  }
@Nullable
  private static ComponentDependencies readComponentDependencies(final IonReader reader, final ReadContext context)