Program: 117980
Project: 117980
Buggy source:
@Override protected ElementParameterType getParameterType(NodeType node,String paramName){
  if (node != null && !hasAPI) {
    ElementParameterType apiParamType=ParameterUtilTool.findParameterType(node,"String_Node_Str");
    if (apiParamType == null) {
      ParameterUtilTool.addParameterType(node,"String_Node_Str","String_Node_Str","String_Node_Str");
    }
    hasAPI=true;
  }
  String componentName=node.getComponentName();
  ElementParameterType paramType=ParameterUtilTool.findParameterType(node,paramName);
  if (node != null && paramType != null) {
    Object value=ParameterUtilTool.convertParameterValue(paramType);
    if ("String_Node_Str".equals(paramName)) {
      if ("String_Node_Str".equals(String.valueOf(value))) {
        paramType.setValue("String_Node_Str");
      }
 else {
        paramType.setValue("String_Node_Str");
      }
    }
    if ("String_Node_Str".equals(paramName) && "String_Node_Str".equals(componentName)) {
      ElementParameterType operation=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      ElementParameterType leadSelector=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      ElementParameterType batchSize=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      if (operation != null && leadSelector != null) {
        Object operationValue=ParameterUtilTool.convertParameterValue(operation);
        Object leadSelectorValue=ParameterUtilTool.convertParameterValue(leadSelector);
        if (!("String_Node_Str".equals(String.valueOf(operationValue)) && "String_Node_Str".equals(String.valueOf(leadSelectorValue))) && batchSize != null) {
          Object batchSizeValue=ParameterUtilTool.convertParameterValue(batchSize);
          paramType.setValue(String.valueOf(batchSizeValue));
        }
      }
    }
    if ("String_Node_Str".equals(paramName) && "String_Node_Str".equals(componentName)) {
      ElementParameterType operation=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      ElementParameterType leadSelector=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      ElementParameterType maxReturn=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      if (operation != null && leadSelector != null) {
        Object operationValue=ParameterUtilTool.convertParameterValue(operation);
        Object leadSelectorValue=ParameterUtilTool.convertParameterValue(leadSelector);
        if ("String_Node_Str".equals(String.valueOf(operationValue)) && "String_Node_Str".equals(String.valueOf(leadSelectorValue)) && maxReturn != null) {
          Object maxReturnValue=ParameterUtilTool.convertParameterValue(maxReturn);
          paramType.setValue(String.valueOf(maxReturnValue));
        }
      }
    }
  }
  return paramType;
}

Fixed version (ground truth):
@Override protected ElementParameterType getParameterType(NodeType node,String paramName){
  ElementParameterType paramType=ParameterUtilTool.findParameterType(node,paramName);
  if ("String_Node_Str".equals(paramName) && paramType == null) {
    ParameterUtilTool.addParameterType(node,"String_Node_Str","String_Node_Str","String_Node_Str");
    paramType=ParameterUtilTool.findParameterType(node,paramName);
  }
  if (node != null && paramType != null) {
    String componentName=node.getComponentName();
    Object value=ParameterUtilTool.convertParameterValue(paramType);
    if ("String_Node_Str".equals(paramName)) {
      if ("String_Node_Str".equals(String.valueOf(value))) {
        paramType.setValue("String_Node_Str");
      }
 else {
        paramType.setValue("String_Node_Str");
      }
    }
    if ("String_Node_Str".equals(paramName) && "String_Node_Str".equals(componentName)) {
      ElementParameterType operation=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      ElementParameterType leadSelector=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      ElementParameterType batchSize=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      ElementParameterType maxReturn=ParameterUtilTool.findParameterType(node,"String_Node_Str");
      Object batchSizeValue=ParameterUtilTool.convertParameterValue(batchSize);
      if (operation != null && leadSelector != null) {
        Object operationValue=ParameterUtilTool.convertParameterValue(operation);
        Object leadSelectorValue=ParameterUtilTool.convertParameterValue(leadSelector);
        Object maxReturnValue=ParameterUtilTool.convertParameterValue(maxReturn);
        if ("String_Node_Str".equals(String.valueOf(operationValue)) && "String_Node_Str".equals(String.valueOf(leadSelectorValue)) && maxReturnValue != null) {
          paramType.setValue(String.valueOf(maxReturnValue));
        }
 else {
          paramType.setValue(String.valueOf(batchSizeValue));
        }
      }
 else {
        paramType.setValue(String.valueOf(batchSizeValue));
      }
    }
  }
  return paramType;
}