class Sorbet::Private::Serialize

def serialize_method(method, static=false, with_sig: true)

def serialize_method(method, static=false, with_sig: true)
  name = method.name.to_s
  ret = String.new
  if !valid_method_name(name)
    ret << "# Illegal method name: #{name}"
    return
  end
  parameters = from_method(method)
  # a hack for appeasing Sorbet in the presence of the Enumerable interface
  if name == 'each' && !parameters.any? {|(kind, _)| kind == :block}
    parameters.push([:block, "blk"])
  end
  ret << serialize_sig(parameters) if with_sig
  args = parameters.map do |(kind, param_name)|
    to_sig(kind, param_name)
  end.compact.join(', ')
  ret << "  def #{static ? 'self.' : ''}#{name}(#{args}); end\n"
  ret
end