Program: 133519
Project: 133519
Buggy source:
@Override public ITabDescriptor[] getTabDescriptors(IWorkbenchPart part,ISelection selection){
  if (selection != null && selection instanceof IStructuredSelection) {
    Object[] selectedObjects=((IStructuredSelection)selection).toArray();
    if (selectedObjects.length >= 4) {
      Object first=selectedObjects[0];
      if (first instanceof DataComponent) {
        component=(DataComponent)first;
      }
      Object second=selectedObjects[1];
      if (second instanceof DataComponent) {
        output=(DataComponent)second;
      }
      Object third=selectedObjects[2];
      if (third instanceof ListComponent) {
        listComp=(ListComponent)third;
      }
      Object fourth=selectedObjects[3];
      if (fourth instanceof MaterialSelection) {
        tableSelection=(MaterialSelection)fourth;
      }
    }
    Object obj=((IStructuredSelection)selection).getFirstElement();
    if (obj instanceof DataComponent) {
      component=(DataComponent)obj;
    }
    if (descriptors[0] == null) {
      AbstractTabDescriptor inputTabDescriptor=new AbstractTabDescriptor(){
        @Override public String getCategory(){
          return "String_Node_Str";
        }
        @Override public String getId(){
          return "String_Node_Str";
        }
        @Override public String getLabel(){
          return "String_Node_Str";
        }
      }
;
      descriptors[0]=inputTabDescriptor;
    }
    if (descriptors[1] == null) {
      AbstractTabDescriptor editCellTab=new AbstractTabDescriptor(){
        @Override public String getCategory(){
          return "String_Node_Str";
        }
        @Override public String getId(){
          return "String_Node_Str";
        }
        @Override public String getLabel(){
          return "String_Node_Str";
        }
      }
;
      descriptors[1]=editCellTab;
    }
    if (descriptors[2] == null) {
      AbstractTabDescriptor outputTab=new AbstractTabDescriptor(){
        @Override public String getCategory(){
          return "String_Node_Str";
        }
        @Override public String getId(){
          return "String_Node_Str";
        }
        @Override public String getLabel(){
          return "String_Node_Str";
        }
      }
;
      descriptors[2]=outputTab;
    }
    ITabDescriptor tab=descriptors[0];
    AbstractSectionDescriptor generalSection=new AbstractSectionDescriptor(){
      @Override public String getId(){
        return "String_Node_Str";
      }
      @Override public ISection getSectionClass(){
        ReflectivityDataPropertySection section;
        section=new ReflectivityDataPropertySection();
        section.setDataComponent(component);
        return section;
      }
      @Override public String getTargetTab(){
        return tab.getId();
      }
      @Override public IFilter getFilter(){
        return filter;
      }
    }
;
    List<AbstractSectionDescriptor> sectionDescriptors=new ArrayList<AbstractSectionDescriptor>();
    sectionDescriptors.add(generalSection);
    ((AbstractTabDescriptor)tab).setSectionDescriptors(sectionDescriptors);
    ITabDescriptor tab2=descriptors[1];
    AbstractSectionDescriptor cellSection=new AbstractSectionDescriptor(){
      @Override public String getId(){
        return "String_Node_Str";
      }
      @Override public ISection getSectionClass(){
        ReflectivityCellEditorSection section;
        section=new ReflectivityCellEditorSection();
        section.setMaterialSelection(tableSelection);
        section.setListComponent(listComp);
        return section;
      }
      @Override public String getTargetTab(){
        return tab2.getId();
      }
      @Override public IFilter getFilter(){
        return filter;
      }
    }
;
    sectionDescriptors=new ArrayList<AbstractSectionDescriptor>();
    sectionDescriptors.add(cellSection);
    ((AbstractTabDescriptor)tab2).setSectionDescriptors(sectionDescriptors);
    ITabDescriptor tab3=descriptors[2];
    AbstractSectionDescriptor outputSection=new AbstractSectionDescriptor(){
      @Override public String getId(){
        return "String_Node_Str";
      }
      @Override public ISection getSectionClass(){
        ReflectivityDataPropertySection section;
        section=new ReflectivityDataPropertySection();
        section.setDataComponent(output);
        return section;
      }
      @Override public String getTargetTab(){
        return tab3.getId();
      }
      @Override public IFilter getFilter(){
        return filter;
      }
    }
;
    sectionDescriptors=new ArrayList<AbstractSectionDescriptor>();
    sectionDescriptors.add(outputSection);
    ((AbstractTabDescriptor)tab3).setSectionDescriptors(sectionDescriptors);
  }
  return descriptors;
}

