Program: 28928
Project: 28928
Buggy source:
@Override public void init(ExpressionExecutor[] attributeExpressionExecutors,ConfigReader configReader,ExecutionPlanContext executionPlanContext){
  if (attributeExpressionExecutors.length != 2) {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str");
  }
  inputType=attributeExpressionExecutors[0].getReturnType();
  if (inputType == Attribute.Type.OBJECT) {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ attributeExpressionExecutors[0].getReturnType());
  }
  if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ attributeExpressionExecutors[0].getReturnType());
  }
  if (!(attributeExpressionExecutors[1] instanceof ConstantExpressionExecutor)) {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str");
  }
  String type=(String)attributeExpressionExecutors[1].execute(null);
  if (Attribute.Type.STRING.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.STRING;
  }
 else   if (Attribute.Type.BOOL.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.BOOL;
  }
 else   if (Attribute.Type.DOUBLE.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.DOUBLE;
  }
 else   if (Attribute.Type.FLOAT.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.FLOAT;
  }
 else   if (Attribute.Type.INT.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.INT;
  }
 else   if (Attribute.Type.LONG.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.LONG;
  }
 else {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str" + type + "String_Node_Str");
  }
}

Fixed version (ground truth):
@Override public void init(ExpressionExecutor[] attributeExpressionExecutors,ConfigReader configReader,ExecutionPlanContext executionPlanContext){
  if (attributeExpressionExecutors.length != 2) {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str");
  }
  inputType=attributeExpressionExecutors[0].getReturnType();
  if (inputType == Attribute.Type.OBJECT) {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ attributeExpressionExecutors[0].getReturnType());
  }
  if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ attributeExpressionExecutors[0].getReturnType());
  }
  if (!(attributeExpressionExecutors[1] instanceof ConstantExpressionExecutor)) {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str" + "String_Node_Str");
  }
  String type=(String)attributeExpressionExecutors[1].execute(null);
  if (Attribute.Type.STRING.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.STRING;
  }
 else   if (Attribute.Type.BOOL.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.BOOL;
  }
 else   if (Attribute.Type.DOUBLE.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.DOUBLE;
  }
 else   if (Attribute.Type.FLOAT.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.FLOAT;
  }
 else   if (Attribute.Type.INT.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.INT;
  }
 else   if (Attribute.Type.LONG.toString().equalsIgnoreCase(type)) {
    returnType=Attribute.Type.LONG;
  }
 else {
    throw new ExecutionPlanValidationException("String_Node_Str" + "String_Node_Str" + type + "String_Node_Str");
  }
}