def copy_properties(dest, src):
        """
        Copies content of one object to another object
        by recursively reading all properties from source object
        and then recursively writing them to destination object.

        :param dest: a destination object to write properties to.

        :param src: a source object to read properties from
        """
        if dest == None or src == None:
            return
        
        values = RecursiveObjectReader.get_properties(src)
        RecursiveObjectWriter.set_properties(dest, values)