code: def _split_props(thing, doc):
      
      props = inspect.getmembers(thing, lambda o: isinstance(o, property))
      ps = []
      docs = [
          (*_get_names(names, types), names, types, desc) for names, types, desc in doc
      ]
      for prop_name, prop in props:
          in_doc = [d for d in enumerate(docs) if prop_name in d[0]]
          for d in in_doc:
              docs.remove(d)
          ps.append(prop_name)
      if len(docs) > 0:
          _, _, names, types, descs = zip(*docs)
          return ps, zip(names, types, descs)
      return ps, []
docs: Separate properties from other kinds of member.