function complement(Set $that) {
        $complement = $this->cloneEmpty();

        if ($that === $this) {
            return $complement;
        }

        $this->addIf($complement, $that, negate([$this, 'has']));

        return $complement;
    }
function complement(Set $that) {
        $complement = $this->cloneEmpty();

        if ($that === $this) {
            return $complement;
        }

        $this->addIf($complement, $that, negate([$this, 'has']));

        return $complement;
    }
function complement ( Set $ that ) { $ complement = $ this -> cloneEmpty ( ) ; if ( $ that === $ this ) { return $ complement ; } $ this -> addIf ( $ complement , $ that , negate ( [ $ this , 'has' ] ) ) ; return $ complement ; }
Creates a new set which contains the items that exist in the provided
set and do not exist in the current set.

Formally:
B \ A = {x: x ∈ A ∧ x ∉ B}

@param Set $that
@return Set
Creates a new set which contains the items that exist in the provided set and do not exist in the current set .