Program: 153347
Project: 153347
Buggy source:
@Override public void apply(ExecEnv execEnv,Map<String,Object> options){
  Operation convertToOperation=new Operation(2,"String_Node_Str"){
    @Override public Object exec(    AbstractStackFrame frame){
      Object[] localVars=frame.getLocalVars();
      if (localVars[1] instanceof String) {
        String var1=(String)localVars[1];
        if (localVars[0] instanceof String) {
          String var2=(String)localVars[0];
          Object ret=DatatypeConverter.convert(var1,var2);
          if (ret == null) {
            return DatatypeConverter.convert(var1,"String_Node_Str");
          }
          return ret;
        }
      }
      return null;
    }
  }
;
  execEnv.registerOperation(Object.class,convertToOperation);
  Operation asStringOperation=new Operation(2,"String_Node_Str"){
    @Override public Object exec(    AbstractStackFrame frame){
      Object[] localVars=frame.getLocalVars();
      Object object=localVars[0];
      if (localVars[1] instanceof String) {
        return DatatypeConverter.toString((String)localVars[1],object);
      }
      return localVars[1].toString();
    }
  }
;
  execEnv.registerOperation(Object.class,asStringOperation);
  Operation getEcoreIdOperation=new Operation(1,"String_Node_Str"){
    @Override public String exec(    AbstractStackFrame frame){
      Object[] localVars=frame.getLocalVars();
      if (localVars[0] instanceof EObject) {
        String generatedId=EcoreUtil.getIdentification((EObject)localVars[0]);
        String cut=generatedId.substring(generatedId.indexOf("String_Node_Str"),generatedId.length() - 1);
        if (cut.startsWith("String_Node_Str"))         cut=cut.substring(3);
        return cut;
      }
      throw new IllegalArgumentException("String_Node_Str" + localVars[0]);
    }
  }
;
  execEnv.registerOperation(Object.class,getEcoreIdOperation);
  Operation split_annotation=new Operation(1,"String_Node_Str"){
    @Override public List<String> exec(    AbstractStackFrame frame){
      Object[] localVars=frame.getLocalVars();
      if (localVars[0] instanceof String) {
        return split_annotation((String)localVars[0]);
      }
      throw new IllegalArgumentException("String_Node_Str" + localVars[0]);
    }
    private List<String> split_annotation(    String object){
      List<String> list=new ArrayList<String>();
      boolean in=false;
      String tmp="String_Node_Str";
      for (int i=0; i < object.length(); i++) {
        char c=object.charAt(i);
        if (c == ',' && !in) {
          list.add(tmp);
          tmp="String_Node_Str";
        }
 else         if (c == '(') {
          tmp=tmp + c;
          in=true;
        }
 else         if (c == ')') {
          tmp=tmp + c;
          in=false;
        }
 else {
          tmp=tmp + c;
        }
      }
      list.add(tmp);
      return list;
    }
  }
;
  execEnv.registerOperation(Object.class,split_annotation);
}

Fixed version (ground truth):
@Override public void apply(ExecEnv execEnv,Map<String,Object> options){
  Operation convertToOperation=new Operation(2,"String_Node_Str"){
    @Override public Object exec(    AbstractStackFrame frame){
      Object[] localVars=frame.getLocalVars();
      if (localVars[1] instanceof String) {
        String var1=(String)localVars[1];
        if (localVars[0] instanceof String) {
          String var2=(String)localVars[0];
          Object ret=DatatypeConverter.convert(var1,var2);
          if (ret == null) {
            return DatatypeConverter.convert(var1,"String_Node_Str");
          }
          return ret;
        }
      }
      return null;
    }
  }
;
  execEnv.registerOperation(Object.class,convertToOperation);
  Operation asStringOperation=new Operation(2,"String_Node_Str"){
    @Override public Object exec(    AbstractStackFrame frame){
      Object[] localVars=frame.getLocalVars();
      Object object=localVars[0];
      if (localVars[1] instanceof String) {
        return DatatypeConverter.toString((String)localVars[1],object);
      }
      return localVars[1].toString();
    }
  }
;
  execEnv.registerOperation(Object.class,asStringOperation);
  Operation getEcoreIdOperation=new Operation(1,"String_Node_Str"){
    @Override public String exec(    AbstractStackFrame frame){
      Object[] localVars=frame.getLocalVars();
      if (localVars[0] instanceof EObject) {
        return EcoreUtil.generateUUID();
      }
      throw new IllegalArgumentException("String_Node_Str" + localVars[0]);
    }
  }
;
  execEnv.registerOperation(Object.class,getEcoreIdOperation);
  Operation split_annotation=new Operation(1,"String_Node_Str"){
    @Override public List<String> exec(    AbstractStackFrame frame){
      Object[] localVars=frame.getLocalVars();
      if (localVars[0] instanceof String) {
        return split_annotation((String)localVars[0]);
      }
      throw new IllegalArgumentException("String_Node_Str" + localVars[0]);
    }
    private List<String> split_annotation(    String object){
      List<String> list=new ArrayList<String>();
      boolean in=false;
      String tmp="String_Node_Str";
      for (int i=0; i < object.length(); i++) {
        char c=object.charAt(i);
        if (c == ',' && !in) {
          list.add(tmp);
          tmp="String_Node_Str";
        }
 else         if (c == '(') {
          tmp=tmp + c;
          in=true;
        }
 else         if (c == ')') {
          tmp=tmp + c;
          in=false;
        }
 else {
          tmp=tmp + c;
        }
      }
      list.add(tmp);
      return list;
    }
  }
;
  execEnv.registerOperation(Object.class,split_annotation);
}