public ModuleVersionResolveResult resolve() {
      if (resolveResult != null) {
        return resolveResult;
      }
      if (failure != null) {
        return null;
      }

      resolveResult = idResolveResult.resolve();
      if (resolveResult.getFailure() != null) {
        failure = resolveResult.getFailure();
        return null;
      }
      setResolveResult(resolveResult);
      return resolveResult;
    }
 public ResolveState(
     ModuleVersionResolveResult rootResult,
     String rootConfigurationName,
     DependencyToModuleVersionIdResolver resolver,
     DependencyToConfigurationResolver dependencyToConfigurationResolver,
     ResolvedConfigurationBuilder builder) {
   this.resolver = resolver;
   this.dependencyToConfigurationResolver = dependencyToConfigurationResolver;
   this.builder = builder;
   ModuleVersionResolveState rootVersion = getRevision(rootResult.getId());
   rootVersion.setResolveResult(rootResult);
   root = getConfigurationNode(rootVersion, rootConfigurationName);
   root.moduleRevision.module.select(root.moduleRevision);
 }
 public void setResolveResult(ModuleVersionResolveResult resolveResult) {
   this.resolveResult = resolveResult;
   this.metaData = resolveResult.getMetaData();
   this.failure = null;
 }