final public function compareTo(ComparableInterface $other)
    {
        if (false === ($other instanceof self)) {
            throw new ClassCastException(
                'The specified object\'s type is not an instance of '
                . __CLASS__ . '.'
            );
        }

        if (false === ($this instanceof $other)) {
            throw new ClassCastException(
                'The specified object\'s type is not an instance of '
                . \get_class($this) . '.'
            );
        }

        return ($this->ordinal - $other->ordinal);
    }