public ProjectModelFetcher(NbGradleProject project, GradleTarget gradleTarget) {
      this.settingsFile =
          NbGenericModelInfo.findSettingsGradle(project.getProjectDirectoryAsFile());

      List<NbGradleExtensionRef> extensions = project.getExtensionRefs();
      this.toolingModelNeeds = CollectionUtils.newHashMap(extensions.size());

      Map<Object, List<GradleBuildInfoQuery<?>>> buildInfoRequests = Collections.emptyMap();

      Map<Object, List<GradleProjectInfoQuery<?>>> projectInfoRequests = new HashMap<>();

      List<Class<?>> models = new LinkedList<>();
      for (NbGradleExtensionRef extensionRef : extensions) {
        String extensionName = extensionRef.getName();

        GradleModelDefQuery2 modelQuery = extensionRef.getModelNeeds().getQuery2();
        GradleModelDef modelDef = modelQuery.getModelDef(gradleTarget);

        models.addAll(modelDef.getToolingModels());
        addAllToMultiMap(extensionName, modelDef.getProjectInfoQueries(), projectInfoRequests);
        addAllToMultiMap(extensionName, modelDef.getToolingModels(), toolingModelNeeds);
      }

      modelFetcher = new GenericModelFetcher(buildInfoRequests, projectInfoRequests, models);
    }