anchor.diff:  
   p
       |  We can now call the matcher on our documents. The patterns will be
  -    |  matched in the order they occur in the text.
  +    |  matched in the order they occur in the text. The matcher will then
  +    |  iterate over the matches, look up the callback for the match ID
  +    |  that was matched, and invoke it.
   
   +code.
       doc = nlp(LOTS_OF_TEXT)
       matcher(doc)
   
  -+h(3, "on_match-callback") The callback function
  -
  -p
  -    |  The matcher will first collect all matches over the document. It will
  -    |  then iterate over the matches, lookup the callback for the entity ID
  -    |  that was matched, and invoke it. When the callback is invoked, it is
  +p
  +    |  When the callback is invoked, it is
       |  passed four arguments: the matcher itself, the document, the position of
       |  the current match, and the total list of matches. This allows you to
       |  write callbacks that consider the entire set of matched phrases, so that
  
positive.code:         # Append entity to the doc's entity. (Don't overwrite doc.ents!)
          match_id, start, end = matches[i]
          doc.ents += ((EVENT, start, end),)
  
  p
      |  In addition to mentions of "Google I/O", your data also contains some
  
negative.code: 
  +list("numbers")
      +item
          |  A token whose #[strong lowercase form matches "hello"], e.g. "Hello"
          |  or "HELLO".
      +item
          |  A token whose #[strong #[code is_punct] flag is set to #[code True]],
          |  i.e. any punctuation.
      +item
          |  A token whose #[strong lowercase form matches "world"], e.g. "World"
          |  or "WORLD".
  
  +code.
  