module Tins::MethodDescription

def description(style: :namespace)

def description(style: :namespace)
  valid_styles = %i[ namespace name parameters ]
  valid_styles.include?(style) or
    raise ArgumentError,
    "style has to be one of #{valid_styles * ', '}"
  if respond_to?(:parameters)
    generated_name = 'x0'
    parameter_array = parameters.map { |p_type, p_name|
      unless p_name
        generated_name = generated_name.succ
        p_name = generated_name
      end
      Parameters.build(p_type, p_name)
    }
    signature = Signature.new(*parameter_array)
    if style == :parameters
      return signature
    end
  end
  result = ''
  if style == :namespace
    if owner <= Module
      result << receiver.to_s << ?. # XXX Better to use owner here as well?
    else
      result << owner.name.to_s << ?#
    end
  end
  if %i[ namespace name ].include?(style)
    result << name.to_s << '('
  end
  result << (signature || arity).to_s
  if %i[ namespace name ].include?(style)
    result << ?)
  end
  result
end

def signature

def signature
  description style: :parameters
end