class RubyProf::AbstractPrinter

def print_footer(thread)

def print_footer(thread)
  metric_data = {
    0 => { label: "time", prefix: "", suffix: "spent" },
    1 => { label: "time", prefix: "", suffix: "spent" },
    2 => { label: "allocations", prefix: "number of ", suffix: "made" },
    3 => { label: "memory", prefix: "", suffix: "used" }
  }
  metric = metric_data[@result.measure_mode]
  metric_label = metric[:label]
  metric_suffix = metric[:suffix]
  metric_prefix = metric[:prefix]
  metric1 = "#{metric_label} #{metric_suffix}"
  metric2 = "#{metric_prefix}#{metric1}"
  metric3 = metric_label
  # Output the formatted text
  @output << <<~EOT
    * recursively called methods
    Columns are:
      %self     - The percentage of #{metric1} by this method relative to the total #{metric3} in the entire program.
      total     - The total #{metric2} by this method and its children.
      self      - The #{metric2} by this method.
      wait      - The time this method spent waiting for other threads.
      child     - The #{metric2} by this method's children.
      calls     - The number of times this method was called.
      name      - The name of the method.
      location  - The location of the method.
    The interpretation of method names is:
      * MyObject#test - An instance method "test" of the class "MyObject"
      * <Object:MyObject>#test - The <> characters indicate a method on a singleton class.
  EOT
end