Program: 109567
Project: 109567
Buggy source:
@Override public void perform(Rewrite rewrite,EvaluationContext context){
  if (!(rewrite instanceof GraphRewrite))   throw new IllegalArgumentException("String_Node_Str");
  GraphRewrite event=(GraphRewrite)rewrite;
  List<Rule> rules=config.getRules();
  final EvaluationContextImpl subContext=new EvaluationContextImpl();
  for (int i=0; i < rules.size(); i++) {
    Rule rule=rules.get(i);
    try {
      subContext.clear();
      subContext.put(ParameterStore.class,context.get(ParameterStore.class));
      ParameterValueStore values=(ParameterValueStore)context.get(ParameterValueStore.class);
      subContext.put(ParameterValueStore.class,values);
      subContext.setState(RewriteState.EVALUATING);
      subContext.put(Rule.class,rule);
      event.selectionPush();
      try {
        if (!rule.evaluate(event,subContext))         continue;
        if (!handleBindings(event,subContext,values))         continue;
        subContext.setState(RewriteState.PERFORMING);
        log.debug("String_Node_Str" + rule + "String_Node_Str");
        List<Operation> preOperations=subContext.getPreOperations();
        for (        Operation preOperation : preOperations) {
          preOperation.perform(event,subContext);
        }
        if (event.getFlow().isHandled())         break;
        rule.perform(event,subContext);
        if (event.getFlow().isHandled())         break;
        List<Operation> postOperations=subContext.getPostOperations();
        for (        Operation postOperation : postOperations) {
          postOperation.perform(event,subContext);
        }
        if (event.getFlow().isHandled())         break;
      }
  finally {
        boolean autocommit=true;
        if (rule instanceof Context) {
          Context ruleContext=(Context)rule;
          if (ruleContext.containsKey(RuleMetadata.AUTO_COMMIT)) {
            autocommit=(Boolean)ruleContext.get(RuleMetadata.AUTO_COMMIT);
          }
        }
        if (autocommit) {
          event.getGraphContext().getGraph().commit();
        }
        event.selectionPop();
      }
    }
 catch (    RuntimeException e) {
      String message="String_Node_Str" + rule;
      if (rule instanceof Context) {
        Object origin=((Context)rule).get(RuleMetadata.ORIGIN);
        if (origin != null)         message+="String_Node_Str" + origin;
        Object location=((Context)rule).get(org.ocpsoft.rewrite.config.RuleMetadata.PROVIDER_LOCATION);
        if (location != null)         message+="String_Node_Str" + location;
      }
      throw new WindupException(message,e);
    }
  }
}

Fixed version (ground truth):
@Override public void perform(Rewrite rewrite,EvaluationContext context){
  if (!(rewrite instanceof GraphRewrite))   throw new IllegalArgumentException("String_Node_Str");
  GraphRewrite event=(GraphRewrite)rewrite;
  List<Rule> rules=config.getRules();
  final EvaluationContextImpl subContext=new EvaluationContextImpl();
  for (int i=0; i < rules.size(); i++) {
    Rule rule=rules.get(i);
    try {
      subContext.clear();
      subContext.put(ParameterStore.class,context.get(ParameterStore.class));
      ParameterValueStore values=(ParameterValueStore)context.get(ParameterValueStore.class);
      subContext.put(ParameterValueStore.class,values);
      subContext.setState(RewriteState.EVALUATING);
      subContext.put(Rule.class,rule);
      event.selectionPush();
      try {
        if (!rule.evaluate(event,subContext))         continue;
        if (!handleBindings(event,subContext,values))         continue;
        subContext.setState(RewriteState.PERFORMING);
        log.debug("String_Node_Str" + rule + "String_Node_Str");
        List<Operation> preOperations=subContext.getPreOperations();
        for (        Operation preOperation : preOperations) {
          preOperation.perform(event,subContext);
        }
        if (event.getFlow().isHandled())         break;
        rule.perform(event,subContext);
        if (event.getFlow().isHandled())         break;
        List<Operation> postOperations=subContext.getPostOperations();
        for (        Operation postOperation : postOperations) {
          postOperation.perform(event,subContext);
        }
        if (event.getFlow().isHandled())         break;
      }
  finally {
        boolean autocommit=true;
        if (rule instanceof Context) {
          Context ruleContext=(Context)rule;
          if (ruleContext.containsKey(RuleMetadata.AUTO_COMMIT)) {
            autocommit=(Boolean)ruleContext.get(RuleMetadata.AUTO_COMMIT);
          }
        }
        if (autocommit) {
          event.getGraphContext().getGraph().getBaseGraph().commit();
        }
        event.selectionPop();
      }
    }
 catch (    RuntimeException e) {
      String message="String_Node_Str" + rule;
      if (rule instanceof Context) {
        Object origin=((Context)rule).get(RuleMetadata.ORIGIN);
        if (origin != null)         message+="String_Node_Str" + origin;
        Object location=((Context)rule).get(org.ocpsoft.rewrite.config.RuleMetadata.PROVIDER_LOCATION);
        if (location != null)         message+="String_Node_Str" + location;
      }
      throw new WindupException(message,e);
    }
  }
}