@Override
public ContextualStatementBuilder call(final Statement instance, final HasAnnotations annotated, final BuildMetaClass factory,
final Statement... statement) {
final MetaMethod method = (MetaMethod) annotated;
if (method.isPublic()) {
if (method.isStatic()) {
return invokeStatic(method.getDeclaringClass(), method.getName(), (Object[]) statement);
} else {
return nestedCall(instance).invoke(method, (Object[]) statement);
}
} else {
final Object[] params = getParams(method.isStatic(), instance, statement);
return invokeStatic(notNull(factory), getPrivateMethodName(method), params);
}
}