anchor.diff:      if (start > _endOffset) {
         return null;
       }
  +    // Check children.
       try {
         node.visitChildren(this);
  -    } on NodeLocator_NodeFoundException {
  -      rethrow;
       } catch (exception, stackTrace) {
         // Ignore the exception and proceed in order to visit the rest of the
         // structure.
  
positive.code: 
    @override
    Object visitNode(AstNode node) {
      Token beginToken = node.beginToken;
      Token endToken = node.endToken;
      // Don't include synthetic tokens.
  
negative.code:           "Exception caught while traversing an AST structure.",
            new CaughtException(exception, stackTrace));
      }
      // Found a child.
      if (_foundNode != null) {
        return null;
      }
      // Check this node.
      if (start <= _startOffset && _endOffset < end) {
        _foundNode = node;
      }
      return null;
    }
  }
  
  /**
   * An object that will replace one child node in an AST node with another node.
  