Program: 180328
Project: 180328
Buggy source:
@Override public Monitor createMonitor(Trajectory trajectory,Formula property){
  if (trajectory.getLastPoint().getTime() < property.getTimeNeeded()) {
    throw new IllegalArgumentException("String_Node_Str" + property.getTimeNeeded() + "String_Node_Str"+ trajectory.getLastPoint().getTime()+ "String_Node_Str");
  }
  Collection<Integer> consideredDimensions=null;
  if (filterDimensions) {
    consideredDimensions=property.getVariableIndexes();
  }
switch (property.getType()) {
case AND:
    return new AndMonitor(property,createMonitor(trajectory,property.getSubformula(0)),createMonitor(trajectory,property.getSubformula(1)),consideredDimensions);
case FUTURE:
  return new FutureMonitor(property,createMonitor(trajectory,property.getSubformula(0)),((FutureFormula)property).getInterval());
case GLOBALLY:
return new GloballyMonitor(property,createMonitor(trajectory,property.getSubformula(0)),((GloballyFormula)property).getInterval());
case NOT:
return new NotMonitor(property,createMonitor(trajectory,property.getSubformula(0)));
case OR:
return new OrMonitor(property,createMonitor(trajectory,property.getSubformula(0)),createMonitor(trajectory,property.getSubformula(1)),consideredDimensions);
case PREDICATE:
return new PredicateMonitor(property,trajectory,(Predicate)property,consideredDimensions);
case UNTIL:
return new UntilMonitor(property,createMonitor(trajectory,property.getSubformula(0)),createMonitor(trajectory,property.getSubformula(1)),((UntilFormula)property).getInterval(),consideredDimensions);
default :
throw new UnsupportedOperationException("String_Node_Str" + property.getType() + "String_Node_Str");
}
}

Fixed version (ground truth):
@Override public Monitor createMonitor(Trajectory trajectory,Formula property){
  if (trajectory.getLastPoint().getTime() < property.getTimeNeeded()) {
    throw new IllegalArgumentException("String_Node_Str" + property.getTimeNeeded() + "String_Node_Str"+ trajectory.getLastPoint().getTime()+ "String_Node_Str");
  }
  Collection<Integer> consideredDimensions=null;
  if (filterDimensions) {
    consideredDimensions=property.getVariableIndexes();
  }
switch (property.getType()) {
case AND:
    return new AndMonitor(property,createMonitor(trajectory,property.getSubformula(0)),createMonitor(trajectory,property.getSubformula(1)),consideredDimensions);
case FUTURE:
  return new FutureMonitor(property,createMonitor(trajectory,property.getSubformula(0)),((FutureFormula)property).getInterval(),consideredDimensions);
case GLOBALLY:
return new GloballyMonitor(property,createMonitor(trajectory,property.getSubformula(0)),((GloballyFormula)property).getInterval(),consideredDimensions);
case NOT:
return new NotMonitor(property,createMonitor(trajectory,property.getSubformula(0)));
case OR:
return new OrMonitor(property,createMonitor(trajectory,property.getSubformula(0)),createMonitor(trajectory,property.getSubformula(1)),consideredDimensions);
case PREDICATE:
return new PredicateMonitor(property,trajectory,(Predicate)property,consideredDimensions);
case UNTIL:
return new UntilMonitor(property,createMonitor(trajectory,property.getSubformula(0)),createMonitor(trajectory,property.getSubformula(1)),((UntilFormula)property).getInterval(),consideredDimensions);
default :
throw new UnsupportedOperationException("String_Node_Str" + property.getType() + "String_Node_Str");
}
}