anchor.diff:    void _addClassTypeVariablesIfNeeded(ir.Member constructor) {
       var enclosing = constructor.enclosingClass;
       if (backend.rtiNeed.classNeedsRti(astAdapter.getElement(enclosing))) {
  -      ClassElement clsElement =
  -          astAdapter.getElement(constructor).enclosingElement;
         enclosing.typeParameters.forEach((ir.TypeParameter typeParameter) {
           var typeParamElement = astAdapter.getElement(typeParameter);
           HParameterValue param =
               addParameter(typeParamElement, commonMasks.nonNullType);
           // This is a little bit wacky (and n^2) until we make the localsHandler
           // take Kernel DartTypes instead of just the AST DartTypes.
  -        var typeVariableType = clsElement.typeVariables.firstWhere(
  -            (ResolutionTypeVariableType i) => i.name == typeParameter.name);
  +        var typeVariableType = astAdapter
  +            .getElement(enclosing)
  +            .typeVariables
  +            .firstWhere(
  +                (ResolutionTypeVariableType i) => i.name == typeParameter.name);
           localsHandler.directLocals[
               localsHandler.getTypeVariableAsLocal(typeVariableType)] = param;
         });
  
positive.code: 
      ir.Class cls = constructor.enclosingClass;
  
      if (backend.rtiNeed.classNeedsRti(astAdapter.getElement(cls))) {
        List<HInstruction> typeInputs = <HInstruction>[];
        type.typeArguments.forEach((ResolutionDartType argument) {
          typeInputs
  
negative.code:         // TODO(efortuna): Do we need to check mixin classes as well?
          if (procedure.name.name == Identifiers.noSuchMethod_ &&
              Selectors.noSuchMethod_
                  .signatureApplies(astAdapter.getMethod(procedure))) {
            noSuchMethod = procedure;
          }
        }
  