Program: 122757
Project: 122757
Buggy source:
/** 
 * DOC Administrator Comment method "getTooltipFigure".
 * @param figure
 */
public void updateTooltipFigure(Figure figure,BusinessTooltipFigure tooltipFigure,EditPart editPart){
  EObject element=((View)editPart.getModel()).getElement();
  if (element instanceof BusinessItem) {
    List assignements=((BusinessItem)element).getAssignments();
    BusinessItemProviderAdapterFactory adapterFactory=new BusinessItemProviderAdapterFactory();
    BusinessAssignmentItemProvider provider=(BusinessAssignmentItemProvider)adapterFactory.createBusinessAssignmentAdapter();
    Image img=null;
    Label label=null;
    List<Label> labels=new ArrayList();
    try {
      for (      Object assignment : assignements) {
        if (assignment instanceof BusinessAssignment) {
          TalendItem talendItem=((BusinessAssignment)assignment).getTalendItem();
          if (talendItem != null) {
            IRepositoryViewObject obj=CorePlugin.getDefault().getProxyRepositoryFactory().getLastVersion(talendItem.getId());
            if (obj != null) {
              ERepositoryObjectType type=obj.getRepositoryObjectType();
              Item item=obj.getProperty().getItem();
              if (item instanceof JobletProcessItem) {
                JobletProcessItem jobletItem=(JobletProcessItem)item;
                Image jobletCustomIcon=RepositoryLabelProvider.getJobletCustomIcon(jobletItem.getProperty());
                if (jobletCustomIcon != null) {
                  img=ImageUtils.scale(jobletCustomIcon,ICON_SIZE.ICON_16);
                }
              }
 else {
                img=CoreImageProvider.getImage(type);
              }
              label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
              labels.add(label);
            }
 else {
              MetadataTable table=MetadataTool.getMetadataTableFromRepository(talendItem.getId());
              Query query=MetadataTool.getQueryFromRepository(talendItem.getId());
              SAPFunctionUnit function=MetadataTool.getSAPFunctionFromRepository(talendItem.getId());
              if (table != null) {
                img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.METADATA_TABLE_ICON.getPath()).createImage();
                label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                labels.add(label);
              }
 else               if (query != null) {
                img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.METADATA_QUERY_ICON.getPath()).createImage();
                label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                labels.add(label);
              }
 else               if (talendItem instanceof SQLPattern) {
                List<IRepositoryViewObject> list=ProxyRepositoryFactory.getInstance().getAll(ERepositoryObjectType.SQLPATTERNS);
                for (                IRepositoryViewObject object : list) {
                  if (talendItem.getLabel().equals(object.getLabel())) {
                    img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.METADATA_SQLPATTERN_ICON.getPath()).createImage();
                    label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                    labels.add(label);
                  }
                }
              }
 else               if (talendItem instanceof Routine) {
                List<IRepositoryViewObject> list=ProxyRepositoryFactory.getInstance().getAll(ERepositoryObjectType.ROUTINES);
                for (                IRepositoryViewObject object : list) {
                  if (talendItem.getLabel().equals(object.getLabel())) {
                    img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.ROUTINE_ICON.getPath()).createImage();
                    label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                    labels.add(label);
                  }
                }
              }
 else               if (function != null) {
                img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.METADATA_SAPCONNECTION_ICON.getPath()).createImage();
                label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                labels.add(label);
              }
 else {
                img=(Image)provider.getImage(assignment);
                img=new OverlayImage(img,ImageProvider.getImageDesc(ECoreImage.DELETED_OVERLAY),EPosition.BOTTOM_RIGHT).createImage();
                String text=provider.getText(assignment) + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str";
                label=new Label(text,img);
                labels.add(label);
              }
            }
          }
        }
      }
      if (tooltipFigure == null) {
        tooltipFigure=new BusinessTooltipFigure();
      }
      if (labels.size() == 0) {
        figure.setToolTip(null);
      }
 else {
        tooltipFigure.buildFigures(labels);
        figure.setToolTip(tooltipFigure);
      }
    }
 catch (    PersistenceException e) {
      ExceptionHandler.process(e);
    }
  }
}

Fixed version (ground truth):
/** 
 * DOC Administrator Comment method "getTooltipFigure".
 * @param figure
 */
