@NotNull
 public static Query<DotNetTypeDeclaration> search(
     @NotNull final DotNetTypeDeclaration typeDeclaration,
     final boolean checkDeep,
     @NotNull Function<DotNetTypeDeclaration, DotNetTypeDeclaration> transformer) {
   return search(typeDeclaration, typeDeclaration.getUseScope(), checkDeep, transformer);
 }
 @NotNull
 public static Query<DotNetTypeDeclaration> search(
     @NotNull final DotNetTypeDeclaration typeDeclaration,
     @NotNull SearchScope scope,
     final boolean checkDeep,
     final boolean checkInheritance,
     Function<DotNetTypeDeclaration, DotNetTypeDeclaration> transformer) {
   String vmQName =
       ApplicationManager.getApplication()
           .runReadAction(
               new Computable<String>() {
                 @Override
                 public String compute() {
                   if (typeDeclaration.hasModifier(DotNetModifier.SEALED)) {
                     return null;
                   }
                   return typeDeclaration.getVmQName();
                 }
               });
   if (vmQName == null) {
     return EmptyQuery.getEmptyQuery();
   }
   return search(
       new SearchParameters(
           typeDeclaration.getProject(),
           vmQName,
           scope,
           checkDeep,
           checkInheritance,
           transformer));
 }
 @NotNull
 public static Query<DotNetTypeDeclaration> search(
     @NotNull final DotNetTypeDeclaration typeDeclaration, final boolean checkDeep) {
   return search(
       typeDeclaration,
       typeDeclaration.getUseScope(),
       checkDeep,
       DotNetPsiSearcher.DEFAULT_TRANSFORMER);
 }