    # File lib/yard/templates/helpers/text_helper.rb, line 48
            def signature(meth)
              # use first overload tag if it has a return type and method itself does not
              if !meth.tag(:return) && meth.tag(:overload) && meth.tag(:overload).tag(:return)
                meth = meth.tag(:overload)
              end

              type = options[:default_return] || ""
              rmeth = meth
              if !rmeth.has_tag?(:return) && rmeth.respond_to?(:object)
                rmeth = meth.object
              end
              if rmeth.tag(:return) && rmeth.tag(:return).types
                types = rmeth.tags(:return).map {|t| t.types ? t.types : [] }.flatten.uniq
                first = types.first
                if types.size == 2 && types.last == 'nil'
                  type = first + '?'
                elsif types.size == 2 && types.last =~ /^(Array)?<#{Regexp.quote types.first}>$/
                  type = first + '+'
                elsif types.size > 2
                  type = [first, '...'].join(', ')
                elsif types == ['void'] && options[:hide_void_return]
                  type = ""
                else
                  type = types.join(", ")
                end
              end
              type = "(#{type})" if type.include?(',')
              type = " -> #{type} " unless type.empty?
              scope = meth.scope == :class ? "#{meth.namespace.name}." : "#{meth.namespace.name.to_s.downcase}."
              name = meth.name
              blk = format_block(meth)
              args = format_args(meth)
              extras = []
              extras_text = ''
              if rw = meth.namespace.attributes[meth.scope][meth.name]
                attname = [rw[:read] ? 'read' : nil, rw[:write] ? 'write' : nil].compact
                attname = attname.size == 1 ? attname.join('') + 'only' : nil
                extras << attname if attname
              end
              extras << meth.visibility if meth.visibility != :public
              extras_text = '(' + extras.join(", ") + ')' unless extras.empty?
              title = "%s%s%s %s%s%s" % [scope, name, args, blk, type, extras_text]
              title.gsub(/\s+/, ' ')
            end