code: def track_class(self, cls, name=None, resolution_level=0, keep=False, trace=False):
          
          if not isclass(cls):
              raise TypeError("only class objects can be tracked")
          if name is None:
              name = cls.__module__ + '.' + cls.__name__
          if self._is_tracked(cls):
              self._track_modify(cls, name, resolution_level, keep, trace)
          else:
              self._inject_constructor(cls, self._tracker, name, resolution_level, keep, trace)
docs: Track all objects of the class `cls`. Objects of that type that already
          exist are *not* tracked. If `track_class` is called for a class already
          tracked, the tracking parameters are modified. Instantiation traces can be
          generated by setting `trace` to True.
          A constructor is injected to begin instance tracking on creation
          of the object. The constructor calls `track_object` internally.
  
          :param cls: class to be tracked, may be an old-style or a new-style class
          :param name: reference the class by a name, default is the concatenation of
              module and class name
          :param resolution_level: The recursion depth up to which referents are
              sized individually. Resolution level 0 (default) treats the object
              as an opaque entity, 1 sizes all direct referents individually, 2
              also sizes the referents of the referents and so forth.
          :param keep: Prevent the object's deletion by keeping a (strong)
              reference to the object.
          :param trace: Save instantiation stack trace for each instance