docs: def copy(self, empty=False):
          """returns an independent copy of the current object."""
          
          # Create an empty object
          newobject = self.__new__(self.__class__)
          if empty:
              return
          
          # And fill it !
          for prop in ["_properties","_side_properties",
                       "_derived_properties","_build_properties"
                       ]:
              if prop not in dir(self):
                  continue
              try: # Try to deep copy because but some time it does not work (e.g. wcs) 
                  newobject.__dict__[prop] = copy.deepcopy(self.__dict__[prop])
              except:
                  newobject.__dict__[prop] = copy.copy(self.__dict__[prop])
                  
          # This be sure things are correct
          newobject._update_()
          # and return it
          return newobject