Program: 12138
Project: 12138
Buggy source:
private ASTSlice[] getTable(){
  if (selectedPackage != null)   new ASTReader(selectedPackage);
 else   new ASTReader(selectedProject);
  final SystemObject systemObject=ASTReader.getSystemObject();
  final List<PDGSliceUnion> extractedSlices=new ArrayList<PDGSliceUnion>();
  final List<PDGObjectSliceUnion> extractedObjectSlices=new ArrayList<PDGObjectSliceUnion>();
  IWorkbenchWindow window=getSite().getWorkbenchWindow();
  try {
    window.getWorkbench().getProgressService().run(true,true,new IRunnableWithProgress(){
      public void run(      IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        monitor.beginTask("String_Node_Str",systemObject.getClassNumber());
        ListIterator<ClassObject> classIterator=systemObject.getClassListIterator();
        while (classIterator.hasNext()) {
          if (monitor.isCanceled())           throw new OperationCanceledException();
          ClassObject classObject=classIterator.next();
          ListIterator<MethodObject> methodIterator=classObject.getMethodIterator();
          while (methodIterator.hasNext()) {
            MethodObject methodObject=methodIterator.next();
            if (methodObject.getMethodBody() != null) {
              CFG cfg=new CFG(methodObject);
              PDG pdg=new PDG(cfg,classObject.getIFile());
              pdg.setFieldsAccessedInMethod(classObject.getFieldsAccessedInsideMethod(methodObject));
              for (              VariableDeclaration declaration : pdg.getVariableDeclarationsInMethod()) {
                PlainVariable variable=new PlainVariable(declaration);
                PDGSliceUnionCollection sliceUnionCollection=new PDGSliceUnionCollection(pdg,variable);
                for (                PDGSliceUnion sliceUnion : sliceUnionCollection.getSliceUnions()) {
                  extractedSlices.add(sliceUnion);
                }
              }
              for (              VariableDeclaration declaration : pdg.getVariableDeclarationsAndAccessedFieldsInMethod()) {
                PlainVariable variable=new PlainVariable(declaration);
                PDGObjectSliceUnionCollection objectSliceUnionCollection=new PDGObjectSliceUnionCollection(pdg,variable);
                for (                PDGObjectSliceUnion objectSliceUnion : objectSliceUnionCollection.getSliceUnions()) {
                  extractedObjectSlices.add(objectSliceUnion);
                }
              }
            }
          }
          monitor.worked(1);
        }
        monitor.done();
      }
    }
);
  }
 catch (  InvocationTargetException e) {
    e.printStackTrace();
  }
catch (  InterruptedException e) {
    e.printStackTrace();
  }
  ASTSlice[] table=new ASTSlice[extractedSlices.size() + extractedObjectSlices.size()];
  for (int i=0; i < extractedSlices.size(); i++) {
    ASTSlice astSlice=new ASTSlice(extractedSlices.get(i));
    table[i]=astSlice;
  }
  for (int i=0; i < extractedObjectSlices.size(); i++) {
    ASTSlice astSlice=new ASTSlice(extractedObjectSlices.get(i));
    table[extractedSlices.size() + i]=astSlice;
  }
  return table;
}

Fixed version (ground truth):
private ASTSlice[] getTable(){
  if (selectedPackage != null)   new ASTReader(selectedPackage);
 else   new ASTReader(selectedProject);
  final SystemObject systemObject=ASTReader.getSystemObject();
  final List<PDGSliceUnion> extractedSlices=new ArrayList<PDGSliceUnion>();
  final List<PDGObjectSliceUnion> extractedObjectSlices=new ArrayList<PDGObjectSliceUnion>();
  IWorkbenchWindow window=getSite().getWorkbenchWindow();
  try {
    window.getWorkbench().getProgressService().run(true,true,new IRunnableWithProgress(){
      public void run(      IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        monitor.beginTask("String_Node_Str",systemObject.getClassNumber());
        ListIterator<ClassObject> classIterator=systemObject.getClassListIterator();
        while (classIterator.hasNext()) {
          if (monitor.isCanceled())           throw new OperationCanceledException();
          ClassObject classObject=classIterator.next();
          ListIterator<MethodObject> methodIterator=classObject.getMethodIterator();
          while (methodIterator.hasNext()) {
            MethodObject methodObject=methodIterator.next();
            if (methodObject.getMethodBody() != null) {
              CFG cfg=new CFG(methodObject);
              PDG pdg=new PDG(cfg,classObject.getIFile());
              pdg.setFieldsAccessedInMethod(classObject.getFieldsAccessedInsideMethod(methodObject));
              for (              VariableDeclaration declaration : pdg.getVariableDeclarationsInMethod()) {
                PlainVariable variable=new PlainVariable(declaration);
                PDGSliceUnionCollection sliceUnionCollection=new PDGSliceUnionCollection(pdg,variable);
                for (                PDGSliceUnion sliceUnion : sliceUnionCollection.getSliceUnions()) {
                  extractedSlices.add(sliceUnion);
                }
              }
            }
          }
          monitor.worked(1);
        }
        monitor.done();
      }
    }
);
  }
 catch (  InvocationTargetException e) {
    e.printStackTrace();
  }
catch (  InterruptedException e) {
    e.printStackTrace();
  }
  ASTSlice[] table=new ASTSlice[extractedSlices.size() + extractedObjectSlices.size()];
  for (int i=0; i < extractedSlices.size(); i++) {
    ASTSlice astSlice=new ASTSlice(extractedSlices.get(i));
    table[i]=astSlice;
  }
  for (int i=0; i < extractedObjectSlices.size(); i++) {
    ASTSlice astSlice=new ASTSlice(extractedObjectSlices.get(i));
    table[extractedSlices.size() + i]=astSlice;
  }
  return table;
}