code: function and(matches, pattern, file) {
    var categories = pattern.categories.concat()
    var note = pattern.note
    var id = pattern.id
    var length = matches.length
    var index = -1
    var phrases = []
    var suggestions = []
    var match
    var position
    var siblings
    var first
  
    while (++index < length) {
      match = matches[index]
      siblings = match.parent.children
      position = categories.indexOf(match.type)
  
      if (position !== -1) {
        categories.splice(position, 1)
        phrases.push(toString(siblings.slice(match.start, match.end + 1)))
        suggestions.push(byValue(pattern.considerate, match.type))
  
        if (!first) {
          first = match.nodes[0]
        }
  
        if (categories.length === 0) {
          warn(
            file,
            id,
            phrases,
            suggestions,
            first,
            note,
            pattern.condition,
            ' / '
          )
        }
      }
    }
  }
docs: /* Handle matches for an `and` pattern.  And-patterns
  trigger a warning when every category is present.
  
  For example, when `master` and `slave` occur in a
  context together, they trigger a warning.