Program: 118550
Project: 118550
Buggy source:
@Override public List<INodeConnector> createConnectors(INode parentNode){
  List<INodeConnector> listConnector=new ArrayList<>();
  for (  Trigger trigger : componentDefinition.getTriggers()) {
    if (ComponentsUtils.isAValidTrigger(trigger,getName())) {
      INodeConnector connector=ComponentsUtils.generateNodeConnectorFromTrigger(trigger,parentNode);
      if (connector != null) {
        listConnector.add(connector);
      }
    }
  }
  boolean isOutputComponent=componentDefinition instanceof OutputComponentDefinition;
  INodeConnector connector=addStandardType(listConnector,EConnectionType.FLOW_MAIN,parentNode);
  if (isOutputComponent) {
    connector.setMaxLinkInput(1);
  }
 else {
    connector.setMaxLinkInput(0);
  }
  connector.setMaxLinkOutput(0);
  addGenericType(listConnector,EConnectionType.FLOW_MAIN,Connector.MAIN_NAME,parentNode);
  addGenericType(listConnector,EConnectionType.REJECT,Connector.REJECT_NAME,parentNode);
  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);
  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 (!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);
      if (currentType == EConnectionType.FLOW_MAIN) {
        nodeConnector.addConnectionProperty(EConnectionType.FLOW_REF,EConnectionType.FLOW_REF.getRGB(),EConnectionType.FLOW_REF.getDefaultLineStyle());
        nodeConnector.addConnectionProperty(EConnectionType.FLOW_MERGE,EConnectionType.FLOW_MERGE.getRGB(),EConnectionType.FLOW_MERGE.getDefaultLineStyle());
      }
      listConnector.add(nodeConnector);
    }
  }
  return listConnector;
}

Fixed version (ground truth):
@Override public List<INodeConnector> createConnectors(INode parentNode){
  List<INodeConnector> listConnector=new ArrayList<>();
  for (  Trigger trigger : componentDefinition.getTriggers()) {
    if (ComponentsUtils.isAValidTrigger(trigger,getName())) {
      INodeConnector connector=ComponentsUtils.generateNodeConnectorFromTrigger(trigger,parentNode);
      if (connector != null) {
        listConnector.add(connector);
      }
    }
  }
  boolean isOutputComponent=componentDefinition instanceof OutputComponentDefinition || componentDefinition instanceof VirtualComponentDefinition;
  INodeConnector connector=addStandardType(listConnector,EConnectionType.FLOW_MAIN,parentNode);
  if (isOutputComponent) {
    connector.setMaxLinkInput(1);
  }
 else {
    connector.setMaxLinkInput(0);
  }
  connector.setMaxLinkOutput(0);
  addGenericType(listConnector,EConnectionType.FLOW_MAIN,Connector.MAIN_NAME,parentNode);
  addGenericType(listConnector,EConnectionType.REJECT,Connector.REJECT_NAME,parentNode);
  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);
  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 (!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);
      if (currentType == EConnectionType.FLOW_MAIN) {
        nodeConnector.addConnectionProperty(EConnectionType.FLOW_REF,EConnectionType.FLOW_REF.getRGB(),EConnectionType.FLOW_REF.getDefaultLineStyle());
        nodeConnector.addConnectionProperty(EConnectionType.FLOW_MERGE,EConnectionType.FLOW_MERGE.getRGB(),EConnectionType.FLOW_MERGE.getDefaultLineStyle());
      }
      listConnector.add(nodeConnector);
    }
  }
  return listConnector;
}