anchor.diff:      raw == obj.raw;
   }
   
  +String _normalizeReference(String s) {
  +  return s.trim()
  +    .replaceAll(new RegExp(r'\s+'),' ')
  +    .toUpperCase();
  +}
  +
   
   class _LinkReference extends Block {
     String reference;
  +  String normalizedReference;
     Target target;
   
  -  _LinkReference(this.reference, this.target);
  +  _LinkReference(this.reference, this.target) {
  +    normalizedReference = _normalizeReference(reference);
  +  }
   }
   
   // TODO make aux parsers private
  
positive.code: 
    // TODO support escaping
    Parser linkTitle = (
        ((char("'") > noneOf("'\n")) < char("'")) |
        ((char('"') > noneOf('"\n')) < char('"')) |
        ((char('(') > noneOf(')\n')) < char(')'))
    ) ^ (i) => i.join();
  
  
  
negative.code:     List result = [];
      list.forEach((Block block) {
        if (block is _LinkReference) {
          String nr = block.normalizedReference;
          if (!_references.containsKey(nr)) {
            _references[nr] = block.target;
          }
        } else {
          result.add(block);
  