code: def _object_instance_content(obj):
      retval = bytearray()
      if obj is None:
          return b'N.'
      if isinstance(obj, SCons.Util.BaseStringTypes):
          return SCons.Util.to_bytes(obj)
      inst_class = obj.__class__
      inst_class_name = bytearray(obj.__class__.__name__,'utf-8')
      inst_class_module = bytearray(obj.__class__.__module__,'utf-8')
      inst_class_hierarchy = bytearray(repr(inspect.getclasstree([obj.__class__,])),'utf-8')
      properties = [(p, getattr(obj, p, "None")) for p in dir(obj) if not (p[:2] == '__' or inspect.ismethod(getattr(obj, p)) or inspect.isbuiltin(getattr(obj,p))) ]
      properties.sort()
      properties_str = ','.join(["%s=%s"%(p[0],p[1]) for p in properties])
      properties_bytes = bytearray(properties_str,'utf-8')
      methods = [p for p in dir(obj) if inspect.ismethod(getattr(obj, p))]
      methods.sort()
      method_contents = []
      for m in methods:
          v = _function_contents(getattr(obj, m))
          method_contents.append(v)
      retval = bytearray(b'{')
      retval.extend(inst_class_name)
      retval.extend(b":")
      retval.extend(inst_class_module)
      retval.extend(b'}[[')
      retval.extend(inst_class_hierarchy)
      retval.extend(b']]{{')
      retval.extend(bytearray(b",").join(method_contents))
      retval.extend(b"}}{{{")
      retval.extend(properties_bytes)
      retval.extend(b'}}}')
      return retval