code: def properties(self):
      if self._cls is None:
          return []
      return [
          name
          for name, func in inspect.getmembers(self._cls)
          if (
              not name.startswith("_")
              and (
                  func is None
                  or isinstance(func, property)
                  or inspect.isdatadescriptor(func)
              )
              and self._is_show_member(name)
          )
      ]
  
imports: import inspect
  import textwrap
  import re
  import pydoc
  from warnings import warn
  import collections
  import copy
label_desc: Use image node_id 3 for calling the ClassDoc obj's underlying member method code with example usage: obj.properties() and returns: unknown, list