public function substract(Sequence $sequence): self
    {
        if ($this->isEmpty()) {
            return $this;
        }

        $new = $sequence->reduce([$this, 'substractOne'], $this);
        if ($new->intervals === $this->intervals) {
            return $this;
        }

        return $new;
    }
public function substract(Sequence $sequence): self
    {
        if ($this->isEmpty()) {
            return $this;
        }

        $new = $sequence->reduce([$this, 'substractOne'], $this);
        if ($new->intervals === $this->intervals) {
            return $this;
        }

        return $new;
    }
public function substract ( Sequence $ sequence ) : self { if ( $ this -> isEmpty ( ) ) { return $ this ; } $ new = $ sequence -> reduce ( [ $ this , 'substractOne' ] , $ this ) ; if ( $ new -> intervals === $ this -> intervals ) { return $ this ; } return $ new ; }
Substract a Sequence from the current instance.

This method MUST retain the state of the current instance, and return
an instance that contains substracted intervals.
Substract a Sequence from the current instance .