public int compareTo(PartialMove other) {
        if (this.equals(other)) {
            return 0;
        }
        if (this.color < other.color) {
            return -1;
        } else if (this.color > other.color) {
            return 1;
        }
        if (this.start < other.start) {
            return -1;
        } else if (this.start > other.start) {
            return 1;
        }
        /* okay, starts are equal */
        if (this.roll < other.roll) {
            return -1;
        } else if (this.roll > other.roll) {
            return 1;
        }
        /* starts and rolls are equal */
        if (this.end < other.end) {
            return -1;
        } else if (this.end > other.end) {
            return 1;
        } else {
            /* shouldn't get here since this implies start,roll & end are tied which
            the first ".equals( )" should have stopped! */
            String myMsg = "PartialMove '"+ this.toString( )+ "' isn't comparable to PartialMove '" + other.toString( ) + "'";
            throw new ClassCastException(myMsg);
        }
    } // CompareTo