anchor.diff:   * mapping the old token stream to a new token stream, and preserving resolution
    * results.
    */
  +@deprecated
   class IncrementalAstCloner implements AstVisitor<AstNode> {
     /**
      * The node to be replaced during the cloning process.
  
positive.code:           _mapToken(node.implementsKeyword), _cloneNodeList(node.interfaces));
  
    @override
    ImportDirective visitImportDirective(ImportDirective node) =>
        new ImportDirective(
            _cloneNode(node.documentationComment),
            _cloneNodeList(node.metadata),
            _mapToken(node.keyword),
            _cloneNode(node.uri),
            _cloneNodeList(node.configurations),
            _mapToken(node.deferredKeyword),
            _mapToken(node.asKeyword),
            _cloneNode(node.prefix),
            _cloneNodeList(node.combinators),
            _mapToken(node.semicolon));
  
    @override
    IndexExpression visitIndexExpression(IndexExpression node) {
  
negative.code:           _cloneNodeList(node.labels), _cloneNode(node.statement));
  
    @override
    LibraryDirective visitLibraryDirective(LibraryDirective node) {
      LibraryDirective copy = new LibraryDirective(
          _cloneNode(node.documentationComment),
          _cloneNodeList(node.metadata),
          _mapToken(node.libraryKeyword),
          _cloneNode(node.name),
          _mapToken(node.semicolon));
      copy.element = node.element;
      return copy;
    }
  
    @override
    LibraryIdentifier visitLibraryIdentifier(LibraryIdentifier node) {
  