public CachedBoxedSymbolDispatchNode(
      RubyContext context, Object cachedName, DispatchNode next, Object value, RubyMethod method) {
    super(context, cachedName, next);
    unmodifiedAssumption = context.getCoreLibrary().getSymbolClass().getUnmodifiedAssumption();
    this.value = value;
    this.method = method;

    if (method != null) {
      callNode = Truffle.getRuntime().createDirectCallNode(method.getCallTarget());
    }
  }
 @Override
 public Object dispatch(VirtualFrame frame, RubyProc block, Object[] argumentsObjects) {
   final RubyMethod method = block.getMethod();
   return callNode.call(
       frame,
       method.getCallTarget(),
       RubyArguments.pack(
           method.getDeclarationFrame(),
           block.getSelfCapturedInScope(),
           block.getBlockCapturedInScope(),
           argumentsObjects));
 }