@Override
    public T invoke(Object... parameters) {
        if (!this.isValid())
            return null;
        boolean needsInstance = this.isStatic ? false : (this.from != null ? false : true);
        Object instance = needsInstance ? parameters[0] : (this.isStatic ? null : this.from);
        if (needsInstance)
            parameters = ArrayUtils.remove(parameters, 0);
        try {
            return (T) this.method.invoke(instance, parameters);
        } catch (Exception e) {
            return null;
        }
    }