anchor.diff:    }
   }
   
  +/// A scope in which class type parameters are in scope, while not in scope
  +/// of a specific member.
  +class ClassScope extends ExpressionScope {
  +  @override
  +  bool get allowClassTypeParameters => true;
  +
  +  ClassScope(ReferenceLevelLoader loader, ast.Library library)
  +      : super(loader, library);
  +}
  +
   /// Translates expressions, statements, and other constructs into [ast] nodes.
   ///
   /// Naming convention:
  
positive.code:   ast.Class get currentClass => currentMember.enclosingClass;
  
    bool get allowThis => _memberHasThis(currentMember);
  
    /// Returns a string for debugging use, indicating the location of the member
    /// being built.
  
negative.code:       ConstructorElement element, ast.Arguments arguments) {
      ConstructorElement anchor = null;
      int anchorLifetime = 1;
      // Ensure class parameters are considered in scope when following
      // redirecting factories.
      var classScope = new ClassScope(scope.loader, scope.currentLibrary);
      while (true) {
        if (!element.isConst) {
          return scope
  