docs: function attrFactory (attrs) {
    let directAttrs = []
    let includeAttrs = []
  
    attrs.forEach(attr => {
      if (_.isString(attr) && attr.startsWith('include.')) {
        includeAttrs.push(attr.replace('include.', ''))
      } else {
        directAttrs.push(attr)
      }
    })
  
    if (directAttrs.includes('$all')) {
      if (directAttrs.length !== 1) {
        this.options.attributes = {include: []}
        directAttrs.filter(attr => attr !== '$all').forEach(attr => {
          this.options.attributes.include.push(attr)
        })
      }
    } else if (directAttrs.includes('$exclude')) {
      this.options.attributes = {exclude: directAttrs.filter(attr => attr !== '$exclude')}
    } else {
      this.options.attributes = directAttrs
    }
  
    includeAttrs.forEach(i => {
      nestHandler.call(this, this.options.include, i)
    })
  }