ComponentDependencies (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; }