def METHOD_NAME(self, hub, active_greenlet, format_kwargs):
    # XXX: On Python 2 with greenlet 1.0a1, '%s' formatting a greenlet
    # results in a unicode object. This is a bug in greenlet, I think.
    # https://github.com/python-greenlet/greenlet/issues/218
    report = ['=' * 80,
              '\n%s : Greenlet %s appears to be blocked' %
              (gmctime(), str(active_greenlet))]
    report.append("    Reported by %s" % (self,))
    try:
        frame = sys._current_frames()[hub.thread_ident]
    except KeyError:
        # The thread holding the hub has died. Perhaps we shouldn't
        # even report this?
        stack = ["Unknown: No thread found for hub %r\n" % (hub,)]
    else:
        stack = traceback.format_stack(frame)
    report.append('Blocked Stack (for thread id %s):' % (hex(hub.thread_ident),))
    report.append(''.join(stack))
    report.append("Info:")
    report.extend(format_run_info(**format_kwargs))
    return report