Fixed version (ground truth):
@Override public ITabDescriptor[] getTabDescriptors(IWorkbenchPart part,ISelection selection){
  if (selection != null && selection instanceof IStructuredSelection) {
    Object[] selectedObjects=((IStructuredSelection)selection).toArray();
    if (selectedObjects.length >= 4) {
      Object first=selectedObjects[0];
      if (first instanceof DataComponent) {
        component=(DataComponent)first;
      }
      Object second=selectedObjects[1];
      if (second instanceof DataComponent) {
        output=(DataComponent)second;
      }
      Object third=selectedObjects[2];
      if (third instanceof ListComponent) {
        listComp=(ListComponent)third;
      }
      Object fourth=selectedObjects[3];
      if (fourth instanceof MaterialSelection) {
        tableSelection=(MaterialSelection)fourth;
      }
    }
    Object obj=((IStructuredSelection)selection).getFirstElement();
    if (obj instanceof DataComponent) {
      component=(DataComponent)obj;
    }
    Object obj2=((IStructuredSelection)selection).toList().get(1);
    if (obj2 instanceof DataComponent) {
      output=(DataComponent)obj2;
    }
    if (descriptors[0] == null) {
      AbstractTabDescriptor inputTabDescriptor=new AbstractTabDescriptor(){
        @Override public String getCategory(){
          return "String_Node_Str";
        }
        @Override public String getId(){
          return "String_Node_Str";
        }
        @Override public String getLabel(){
          return "String_Node_Str";
        }
      }
;
      descriptors[0]=inputTabDescriptor;
    }
    if (descriptors[1] == null) {
      AbstractTabDescriptor editCellTab=new AbstractTabDescriptor(){
        @Override public String getCategory(){
          return "String_Node_Str";
        }
        @Override public String getId(){
          return "String_Node_Str";
        }
        @Override public String getLabel(){
          return "String_Node_Str";
        }
      }
;
      descriptors[1]=editCellTab;
    }
    if (descriptors[2] == null) {
      AbstractTabDescriptor outputTab=new AbstractTabDescriptor(){
        @Override public String getCategory(){
          return "String_Node_Str";
        }
        @Override public String getId(){
          return "String_Node_Str";
        }
        @Override public String getLabel(){
          return "String_Node_Str";
        }
      }
;
      descriptors[2]=outputTab;
    }
    ITabDescriptor tab=descriptors[0];
    AbstractSectionDescriptor generalSection=new AbstractSectionDescriptor(){
      @Override public String getId(){
        return "String_Node_Str";
      }
      @Override public ISection getSectionClass(){
        ReflectivityDataPropertySection section;
        section=new ReflectivityDataPropertySection();
        section.setDataComponent(component);
        return section;
      }
      @Override public String getTargetTab(){
        return tab.getId();
      }
      @Override public IFilter getFilter(){
        return filter;
      }
    }
;
    List<AbstractSectionDescriptor> sectionDescriptors=new ArrayList<AbstractSectionDescriptor>();
    sectionDescriptors.add(generalSection);
    ((AbstractTabDescriptor)tab).setSectionDescriptors(sectionDescriptors);
    ITabDescriptor tab2=descriptors[1];
    AbstractSectionDescriptor cellSection=new AbstractSectionDescriptor(){
      @Override public String getId(){
        return "String_Node_Str";
      }
      @Override public ISection getSectionClass(){
        ReflectivityCellEditorSection section;
        section=new ReflectivityCellEditorSection();
        section.setMaterialSelection(tableSelection);
        section.setListComponent(listComp);
        return section;
      }
      @Override public String getTargetTab(){
        return tab2.getId();
      }
      @Override public IFilter getFilter(){
        return filter;
      }
    }
;
    sectionDescriptors=new ArrayList<AbstractSectionDescriptor>();
    sectionDescriptors.add(cellSection);
    ((AbstractTabDescriptor)tab2).setSectionDescriptors(sectionDescriptors);
    ITabDescriptor tab3=descriptors[2];
    AbstractSectionDescriptor outputSection=new AbstractSectionDescriptor(){
      @Override public String getId(){
        return "String_Node_Str";
      }
      @Override public ISection getSectionClass(){
        ReflectivityDataPropertySection section;
        section=new ReflectivityDataPropertySection();
        section.setDataComponent(output);
        return section;
      }
      @Override public String getTargetTab(){
        return tab3.getId();
      }
      @Override public IFilter getFilter(){
        return filter;
      }
    }
;
    sectionDescriptors=new ArrayList<AbstractSectionDescriptor>();
    sectionDescriptors.add(outputSection);
    ((AbstractTabDescriptor)tab3).setSectionDescriptors(sectionDescriptors);
  }
  return descriptors;
}