Program: 23122
Project: 23122
Buggy source:
private TypeDetails operateTypes(TypeDetails left,Operation operation,TypeDetails right){
switch (operation) {
case Equals:
    return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Equivalent:
  return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case NotEquals:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case NotEquivalent:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case LessThen:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Greater:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case LessOrEqual:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case GreaterOrEqual:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Is:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case As:
return new TypeDetails(CollectionStatus.SINGLETON,right.getTypes());
case Union:
return left.union(right);
case Or:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case And:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Xor:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Implies:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Times:
TypeDetails result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case DivideBy:
result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case Concatenate:
result=new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Plus:
result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case Minus:
result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case Div:
case Mod:
result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case In:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Contains:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
default :
return null;
}
}

Fixed version (ground truth):
private TypeDetails operateTypes(TypeDetails left,Operation operation,TypeDetails right){
switch (operation) {
case Equals:
    return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Equivalent:
  return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case NotEquals:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case NotEquivalent:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case LessThen:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Greater:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case LessOrEqual:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case GreaterOrEqual:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Is:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case As:
return new TypeDetails(CollectionStatus.SINGLETON,right.getTypes());
case Union:
return left.union(right);
case Or:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case And:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Xor:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Implies:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Times:
TypeDetails result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case DivideBy:
result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case Concatenate:
result=new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
return result;
case Plus:
result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case Minus:
result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case Div:
case Mod:
result=new TypeDetails(CollectionStatus.SINGLETON);
if (left.hasType(worker,"String_Node_Str") && right.hasType(worker,"String_Node_Str")) result.addType("String_Node_Str");
 else if (left.hasType(worker,"String_Node_Str","String_Node_Str") && right.hasType(worker,"String_Node_Str","String_Node_Str")) result.addType("String_Node_Str");
return result;
case In:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
case Contains:
return new TypeDetails(CollectionStatus.SINGLETON,"String_Node_Str");
default :
return null;
}
}