docs: def recursive_derived(self):
          """list of all :class:`derive classes <hierarchy_info_t>`"""
          if self._recursive_derived is None:
              to_go = self.derived[:]
              all_derived = []
              while to_go:
                  derive = to_go.pop()
                  if derive not in all_derived:
                      all_derived.append(derive)
                      to_go.extend(derive.related_class.derived)
              self._recursive_derived = all_derived
          return self._recursive_derived