Program: 117907
Project: 117907
Buggy source:
@Override public List<INodeConnector> createConnectors(INode parentNode){
  List<INodeConnector> listConnector=new ArrayList<>();
  ComponentProperties componentProperties=ComponentsUtils.getComponentProperties(getName());
  Set<? extends Connector> inputConnectors=componentProperties.getPossibleConnectors(false);
  if (inputConnectors.isEmpty()) {
    INodeConnector connector=null;
    connector=addStandardType(listConnector,EConnectionType.FLOW_MAIN,parentNode);
    connector.setMaxLinkInput(0);
    connector.setMaxLinkOutput(0);
  }
 else {
    for (    Connector connector : inputConnectors) {
      addGenericType(listConnector,EConnectionType.FLOW_MAIN,connector.getName(),parentNode,componentProperties,false);
    }
  }
  Set<? extends Connector> outputConnectors=componentProperties.getPossibleConnectors(true);
  List<? extends Connector> sortedOutputConnectors=new ArrayList<>(outputConnectors);
  sortedOutputConnectors.sort(new Comparator<Connector>(){
    @Override public int compare(    Connector o1,    Connector o2){
      if (Connector.MAIN_NAME.equals(o1.getName())) {
        return -1;
      }
      if (Connector.MAIN_NAME.equals(o2.getName())) {
        return 1;
      }
      return 0;
    }
  }
);
  for (  Connector connector : sortedOutputConnectors) {
    EConnectionType type=EConnectionType.FLOW_MAIN;
    if (Connector.REJECT_NAME.equals(connector.getName())) {
      type=EConnectionType.REJECT;
    }
    addGenericType(listConnector,type,connector.getName(),parentNode,componentProperties,true);
  }
  addStandardType(listConnector,EConnectionType.RUN_IF,parentNode);
  addStandardType(listConnector,EConnectionType.ON_COMPONENT_OK,parentNode);
  addStandardType(listConnector,EConnectionType.ON_COMPONENT_ERROR,parentNode);
  addStandardType(listConnector,EConnectionType.ON_SUBJOB_OK,parentNode);
  addStandardType(listConnector,EConnectionType.ON_SUBJOB_ERROR,parentNode);
  Set<ConnectorTopology> topologies=componentDefinition.getSupportedConnectorTopologies();
  createIterateConnectors(topologies,listConnector,parentNode);
  for (int i=0; i < EConnectionType.values().length; i++) {
    EConnectionType currentType=EConnectionType.values()[i];
    if ((currentType == EConnectionType.FLOW_REF) || (currentType == EConnectionType.FLOW_MERGE)) {
      continue;
    }
    boolean exists=false;
    for (    INodeConnector curNodeConn : listConnector) {
      if (curNodeConn.getDefaultConnectionType().equals(currentType)) {
        exists=true;
        if (currentType == EConnectionType.FLOW_MAIN) {
          curNodeConn.addConnectionProperty(EConnectionType.FLOW_REF,EConnectionType.FLOW_REF.getRGB(),EConnectionType.FLOW_REF.getDefaultLineStyle());
          curNodeConn.addConnectionProperty(EConnectionType.FLOW_MERGE,EConnectionType.FLOW_MERGE.getRGB(),EConnectionType.FLOW_MERGE.getDefaultLineStyle());
        }
      }
    }
    if (!exists) {
      NodeConnector nodeConnector=new NodeConnector(parentNode);
      nodeConnector.setDefaultConnectionType(currentType);
      nodeConnector.setName(currentType.getName());
      nodeConnector.setBaseSchema(currentType.getName());
      nodeConnector.addConnectionProperty(currentType,currentType.getRGB(),currentType.getDefaultLineStyle());
      nodeConnector.setLinkName(currentType.getDefaultLinkName());
      nodeConnector.setMenuName(currentType.getDefaultMenuName());
      if ((currentType == EConnectionType.PARALLELIZE) || (currentType == EConnectionType.SYNCHRONIZE)) {
        nodeConnector.setMaxLinkInput(1);
      }
 else {
        nodeConnector.setMaxLinkInput(0);
      }
      nodeConnector.setMaxLinkOutput(0);
      nodeConnector.setMinLinkInput(0);
      nodeConnector.setMinLinkOutput(0);
      listConnector.add(nodeConnector);
    }
  }
  return listConnector;
}

