anchor.diff:        if (serializedExecutable.isFactory) {
           EntityRef redirectedConstructor =
               serializedExecutable.redirectedConstructor;
  -        _ReferenceInfo info = referenceInfos[redirectedConstructor.reference];
  +        _ReferenceInfo info = getReferenceInfo(redirectedConstructor.reference);
           List<EntityRef> typeArguments = redirectedConstructor.typeArguments;
           currentConstructor.redirectedConstructor = _createConstructorElement(
               _createConstructorDefiningType(info, typeArguments), info);
  
positive.code:   }
  
    /**
     * Get the type parameter from the surrounding scope whose De Bruijn index is
     * [index].
     */
    DartType getTypeParameterFromScope(int index) {
      for (int i = currentTypeParameters.length - 1; i >= 0; i--) {
        List<TypeParameterElement> paramsAtThisNestingLevel =
            currentTypeParameters[i];
        int numParamsAtThisNestingLevel = paramsAtThisNestingLevel.length;
        if (index <= numParamsAtThisNestingLevel) {
          return paramsAtThisNestingLevel[numParamsAtThisNestingLevel - index]
              .type;
        }
        index -= numParamsAtThisNestingLevel;
      }
      throw new StateError('Type parameter not found');
    }
  
    /**
     * Populate [referenceInfos] with the correct information for the current
     * compilation unit.
     */
    void populateReferenceInfos() {
      int numLinkedReferences = linkedUnit.references.length;
      int numUnlinkedReferences = unlinkedUnit.references.length;
      referenceInfos = new List<_ReferenceInfo>(numLinkedReferences);
      for (int i = 0; i < numLinkedReferences; i++) {
        LinkedReference linkedReference = linkedUnit.references[i];
        String name;
        int containingReference;
        if (i < numUnlinkedReferences) {
          name = unlinkedUnit.references[i].name;
          containingReference = unlinkedUnit.references[i].prefixReference;
        } else {
          name = linkedUnit.references[i].name;
          containingReference = linkedUnit.references[i].containingReference;
        }
        _ReferenceInfo enclosingInfo =
            containingReference != 0 ? referenceInfos[containingReference] : null;
        Element element;
        DartType type;
        int numTypeParameters = linkedReference.numTypeParameters;
  
negative.code:       linkedTypeMap[t.slot] = t;
      }
      constCycles = linkedUnit.constCycles.toSet();
      numLinkedReferences = linkedUnit.references.length;
      numUnlinkedReferences = unlinkedUnit.references.length;
      referenceInfos = new List<_ReferenceInfo>(numLinkedReferences);
    }
  
    SummaryResynthesizer get summaryResynthesizer =>
  