code: def copy(self, deep=True):
          
          thistype = type(self)
          newobject = thistype()
          if deep:
              newobject.DeepCopy(self)
          else:
              newobject.ShallowCopy(self)
          newobject.copy_meta_from(self)
          return newobject
docs: Returns a copy of the object
  
          Parameters
          ----------
          deep : bool, optional
              When True makes a full copy of the object.
  
          Returns
          -------
          newobject : same as input
             Deep or shallow copy of the input.