@Override
    public boolean equals(Object other)
    {
        if (other instanceof Pair) {
            Pair otherPair = (Pair) other;
            return isEqual(this.first, otherPair.first) &&
                   isEqual(this.second, otherPair.second);
        }
        
        return false;
    }