anchor.diff:            "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;
  -      throw new NodeLocator_NodeFoundException();
       }
       return null;
     }
  
positive.code:     if (start > _endOffset) {
        return null;
      }
      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.
  
negative.code: 
    @override
    Object visitNode(AstNode node) {
      // Don't visit a new tree if the result has been already found.
      if (_foundNode != null) {
        return null;
      }
      // Check whether the current node covers the selection.
      Token beginToken = node.beginToken;
      Token endToken = node.endToken;
      // Don't include synthetic tokens.
  