@Override
 protected void doFind(
     SNode node, SearchScope scope, List<SNode> _results, ProgressMonitor monitor) {
   monitor.start(getDescription(), 1);
   try {
     for (SNode classNode :
         ListSequence.fromList(
             FindUtils.executeFinder(
                 "jetbrains.mps.baseLanguage.findUsages.DerivedClasses_Finder",
                 SNodeOperations.getParent(node),
                 scope,
                 monitor.subTask(1)))) {
       Iterable<SNode> fieldsOfSameKind;
       if (SNodeOperations.isInstanceOf(
           node,
           MetaAdapterFactory.getConcept(
               0xf3061a5392264cc5L,
               0xa443f952ceaf5816L,
               0xf8c108ca68L,
               "jetbrains.mps.baseLanguage.structure.FieldDeclaration"))) {
         fieldsOfSameKind =
             ClassConcept_Behavior.call_fields_5292274854859383272(
                 SNodeOperations.cast(
                     classNode,
                     MetaAdapterFactory.getConcept(
                         0xf3061a5392264cc5L,
                         0xa443f952ceaf5816L,
                         0xf8c108ca66L,
                         "jetbrains.mps.baseLanguage.structure.ClassConcept")));
       } else {
         fieldsOfSameKind =
             Classifier_Behavior.call_staticFields_5292274854859223538(
                 SNodeOperations.cast(
                     classNode,
                     MetaAdapterFactory.getConcept(
                         0xf3061a5392264cc5L,
                         0xa443f952ceaf5816L,
                         0xf8c108ca66L,
                         "jetbrains.mps.baseLanguage.structure.ClassConcept")));
       }
       for (SNode field : Sequence.fromIterable(fieldsOfSameKind)) {
         if (SPropertyOperations.getString(
                     field,
                     MetaAdapterFactory.getProperty(
                         0xceab519525ea4f22L,
                         0x9b92103b95ca8c0cL,
                         0x110396eaaa4L,
                         0x110396ec041L,
                         "name"))
                 .equals(
                     SPropertyOperations.getString(
                         node,
                         MetaAdapterFactory.getProperty(
                             0xceab519525ea4f22L,
                             0x9b92103b95ca8c0cL,
                             0x110396eaaa4L,
                             0x110396ec041L,
                             "name")))
             && BehaviorReflection.invokeVirtual(
                     String.class,
                     SLinkOperations.getTarget(
                         field,
                         MetaAdapterFactory.getContainmentLink(
                             0xf3061a5392264cc5L,
                             0xa443f952ceaf5816L,
                             0x450368d90ce15bc3L,
                             0x4ed4d318133c80ceL,
                             "type")),
                     "virtual_getErasureSignature_1213877337313",
                     new Object[] {})
                 .equals(
                     BehaviorReflection.invokeVirtual(
                         String.class,
                         SLinkOperations.getTarget(
                             node,
                             MetaAdapterFactory.getContainmentLink(
                                 0xf3061a5392264cc5L,
                                 0xa443f952ceaf5816L,
                                 0x450368d90ce15bc3L,
                                 0x4ed4d318133c80ceL,
                                 "type")),
                         "virtual_getErasureSignature_1213877337313",
                         new Object[] {}))) {
           ListSequence.fromList(_results).addElement(field);
         }
       }
     }
   } finally {
     monitor.done();
   }
 }