Example #1
  * Flattens nested Synthetic Collections.
  * Will deeply flatten the Synthetic Collection by default, but a depth can be provided in the form of a number or
  * boolean (where
  * `true` means to shallowly flatten one level). A depth of 0 (or shallow: false) will deeply flatten.
  * Flattens only others Synthetic Collection, not Arrays or Objects.
  * Note: flatten(true) operates on Synthetic Collection> and returns Synthetic Collection
  * @param {number|boolean} depth
  * @returns {Synthetic}
 flatten(depth) {
   return this.replicate(this.attributes.flatten(depth));