* @return
*/
public static <T extends AbstractOperator> T newOperator(Class<T> clazz, Class<?>[] parameterTypes, Object... arguments){
if(parameterTypes != null && arguments != null){
if(!ArrayUtils.isSameLength(parameterTypes, arguments)){//parameterTypes.length != arguments.length){
throw new ASMSupportException();
}
}else if(ArrayUtils.isEmpty(parameterTypes) || ArrayUtils.isEmpty(arguments)){
throw new NullPointerException();
}else if(!ProgramBlock.class.equals(parameterTypes[0])){
throw new ASMSupportException("first argument type must be ProgramBlock");
}
ProgramBlock executeBlock = (ProgramBlock) arguments[0];
executeBlock.tiggerTryCatchPrepare();