code: def _object_contents(obj):
      
      try:
          # Test if obj is a method.
          return _function_contents(obj.__func__)
  
      except AttributeError:
          try:
              # Test if obj is a callable object.
              return _function_contents(obj.__call__.__func__)
  
          except AttributeError:
              try:
                  # Test if obj is a code object.
                  return _code_contents(obj)
  
              except AttributeError:
                  try:
                      # Test if obj is a function object.
                      return _function_contents(obj)
  
                  except AttributeError as ae:
                      # Should be a pickle-able Python object.
                      try:
                          return _object_instance_content(obj)
                          # pickling an Action instance or object doesn't yield a stable
                          # content as instance property may be dumped in different orders
                          # return pickle.dumps(obj, ACTION_SIGNATURE_PICKLE_PROTOCOL)
                      except (pickle.PicklingError, TypeError, AttributeError) as ex:
                          # This is weird, but it seems that nested classes
                          # are unpickable. The Python docs say it should
                          # always be a PicklingError, but some Python
                          # versions seem to return TypeError.  Just do
                          # the best we can.
                          return bytearray(repr(obj), 'utf-8')
docs: Return the signature contents of any Python object.
  
      We have to handle the case where object contains a code object
      since it can be pickled directly.