separate(notations) {
        if (!utils.isArray(notations)) {
            throw new NotationError(ERR.NOTA_OBJ + 'Expected an array.');
        }
        const o = new Notation({});
        utils.each(notations, notation => {
            const result = this.inspectRemove(notation);
            o.set(notation, result.value);
        });
        this._source = o._source;
        return this;
    }
/**
     *  Removes the properties by the given list of notations from the source
     *  object and returns a new object with the removed properties.
     *  Opposite of `merge()` method.
     *
     *  @param {Array} notations - The notations array to be processed.
     *
     *  @returns {Object} - An object with the removed properties.
     *
     *  @example
     *  const obj = { car: { brand: "Dodge", year: 1970 }, notebook: "Mac" };
     *  const separated = Notation.create(obj).separate(["car.brand", "boat" ]);
     *  console.log(separated);
     *  // { notebook: "Mac", car: { brand: "Ford" } };
     *  console.log(obj);
     *  // { car: { year: 1970 } };
     */
Removes the properties by the given list of notations from the source
object and returns a new object with the removed properties.
Opposite of `merge()` method.

@param {Array} notations - The notations array to be processed.

@returns {Object} - An object with the removed properties.


Removes the properties by the given list of notations from the source object and returns a new object with the removed properties . Opposite of ` merge () ` method . @param { Array } notations - The notations array to be processed . @returns { Object } - An object with the removed properties .
separate(notations) {
        if (!utils.isArray(notations)) {
            throw new NotationError(ERR.NOTA_OBJ + 'Expected an array.');
        }
        const o = new Notation({});
        utils.each(notations, notation => {
            const result = this.inspectRemove(notation);
            o.set(notation, result.value);
        });
        this._source = o._source;
        return this;
    }
separate ( notations ) { if ( ! utils . isArray ( notations ) ) { throw new NotationError ( ERR . NOTA_OBJ + 'Expected an array.' ) ; } const o = new Notation ( { } ) ; utils . each ( notations , notation => { const result = this . inspectRemove ( notation ) ; o . set ( notation , result . value ) ; } ) ; this . _source = o . _source ; return this ; }
Removes the properties by the given list of notations from the source
  object and returns a new object with the removed properties.
Removes the properties by the given list of notations from the source object and returns a new object with the removed properties .