# File lib/methodsig.rb, line 324
    def set_optional_args(args, args_node, names)
      iseq = self.body
      opt_pc = iseq.opt_pc
      env = Nodewrap::ByteDecoder::Environment.new(iseq.local_table())
      iseq.bytedecode(env, 0, opt_pc)
      expressions = env.expressions + env.stack
      expressions.sort!
      opt_table = self.body.arg_opt_table
      opt_table.pop
      first_opt_idx =
        names.size -
        opt_table.size -
        (self.rest_arg ? 1 : 0) -
        (self.block_arg ? 1 : 0)
      opt_table.each_with_index do |pc, idx|
        name = names[first_opt_idx + idx]
        expr = expressions.find { |e| e.pc >= pc }
        args[name] = Argument.new(name, expr.rhs.to_s, nil, false, false)
      end
    end