Program: 20564
Project: 20564
Buggy source:
public Object invoke(Object iContent,Object... params) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
  try {
    Roma.context().create();
    List<SchemaActionListener> listeners=Controller.getInstance().getListeners(SchemaActionListener.class);
    boolean result=true;
    for (    SchemaActionListener listener : listeners) {
      result=listener.onBeforeAction(iContent,this);
      if (!result) {
        log.debug("String_Node_Str" + listener + "String_Node_Str");
        return null;
      }
    }
    Object value=null;
    try {
      Iterator<SchemaParameter> param=getParameterIterator();
      Object newValues[]=new Object[params.length];
      int i=0;
      while (param.hasNext()) {
        SchemaParameter par=param.next();
        newValues[i]=convertValue(params[i],par.getType());
        i++;
      }
      value=invokeFinal(iContent,newValues);
      for (      SchemaActionListener listener : listeners) {
        try {
          listener.onAfterAction(iContent,this,value);
        }
 catch (        Throwable t) {
          log.error("String_Node_Str" + listener + "String_Node_Str",t);
        }
      }
      return value;
    }
 catch (    IllegalArgumentException e) {
      fireActionException(listeners,iContent,e);
      throw e;
    }
catch (    IllegalAccessException e) {
      fireActionException(listeners,iContent,e);
      throw e;
    }
catch (    InvocationTargetException e) {
      fireActionException(listeners,iContent,e);
      throw e;
    }
  }
  finally {
    Roma.context().destroy();
  }
}

Fixed version (ground truth):
public Object invoke(Object iContent,Object... params) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
  try {
    Roma.context().create();
    List<SchemaActionListener> listeners=Controller.getInstance().getListeners(SchemaActionListener.class);
    boolean result=true;
    for (    SchemaActionListener listener : listeners) {
      result=listener.onBeforeAction(iContent,this);
      if (!result) {
        log.debug("String_Node_Str" + listener + "String_Node_Str");
        return null;
      }
    }
    Object value=null;
    try {
      if (params != null) {
        Iterator<SchemaParameter> param=getParameterIterator();
        Object newValues[]=new Object[params.length];
        int i=0;
        while (param.hasNext()) {
          SchemaParameter par=param.next();
          newValues[i]=convertValue(params[i],par.getType());
          i++;
        }
        value=invokeFinal(iContent,newValues);
      }
 else {
        value=invokeFinal(iContent,params);
      }
      for (      SchemaActionListener listener : listeners) {
        try {
          listener.onAfterAction(iContent,this,value);
        }
 catch (        Throwable t) {
          log.error("String_Node_Str" + listener + "String_Node_Str",t);
        }
      }
      return value;
    }
 catch (    IllegalArgumentException e) {
      fireActionException(listeners,iContent,e);
      throw e;
    }
catch (    IllegalAccessException e) {
      fireActionException(listeners,iContent,e);
      throw e;
    }
catch (    InvocationTargetException e) {
      fireActionException(listeners,iContent,e);
      throw e;
    }
  }
  finally {
    Roma.context().destroy();
  }
}