anchor.diff:  
   /// The abstract class `ScopedVisitor` maintains name and label scopes as an AST
   /// structure is being visited.
  -abstract class ScopedVisitor extends UnifyingAstVisitor<void> {
  +abstract class ScopedVisitor extends ResolverBase {
     static const _nameScopeProperty = 'nameScope';
  -
  -  /// The element for the library containing the compilation unit being visited.
  -  final LibraryElementImpl definingLibrary;
  -
  -  /// The source representing the compilation unit being visited.
  -  final Source source;
  -
  -  /// The object used to access the types from the core library.
  -  final TypeProviderImpl typeProvider;
  -
  -  /// The error reporter that will be informed of any errors that are found
  -  /// during resolution.
  -  final ErrorReporter errorReporter;
   
     /// The scope used to resolve identifiers.
     Scope nameScope;
  
positive.code:   }
  }
  
  /// Instances of the class `ResolverVisitor` are used to resolve the nodes
  /// within a single compilation unit.
  class ResolverVisitor extends ScopedVisitor with ErrorDetectionHelpers {
  
negative.code:   /// [nameScope] is the scope used to resolve identifiers in the node that will
    /// first be visited.  If `null` or unspecified, a new [LibraryScope] will be
    /// created based on [definingLibrary] and [typeProvider].
    ScopedVisitor(LibraryElementImpl definingLibrary, Source source,
        TypeProviderImpl typeProvider, AnalysisErrorListener errorListener,
        {Scope? nameScope})
        : nameScope = nameScope ?? LibraryScope(definingLibrary),
          super(definingLibrary, source, typeProvider, errorListener);
  
    /// Return the implicit label scope in which the current node is being
    /// resolved.
  