static {
    INSTANCE.registerExecutor(
        new QueryExecutor<DotNetTypeDeclaration, SearchParameters>() {
          @Override
          public boolean execute(
              @NotNull final SearchParameters parameters,
              @NotNull final Processor<DotNetTypeDeclaration> consumer) {
            final String baseVmQName = parameters.getVmQName();
            final SearchScope searchScope = parameters.getScope();

            TypeInheritorsSearch.LOGGER.assertTrue(searchScope != null);

            ProgressIndicator progress = ProgressIndicatorProvider.getGlobalProgressIndicator();
            if (progress != null) {
              progress.pushState();
              progress.setText(
                  PsiBundle.message("psi.search.inheritors.of.class.progress", baseVmQName));
            }

            boolean result = processInheritors(consumer, baseVmQName, searchScope, parameters);

            if (progress != null) {
              progress.popState();
            }

            return result;
          }
        });
  }
 public static Query<DotNetTypeDeclaration> search(@NotNull SearchParameters parameters) {
   return INSTANCE.createQuery(parameters);
 }