Program: 96811
Project: 96811
Buggy source:
@Override public void run(){
  try {
    ISelection selection=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
    if (selection instanceof IStructuredSelection) {
      IStructuredSelection structuredSelection=(IStructuredSelection)selection;
      List<Change> localChanges=Handlers.getArtifactChangesFromStructuredSelection(structuredSelection);
      if (localChanges.isEmpty() || localChanges.size() > 1) {
        AWorkbench.popup("String_Node_Str");
        return;
      }
      Change change=localChanges.iterator().next();
      List<TransactionToken> transactionsFromStructuredSelection=Handlers.getTransactionsFromStructuredSelection(structuredSelection);
      TransactionId transactionId=transactionsFromStructuredSelection.iterator().next();
      List<Artifact> artifactsFromStructuredSelection=Handlers.getArtifactsFromStructuredSelection(structuredSelection);
      Artifact artifact=artifactsFromStructuredSelection.iterator().next();
      String was=change.getWasValue();
      int attrId=((AttributeChange)change).getAttrId().getId().intValue();
      TransactionId previousTransaction=getPreviousTransaction(artifact.getBranchId(),attrId,transactionId);
      if (!Strings.isValid(was) && change instanceof AttributeChange) {
        if (previousTransaction.isValid()) {
          was=loadAttributeValue(attrId,previousTransaction,artifact);
        }
      }
      String is=change.getIsValue();
      if (!Strings.isValid(is) && change instanceof AttributeChange) {
        is=loadAttributeValue(attrId,transactionId,artifact);
      }
      CompareHandler compareHandler=new CompareHandler(String.format("String_Node_Str",change),new CompareItem(String.format("String_Node_Str",previousTransaction),was,System.currentTimeMillis()),new CompareItem(String.format("String_Node_Str",transactionId),is,System.currentTimeMillis()),null);
      compareHandler.compare();
    }
  }
 catch (  Exception ex) {
    OseeLog.log(getClass(),OseeLevel.SEVERE_POPUP,ex);
  }
}

Fixed version (ground truth):
@Override public void run(){
  try {
    ISelection selection=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
    if (selection instanceof IStructuredSelection) {
      IStructuredSelection structuredSelection=(IStructuredSelection)selection;
      List<Change> localChanges=Handlers.getArtifactChangesFromStructuredSelection(structuredSelection);
      if (localChanges.isEmpty() || localChanges.size() > 1) {
        AWorkbench.popup("String_Node_Str");
        return;
      }
      Change change=localChanges.iterator().next();
      if (change.getModificationType() != ModificationType.MODIFIED) {
        AWorkbench.popup(String.format("String_Node_Str",change.getModificationType().toString()));
        return;
      }
      TransactionId transactionId=change.getTxDelta().getEndTx();
      List<Artifact> artifactsFromStructuredSelection=Handlers.getArtifactsFromStructuredSelection(structuredSelection);
      Artifact artifact=artifactsFromStructuredSelection.iterator().next();
      String was=change.getWasValue();
      int attrId=((AttributeChange)change).getAttrId().getId().intValue();
      TransactionId previousTransaction=getPreviousTransaction(artifact.getBranchId(),attrId,transactionId);
      if (!Strings.isValid(was) && change instanceof AttributeChange) {
        if (previousTransaction.isValid()) {
          was=loadAttributeValue(attrId,previousTransaction,artifact);
        }
      }
      String is=change.getIsValue();
      if (!Strings.isValid(is) && change instanceof AttributeChange) {
        is=loadAttributeValue(attrId,transactionId,artifact);
      }
      CompareHandler compareHandler=new CompareHandler(String.format("String_Node_Str",change),new CompareItem(String.format("String_Node_Str",previousTransaction),was,System.currentTimeMillis()),new CompareItem(String.format("String_Node_Str",transactionId),is,System.currentTimeMillis()),null);
      compareHandler.compare();
    }
  }
 catch (  Exception ex) {
    OseeLog.log(getClass(),OseeLevel.SEVERE_POPUP,ex);
  }
}