anchor.diff:        if (redirectedConstructor == null) {
           break;
         } else {
  -        ConstructorElement constructorBase = _getConstructorBase(constructor);
  +        ConstructorElement constructorBase = _getConstructorImpl(constructor);
           constructorsVisited.add(constructorBase);
           ConstructorElement redirectedConstructorBase =
  -            _getConstructorBase(redirectedConstructor);
  +            _getConstructorImpl(redirectedConstructor);
           if (constructorsVisited.contains(redirectedConstructorBase)) {
             // Cycle in redirecting factory constructors--this is not allowed
             // and is checked elsewhere--see
  
positive.code:   Object visitRedirectingConstructorInvocation(
        RedirectingConstructorInvocation node) {
      super.visitRedirectingConstructorInvocation(node);
      ConstructorElement target =
          ConstantEvaluationEngine._getConstructorBase(node.staticElement);
      if (target != null) {
        _callback(target);
      }
  
negative.code:       ConstructorElement constructor,
        ConstantVisitor constantVisitor,
        ErrorReporter errorReporter) {
      if (!_getConstructorImpl(constructor).isCycleFree) {
        // It's not safe to evaluate this constructor, so bail out.
        // TODO(paulberry): ensure that a reasonable error message is produced
        // in this case, as well as other cases involving constant expression
  