Changed the contract of clone mark so that the optional argument is
either :left or :right forcing the return value to be a left-sticky-mark and a right-sticky-mark respectively. Altered the two calls (in test code) that actually used the optional argument to pass the right thing. Modified the implementation of clone-mark to use constant symbols for the class to instantiate, and made two methods so that the type of the argument will be known statically. Still needed an explicit test for the optional argument, but that is still much faster than using a variable class to make-instance.
Showing with 90 additions and 75 deletions