* {@inheritDoc}
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// from user value
NativeFunction function = object.getPropertyAs(NativeFunction.class, ((JSMethod) (Object) method).nameJS);
if (function != null) {
Object value = function.apply(null);
Class type = method.getReturnType();
if (type.isAnnotation()) {
return Proxy.newProxyInstance(null, new Class[] {type}, new AnnotationProxy(type, value));
} else if (type.isArray() && type.getComponentType().isAnnotation()) {