code: function transformer(cst, file) {
      visit(cst, para, visitor)
  
      function visitor(node) {
        var matches = {}
        var key
        var type
  
        search(node, normalize, handle)
        search(node, noNormalize, handle, true)
  
        /* Ignore or trigger offending words based on
         * their pattern. */
        for (key in matches) {
          type = byId[key].type
  
          if (type === 'or' && noBinary) {
            type = 'simple'
          }
  
          handlers[type](matches[key], byId[key], file)
        }
  
        /* Handle a match. */
        function handle(match, position, parent, phrase) {
          var index = list.indexOf(phrase)
          var pattern = byIndex[index]
          var id = pattern.id
  
          if (!(id in matches)) {
            matches[id] = []
          }
  
          matches[id].push({
            type: pattern.inconsiderate[phrase],
            parent: parent,
            nodes: match,
            start: position,
            end: position + match.length - 1
          })
        }
      }
    }
docs: /* Transformer.