docs: def _indent_change(change, out, options, indent):
      """
      recursive function to print indented change descriptions
      """
  
      show_unchanged = getattr(options, "show_unchanged", False)
      show_ignored = getattr(options, "show_ignored", False)
  
      show = False
      desc = change.get_description()
  
      if change.is_change():
          if change.is_ignored(options):
              if show_ignored:
                  show = True
                  _indent(out, indent, desc, " [IGNORED]")
          else:
              show = True
              _indent(out, indent, desc)
      elif show_unchanged:
          show = True
          _indent(out, indent, desc)
  
      if show:
          indent += 1
          for sub in change.collect():
              _indent_change(sub, out, options, indent)