def METHOD_NAME(data, cur_path, output_file):
    keys = list(data.keys())
    keys.sort()
    # Since there is no end to a markdown heading besides another markdown
    # heading of equal or greater size, we need to first do parameters and
    # aliases, and then do subsections otherwise parameters get nested
    # incorrectly
    for key in keys:
        path_str = "/".join(cur_path) + "/"  + mangle(key)
        true_name = demangle(key)
        print_if_parameter_or_alias(data[key], path_str, true_name, cur_path, output_file)
    for key in keys:
        path_str = "/".join(cur_path) + "/"  + mangle(key)
        entry = data[key]
        if (not "value" in entry) and (not "alias" in entry):
            # This is a subsection
            print("(parameters:" + path_str + ")=", file=output_file)
            new_path = cur_path + [mangle(key)]
            section_name = demangle(path_str)
            section_name = section_name.replace("/"," / ")
            print("## **Subsection:** " + section_name, file=output_file)
            METHOD_NAME(entry, new_path, output_file)