abstract public Object invoke(int index, Object obj, Object[] args) throws InvocationTargetException;
public Object invoke(String name, Class[] parameterTypes, Object obj, Object[] args) throws InvocationTargetException { return invoke(getIndex(name, parameterTypes), obj, args); }
    abstract public Object invoke(int index, Object obj, Object[] args) throws InvocationTargetException;