public void updateTooltipFigure(Figure figure,BusinessTooltipFigure tooltipFigure,EditPart editPart){
  EObject element=((View)editPart.getModel()).getElement();
  if (element instanceof BusinessItem) {
    List assignements=((BusinessItem)element).getAssignments();
    BusinessItemProviderAdapterFactory adapterFactory=new BusinessItemProviderAdapterFactory();
    BusinessAssignmentItemProvider provider=(BusinessAssignmentItemProvider)adapterFactory.createBusinessAssignmentAdapter();
    Image img=null;
    Label label=null;
    List<Label> labels=new ArrayList();
    try {
      for (      Object assignment : assignements) {
        if (assignment instanceof BusinessAssignment) {
          TalendItem talendItem=((BusinessAssignment)assignment).getTalendItem();
          if (talendItem != null) {
            IRepositoryViewObject obj=CorePlugin.getDefault().getProxyRepositoryFactory().getLastVersion(talendItem.getId());
            if (obj != null) {
              ERepositoryObjectType type=obj.getRepositoryObjectType();
              Item item=obj.getProperty().getItem();
              if (item instanceof JobletProcessItem) {
                JobletProcessItem jobletItem=(JobletProcessItem)item;
                Image jobletCustomIcon=RepositoryLabelProvider.getJobletCustomIcon(jobletItem.getProperty());
                if (jobletCustomIcon != null) {
                  img=ImageUtils.scale(jobletCustomIcon,ICON_SIZE.ICON_16);
                }
              }
 else {
                img=CoreImageProvider.getImage(type);
              }
              label=new Label(obj.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
              labels.add(label);
            }
 else {
              MetadataTable table=MetadataTool.getMetadataTableFromRepository(talendItem.getId());
              Query query=MetadataTool.getQueryFromRepository(talendItem.getId());
              SAPFunctionUnit function=MetadataTool.getSAPFunctionFromRepository(talendItem.getId());
              if (table != null) {
                img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.METADATA_TABLE_ICON.getPath()).createImage();
                label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                labels.add(label);
              }
 else               if (query != null) {
                img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.METADATA_QUERY_ICON.getPath()).createImage();
                label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                labels.add(label);
              }
 else               if (talendItem instanceof SQLPattern) {
                List<IRepositoryViewObject> list=ProxyRepositoryFactory.getInstance().getAll(ERepositoryObjectType.SQLPATTERNS);
                for (                IRepositoryViewObject object : list) {
                  if (talendItem.getLabel().equals(object.getLabel())) {
                    img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.METADATA_SQLPATTERN_ICON.getPath()).createImage();
                    label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                    labels.add(label);
                  }
                }
              }
 else               if (talendItem instanceof Routine) {
                List<IRepositoryViewObject> list=ProxyRepositoryFactory.getInstance().getAll(ERepositoryObjectType.ROUTINES);
                for (                IRepositoryViewObject object : list) {
                  if (talendItem.getLabel().equals(object.getLabel())) {
                    img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.ROUTINE_ICON.getPath()).createImage();
                    label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                    labels.add(label);
                  }
                }
              }
 else               if (function != null) {
                img=ImageDescriptor.createFromFile(ECoreImage.class,ECoreImage.METADATA_SAPCONNECTION_ICON.getPath()).createImage();
                label=new Label(talendItem.getLabel() + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str",img);
                labels.add(label);
              }
 else {
                img=(Image)provider.getImage(assignment);
                img=new OverlayImage(img,ImageProvider.getImageDesc(ECoreImage.DELETED_OVERLAY),EPosition.BOTTOM_RIGHT).createImage();
                String text=provider.getText(assignment) + "String_Node_Str" + provider.getColumnText(assignment,0)+ "String_Node_Str";
                label=new Label(text,img);
                labels.add(label);
              }
            }
          }
        }
      }
      if (tooltipFigure == null) {
        tooltipFigure=new BusinessTooltipFigure();
      }
      if (labels.size() == 0) {
        figure.setToolTip(null);
      }
 else {
        tooltipFigure.buildFigures(labels);
        figure.setToolTip(tooltipFigure);
      }
    }
 catch (    PersistenceException e) {
      ExceptionHandler.process(e);
    }
  }
}