def METHOD_NAME(self, indent=3):
    try:
        accum = "%s:[" % self.label
    except NameError:
        accum = "["
    try:
        accum += "pred '%s'" % (self.pred[0])
    except NameError:
        pass
    for feature in sorted(self):
        for item in self[feature]:
            if isinstance(item, FStructure):
                next_indent = indent + len(feature) + 3 + len(self.label)
                accum += "\n{}{} {}".format(
                    " " * (indent),
                    feature,
                    item.METHOD_NAME(next_indent),
                )
            elif isinstance(item, tuple):
                accum += "\n{}{} '{}'".format(" " * (indent), feature, item[0])
            elif isinstance(item, list):
                accum += "\n{}{} {{{}}}".format(
                    " " * (indent),
                    feature,
                    ("\n%s" % (" " * (indent + len(feature) + 2))).join(item),
                )
            else:  # ERROR
                raise Exception(
                    "feature %s is not an FStruct, a list, or a tuple" % feature
                )
    return accum + "]"