anchor.diff:  
       // Sort by name (which is unique and mostly stable) so that similar recipes
       // are grouped together.
  -    referenceSetsUsingProperties.sort((a, b) => a.name.compareTo(b.name));
  +    referenceSetsUsingProperties.sort((a, b) => a.name!.compareTo(b.name!));
   
       // We can generate a literal with calls to H.findType (minified to typically
       // e.g. H.xy) or cache H.findType in a local in a scope created by an IIFE.
       // Doing so saves 2-3 bytes per entry, but with an overhead of 30+ bytes for
       // the IIFE.  So it is smaller to use the IIFE only for over 10 or so types.
       const minUseIIFE = 10;
  -    String helperLocal =
  +    final helperLocal =
           referenceSetsUsingProperties.length < minUseIIFE ? null : 'findType';
   
       List<js.Property> properties = [];
       for (_ReferenceSet referenceSet in referenceSetsUsingProperties) {
         TypeRecipe recipe = referenceSet.recipe;
  -      var propertyName = js.string(referenceSet.propertyName);
  +      final propertyName = js.string(referenceSet.propertyName!);
         properties
             .add(js.Property(propertyName, loadTypeCall(recipe, helperLocal)));
         var access = js.js('#.#', [typesHolderLocalName, propertyName]);
  
positive.code:         referencesByFrequency[index].propertyName = name;
        } else {
          var refSet = referencesByFrequency[index];
          refSet.propertyName = name + '_' + refSet.name;
        }
      }
  
  
negative.code: 
    @override
    void visitTypeVariableType(covariant TypeVariableType type, DartType parent) {
      _identifier(type.element.typeDeclaration!.name!);
      _identifier(type.element.name!);
    }
  
    @override
  