@Override
    public boolean equals( Object obj )
    {
        if ( obj == null ) {
            return false;
        }
        if ( getClass() != obj.getClass() ) {
            return false;
        }
        @SuppressWarnings( "unchecked" )
        final Couple<L, R> other = ( Couple<L, R> ) obj;
        if ( this.left != other.left && ( this.left == null || !this.left.equals( other.left ) ) ) {
            return false;
        }
        if ( this.right != other.right && ( this.right == null || !this.right.equals( other.right ) ) ) {
            return false;
        }
        return true;
    }