public void doDispose() {
   PluginId debuggerPlugin =
       PluginManager.getPluginByClassName("jetbrains.mps.debug.api.DebugInfoManager");
   if (debuggerPlugin == null) {
     return;
   }
   final DebugInfoManager manager = DebugInfoManager.getInstance();
   if (manager == null) {
     return;
   }
   manager.removeConceptBreakpointCreator("jetbrains.mps.baseLanguage.structure.Statement");
   manager.removeConceptBreakpointCreator("jetbrains.mps.baseLanguage.structure.FieldDeclaration");
   manager.removeConceptBreakpointCreator(
       "jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration");
   SetSequence.fromSet(DebugInfoProvider_CustomApplicationPlugin.this.myCreators)
       .visitAll(
           new IVisitor<
               Tuples._2<
                   _FunctionTypes._return_P1_E0<? extends Boolean, ? super SNode>,
                   _FunctionTypes._return_P2_E0<
                       ? extends ILocationBreakpoint, ? super SNode, ? super Project>>>() {
             public void visit(
                 Tuples._2<
                         _FunctionTypes._return_P1_E0<? extends Boolean, ? super SNode>,
                         _FunctionTypes._return_P2_E0<
                             ? extends ILocationBreakpoint, ? super SNode, ? super Project>>
                     it) {
               manager.removeBreakpointCreator(it);
             }
           });
   SetSequence.fromSet(DebugInfoProvider_CustomApplicationPlugin.this.myCreators).clear();
 }
 public void doInit() {
   PluginId debuggerPlugin =
       PluginManager.getPluginByClassName("jetbrains.mps.debug.api.DebugInfoManager");
   if (debuggerPlugin == null) {
     return;
   }
   DebugInfoManager manager = DebugInfoManager.getInstance();
   if (manager == null) {
     return;
   }
   {
     Mapper2<SNode, Project, ILocationBreakpoint> creator =
         new Mapper2<SNode, Project, ILocationBreakpoint>() {
           public ILocationBreakpoint value(SNode debuggableNode, Project project) {
             try {
               return Debuggers.getInstance()
                   .getDebuggerByNameSafe("Java")
                   .createBreakpoint(debuggableNode, "JAVA_LINE_BREAKPOINT", project);
             } catch (DebuggerNotPresentException e) {
               if (log.isWarnEnabled()) {
                 log.warn("Exception while creating breakpoint for node" + debuggableNode, e);
               }
               return null;
             }
           }
         };
     manager.addConceptBreakpointCreator(
         "jetbrains.mps.baseLanguage.structure.Statement", creator);
   }
   {
     Mapper2<SNode, Project, ILocationBreakpoint> creator =
         new Mapper2<SNode, Project, ILocationBreakpoint>() {
           public ILocationBreakpoint value(SNode debuggableNode, Project project) {
             try {
               return Debuggers.getInstance()
                   .getDebuggerByNameSafe("Java")
                   .createBreakpoint(debuggableNode, "JAVA_FIELD_BREAKPOINT", project);
             } catch (DebuggerNotPresentException e) {
               if (log.isWarnEnabled()) {
                 log.warn("Exception while creating breakpoint for node" + debuggableNode, e);
               }
               return null;
             }
           }
         };
     manager.addConceptBreakpointCreator(
         "jetbrains.mps.baseLanguage.structure.FieldDeclaration", creator);
     manager.addConceptBreakpointCreator(
         "jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration", creator);
   }
 }