Program: 17436
Project: 17436
Buggy source:
/** 
 * Add menu items based on the tag that was right clicked on... doesnt work as I have no idea how to find out what tag was just clicked on :) seems like perhaps the CFDocument could know...
 * @param menu
 */
protected void addTagSpecificMenuItems(IMenuManager menu){
  try {
    final IEditorPart iep=getSite().getPage().getActiveEditor();
    final ITextEditor editor=(ITextEditor)iep;
    final IDocument doc=editor.getDocumentProvider().getDocument(editor.getEditorInput());
    final ICFDocument cfd=(ICFDocument)doc;
    final ITextSelection sel=(ITextSelection)editor.getSelectionProvider().getSelection();
    Action act=new Action("String_Node_Str",null){
      public void run(){
        try {
          CFEPartitioner partitioner=new CFEPartitioner(new CFPartitionScanner(),PartitionTypes.ALL_PARTITION_TYPES);
          partitioner.connect(doc);
          doc.setDocumentPartitioner(partitioner);
        }
 catch (        Exception e) {
          e.printStackTrace();
        }
      }
    }
;
    menu.add(act);
    act=new Action("String_Node_Str",null){
      public void run(){
        int startpos=sel.getOffset();
        int len=Math.max(sel.getLength(),1);
        CFEPartitioner partitioner=(CFEPartitioner)cfd.getDocumentPartitioner();
        CFEPartition[] partitioning=partitioner.getCFEPartitions(startpos,startpos + len);
        String info="String_Node_Str" + startpos + "String_Node_Str"+ Integer.toString(startpos + len)+ "String_Node_Str";
        CFEPartition part=partitioner.findClosestPartition(startpos);
        info+="String_Node_Str" + part.getType() + "String_Node_Str"+ part.getTagName()+ "String_Node_Str";
        for (int i=0; i < partitioning.length; i++) {
          info+=partitioning[i].getType();
          info+="String_Node_Str";
          info+=partitioning[i].getOffset();
          info+="String_Node_Str";
          info+=Integer.toString(partitioning[i].getOffset() + partitioning[i].getLength());
          if (partitioning[i].getTagName() != null) {
            info+="String_Node_Str";
            info+=partitioning[i].getTagName();
            info+="String_Node_Str";
          }
          info+="String_Node_Str";
        }
        String[] labels=new String[1];
        labels[0]="String_Node_Str";
        MessageDialog msg=new MessageDialog(Display.getCurrent().getActiveShell(),"String_Node_Str",null,info,MessageDialog.WARNING,labels,0);
        msg.open();
      }
    }
;
    menu.add(act);
    act=new Action("String_Node_Str",null){
      public void run(){
        JumpToMatchingTagAction matchTagAction=new JumpToMatchingTagAction();
        matchTagAction.setActiveEditor(null,getSite().getPage().getActiveEditor());
        matchTagAction.run(null);
      }
    }
;
    menu.add(act);
    int startpos=sel.getOffset();
    CFEPartitioner partitioner=(CFEPartitioner)cfd.getDocumentPartitioner();
    CFEPartition part=partitioner.findClosestPartition(startpos);
    CfmlTagItem cti=null;
    try {
      cti=cfd.getTagAt(startpos,startpos);
    }
 catch (    Exception e) {
    }
    if (cti != null) {
      if (cti.matchingItem != null) {
        this.jumpAction.setDocPos(cti.matchingItem.getEndPosition());
        this.jumpAction.setActiveEditor(null,getSite().getPage().getActiveEditor());
        Action jumpNow=new Action("String_Node_Str",CFPluginImages.getImageRegistry().getDescriptor(CFPluginImages.ICON_FORWARD)){
          public void run(){
            CFMLEditor.this.jumpAction.run(null);
          }
        }
;
        menu.add(jumpNow);
      }
      String n=cti.getName();
      if (part.getTagName().equals("String_Node_Str") || part.getTagName().equals("String_Node_Str")) {
        this.gfa.setActiveEditor(null,getSite().getPage().getActiveEditor());
        Action ack=new Action("String_Node_Str",CFPluginImages.getImageRegistry().getDescriptor(CFPluginImages.ICON_IMPORT)){
          public void run(){
            CFMLEditor.this.gfa.run(null);
          }
        }
;
        menu.add(ack);
      }
    }
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
/** 
 * Add menu items based on the tag that was right clicked on... doesnt work as I have no idea how to find out what tag was just clicked on :) seems like perhaps the CFDocument could know...
 * @param menu
 */
protected void addTagSpecificMenuItems(IMenuManager menu){
  try {
    final IEditorPart iep=getSite().getPage().getActiveEditor();
    final ITextEditor editor=(ITextEditor)iep;
    final IDocument doc=editor.getDocumentProvider().getDocument(editor.getEditorInput());
    final ICFDocument cfd=(ICFDocument)doc;
    final ITextSelection sel=(ITextSelection)editor.getSelectionProvider().getSelection();
    Action act=new Action("String_Node_Str",null){
      public void run(){
        try {
          CFEPartitioner partitioner=new CFEPartitioner(new CFPartitionScanner(),PartitionTypes.ALL_PARTITION_TYPES);
          partitioner.connect(doc);
          doc.setDocumentPartitioner(partitioner);
        }
 catch (        Exception e) {
          e.printStackTrace();
        }
      }
    }
;
    menu.add(act);
    act=new Action("String_Node_Str",null){
      public void run(){
        int startpos=sel.getOffset();
        int len=Math.max(sel.getLength(),1);
        CFEPartitioner partitioner=(CFEPartitioner)cfd.getDocumentPartitioner();
        CFEPartition[] partitioning=partitioner.getCFEPartitions(startpos,startpos + len);
        String info="String_Node_Str" + startpos + "String_Node_Str"+ Integer.toString(startpos + len)+ "String_Node_Str";
        CFEPartition part=partitioner.findClosestPartition(startpos);
        info+="String_Node_Str" + part.getType() + "String_Node_Str"+ part.getTagName()+ "String_Node_Str";
        for (int i=0; i < partitioning.length; i++) {
          info+=partitioning[i].getType();
          info+="String_Node_Str";
          info+=partitioning[i].getOffset();
          info+="String_Node_Str";
          info+=Integer.toString(partitioning[i].getOffset() + partitioning[i].getLength());
          if (partitioning[i].getTagName() != null) {
            info+="String_Node_Str";
            info+=partitioning[i].getTagName();
            info+="String_Node_Str";
          }
          info+="String_Node_Str";
        }
        String[] labels=new String[1];
        labels[0]="String_Node_Str";
        MessageDialog msg=new MessageDialog(Display.getCurrent().getActiveShell(),"String_Node_Str",null,info,MessageDialog.WARNING,labels,0);
        msg.open();
      }
    }
;
    menu.add(act);
    act=new Action("String_Node_Str",null){
      public void run(){
        JumpToMatchingTagAction matchTagAction=new JumpToMatchingTagAction();
        matchTagAction.setActiveEditor(null,getSite().getPage().getActiveEditor());
        matchTagAction.run(null);
      }
    }
;
    menu.add(act);
    int startpos=sel.getOffset();
    CFEPartitioner partitioner=(CFEPartitioner)cfd.getDocumentPartitioner();
    CFEPartition part=partitioner.findClosestPartition(startpos);
    CfmlTagItem cti=null;
    try {
      cti=cfd.getTagAt(startpos,startpos);
    }
 catch (    Exception e) {
    }
    if (cti != null) {
      if (cti.matchingItem != null) {
        this.jumpAction.setDocPos(cti.matchingItem.getEndPosition());
        this.jumpAction.setActiveEditor(null,getSite().getPage().getActiveEditor());
        Action jumpNow=new Action("String_Node_Str",CFPluginImages.getImageRegistry().getDescriptor(CFPluginImages.ICON_FORWARD)){
          public void run(){
            CFMLEditor.this.jumpAction.run(null);
          }
        }
;
        menu.add(jumpNow);
      }
      if (part.getTagName().equals("String_Node_Str") || part.getTagName().equals("String_Node_Str")) {
        this.gfa.setActiveEditor(null,getSite().getPage().getActiveEditor());
        Action ack=new Action("String_Node_Str",CFPluginImages.getImageRegistry().getDescriptor(CFPluginImages.ICON_IMPORT)){
          public void run(){
            CFMLEditor.this.gfa.run(null);
          }
        }
;
        menu.add(ack);
      }
    }
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}