Fixed version (ground truth):
@Override public List<INodeConnector> createConnectors(INode parentNode){
  List<INodeConnector> listConnector=new ArrayList<>();
  ComponentProperties componentProperties=parentNode.getComponentProperties();
  if (componentProperties == null) {
    parentNode.setComponentProperties(ComponentsUtils.getComponentProperties(getName()));
    componentProperties=parentNode.getComponentProperties();
  }
  Set<? extends Connector> inputConnectors=componentProperties.getPossibleConnectors(false);
  if (inputConnectors.isEmpty()) {
    INodeConnector connector=null;
    connector=addStandardType(listConnector,EConnectionType.FLOW_MAIN,parentNode);
    connector.setMaxLinkInput(0);
    connector.setMaxLinkOutput(0);
  }
 else {
    for (    Connector connector : inputConnectors) {
      addGenericType(listConnector,EConnectionType.FLOW_MAIN,connector.getName(),parentNode,componentProperties,false);
    }
  }
  Set<? extends Connector> outputConnectors=componentProperties.getPossibleConnectors(true);
  List<? extends Connector> sortedOutputConnectors=new ArrayList<>(outputConnectors);
  sortedOutputConnectors.sort(new Comparator<Connector>(){
    @Override public int compare(    Connector o1,    Connector o2){
      if (Connector.MAIN_NAME.equals(o1.getName())) {
        return -1;
      }
      if (Connector.MAIN_NAME.equals(o2.getName())) {
        return 1;
      }
      return 0;
    }
  }
);
  for (  Connector connector : sortedOutputConnectors) {
    EConnectionType type=EConnectionType.FLOW_MAIN;
    if (Connector.REJECT_NAME.equals(connector.getName())) {
      type=EConnectionType.REJECT;
    }
    addGenericType(listConnector,type,connector.getName(),parentNode,componentProperties,true);
  }
  addStandardType(listConnector,EConnectionType.RUN_IF,parentNode);
  addStandardType(listConnector,EConnectionType.ON_COMPONENT_OK,parentNode);
  addStandardType(listConnector,EConnectionType.ON_COMPONENT_ERROR,parentNode);
  addStandardType(listConnector,EConnectionType.ON_SUBJOB_OK,parentNode);
  addStandardType(listConnector,EConnectionType.ON_SUBJOB_ERROR,parentNode);
  Set<ConnectorTopology> topologies=componentDefinition.getSupportedConnectorTopologies();
  createIterateConnectors(topologies,listConnector,parentNode);
  for (int i=0; i < EConnectionType.values().length; i++) {
    EConnectionType currentType=EConnectionType.values()[i];
    if ((currentType == EConnectionType.FLOW_REF) || (currentType == EConnectionType.FLOW_MERGE)) {
      continue;
    }
    boolean exists=false;
    for (    INodeConnector curNodeConn : listConnector) {
      if (curNodeConn.getDefaultConnectionType().equals(currentType)) {
        exists=true;
        if (currentType == EConnectionType.FLOW_MAIN) {
          curNodeConn.addConnectionProperty(EConnectionType.FLOW_REF,EConnectionType.FLOW_REF.getRGB(),EConnectionType.FLOW_REF.getDefaultLineStyle());
          curNodeConn.addConnectionProperty(EConnectionType.FLOW_MERGE,EConnectionType.FLOW_MERGE.getRGB(),EConnectionType.FLOW_MERGE.getDefaultLineStyle());
        }
      }
    }
    if (!exists) {
      NodeConnector nodeConnector=new NodeConnector(parentNode);
      nodeConnector.setDefaultConnectionType(currentType);
      nodeConnector.setName(currentType.getName());
      nodeConnector.setBaseSchema(currentType.getName());
      nodeConnector.addConnectionProperty(currentType,currentType.getRGB(),currentType.getDefaultLineStyle());
      nodeConnector.setLinkName(currentType.getDefaultLinkName());
      nodeConnector.setMenuName(currentType.getDefaultMenuName());
      if ((currentType == EConnectionType.PARALLELIZE) || (currentType == EConnectionType.SYNCHRONIZE)) {
        nodeConnector.setMaxLinkInput(1);
      }
 else {
        nodeConnector.setMaxLinkInput(0);
      }
      nodeConnector.setMaxLinkOutput(0);
      nodeConnector.setMinLinkInput(0);
      nodeConnector.setMinLinkOutput(0);
      listConnector.add(nodeConnector);
    }
  }
  return listConnector;
}