def __init__(self, start, end):
    self.start = start.clone()
    self.originalstart = start.clone()
    self.end = end.clone()
    self.originalend = end.clone()
    self.timescloned = 0
    '\n        What comes in:\n          -- self\n          -- a Point object named  start\n          -- a Point object named  end\n        where the two Points are to be the initial start and end points,\n        respectively, of this Line.\n\n        What goes out: Nothing (i.e., None).\n\n        Side effects:  MUTATEs this Line by setting two instance\n        variables named:\n          -- start\n          -- end\n        to CLONES of the two Point arguments, respectively.\n        Other methods must maintain those instance variables as needed\n        so that they always indicate the CURRENT start and end points\n        of this Line.\n\n        Also, initializes other instance variables as needed\n        by other Line methods.\n\n        Example:  This   __init__  method runs when one constructs\n        a Line.  So the 3rd of the following statements\n        invokes the   __init__   method of this Line class:\n            p1 = Point(30, 17)\n            p2 = Point(50, 80)\n            line = Line(p1, p2)        # Causes __init__ to run\n\n            print(line.start)          # Should print Point(30, 17)\n            print(line.end)            # Should print Point(50, 80)\n            print(line.start == p1)    # Should print True\n            print(line.start is p1)    # Should print False\n\n        Type hints:\n          :type start: Point\n          :type end:   Point\n        '
def __init__(self, start, end):
    self.start = start.clone()
    self.originalstart = start.clone()
    self.end = end.clone()
    self.originalend = end.clone()
    self.timescloned = 0
    '\n        What comes in:\n          -- self\n          -- a Point object named  start\n          -- a Point object named  end\n        where the two Points are to be the initial start and end points,\n        respectively, of this Line.\n\n        What goes out: Nothing (i.e., None).\n\n        Side effects:  MUTATEs this Line by setting two instance\n        variables named:\n          -- start\n          -- end\n        to CLONES of the two Point arguments, respectively.\n        Other methods must maintain those instance variables as needed\n        so that they always indicate the CURRENT start and end points\n        of this Line.\n\n        Also, initializes other instance variables as needed\n        by other Line methods.\n\n        Example:  This   __init__  method runs when one constructs\n        a Line.  So the 3rd of the following statements\n        invokes the   __init__   method of this Line class:\n            p1 = Point(30, 17)\n            p2 = Point(50, 80)\n            line = Line(p1, p2)        # Causes __init__ to run\n\n            print(line.start)          # Should print Point(30, 17)\n            print(line.end)            # Should print Point(50, 80)\n            print(line.start == p1)    # Should print True\n            print(line.start is p1)    # Should print False\n\n        Type hints:\n          :type start: Point\n          :type end:   Point\n        '