class Opal::Rewriters::InlineArgs


end
g = $kwargs.except(:e, :f)
f = $kwargs.delete(:f) || 1
e = $kwargs.delete(:e)
d = $post_args.last
c = <enough args> ? $post_args : []
a = <enough args> ? $post_args.shift : 1
$kwargs = $post_args.pop
$post_args = arguments[1..-1]
blk = <extract block>
def m( a, <fake b>, <fake c>, <fake d>, <fake kwargs>)
To something like
end
def m( a, b = 1, *c, d, e:, f: 1, **g, &blk )
Converts

def on_def(node)

def on_def(node)
  node = super(node)
  mid, args, body = *node
  body ||= s(:nil) # prevent returning initialization statement
  initializer = Initializer.new(args, type: :def)
  inline_args = args.updated(nil, initializer.inline)
  body = prepend_to_body(body, initializer.initialization)
  node.updated(nil, [mid, inline_args, body])
end

def on_defs(node)

def on_defs(node)
  node = super(node)
  recv, mid, args, body = *node
  body ||= s(:nil) # prevent returning initialization statement
  initializer = Initializer.new(args, type: :defs)
  inline_args = args.updated(nil, initializer.inline)
  body = prepend_to_body(body, initializer.initialization)
  node.updated(nil, [recv, mid, inline_args, body])
end

def on_iter(node)

def on_iter(node)
  node = super(node)
  args, body = *node
  body ||= s(:nil) # prevent returning initialization statement
  initializer = Initializer.new(args, type: :iter)
  inline_args = args.updated(nil, initializer.inline)
  body = prepend_to_body(body, initializer.initialization)
  node.updated(nil, [inline_args, body])
end