@Override
public Object evaluate(Context context, Request request) {
MethodInvoker invoker = methods.get(request.getNode().getClass());
if (invoker == null) {
throw new MissingDefinitionException(request);
}
Object[] args = Arrays.prependArray(request.getNode(), request.getArguments());
return invoker.invoke(args);
}