Program: 117928
Project: 117928
Buggy source:
@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(String.valueOf(value))) {
      paramType.setValue("String_Node_Str");
    }
    if ("String_Node_Str".equals(paramName) && "String_Node_Str".equals(componentName)) {
switch (String.valueOf(value)) {
case "String_Node_Str":
        paramType.setValue("String_Node_Str");
      break;
case "String_Node_Str":
    paramType.setValue("String_Node_Str");
  break;
case "String_Node_Str":
paramType.setValue("String_Node_Str");
break;
}
}
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;
}

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(String.valueOf(value))) {
      paramType.setValue("String_Node_Str");
    }
    if ("String_Node_Str".equals(paramName) && "String_Node_Str".equals(componentName)) {
switch (String.valueOf(value)) {
case "String_Node_Str":
        paramType.setValue("String_Node_Str");
      break;
case "String_Node_Str":
    paramType.setValue("String_Node_Str");
  break;
case "String_Node_Str":
paramType.setValue("String_Node_Str");
break;
}
}
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));
}
}
if ("String_Node_Str".equals(paramName)) {
paramType.setValue(TalendQuoteUtils.addQuotesIfNotExist(String.valueOf(value)));
}
}
return paramType;
}