anchor.diff:        // Update the type arguments inplace on the [arguments] node.
         if (node.redirectedConstructor.type.typeArguments != null) {
           ast.InterfaceType type =
  -            scope.buildType(node.redirectedConstructor.type.type);
  +            classScope.buildType(node.redirectedConstructor.type.type);
           var targetClass = scope.getClassReference(element.enclosingElement);
           if (targetClass.typeParameters.length != arguments.types.length) {
             return scope.emitInvalidConstant();
  
positive.code:   ClassBodyBuilder(
        ReferenceLevelLoader loader, ast.Class currentClass, this.element)
        : this.currentClass = currentClass,
          scope = new ExpressionScope(loader, currentClass.enclosingLibrary);
  
    void build(CompilationUnitMember node) {
      if (node == null) {
  
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
  