private void resolveDependencyGraph(
      ResolveContext resolveContext, DependencyGraphVisitor modelVisitor) {
    DefaultBuildableComponentResolveResult rootModule =
        new DefaultBuildableComponentResolveResult();
    moduleResolver.resolve(resolveContext, rootModule);

    ResolveState resolveState =
        new ResolveState(
            rootModule,
            resolveContext.getName(),
            idResolver,
            metaDataResolver,
            dependencyToConfigurationResolver);
    conflictHandler.registerResolver(
        new DirectDependencyForcingResolver(resolveState.root.moduleRevision));

    traverseGraph(resolveState, conflictHandler);

    assembleResult(resolveState, modelVisitor);
  }