anchor.diff:    void endExtensionDeclaration(Token extensionKeyword, Token? typeKeyword,
         Token onKeyword, Token? showKeyword, Token? hideKeyword, Token token) {
       if (typeKeyword != null && !enableExtensionTypes) {
  -      var feature = ExperimentalFeatures.extension_types;
  -      handleRecoverableError(
  -          templateExperimentNotEnabled.withArguments(
  -            feature.enableString,
  -            _versionAsString(ExperimentStatus.currentVersion),
  -          ),
  -          typeKeyword,
  -          typeKeyword);
  -    }
  -
  -    if ((showKeyword != null || hideKeyword != null) && !enableExtensionTypes) {
  -      var feature = ExperimentalFeatures.extension_types;
  -      handleRecoverableError(
  -          templateExperimentNotEnabled.withArguments(
  -            feature.enableString,
  -            _versionAsString(ExperimentStatus.currentVersion),
  -          ),
  -          (showKeyword ?? hideKeyword)!,
  -          (showKeyword ?? hideKeyword)!);
  +      _reportFeatureNotEnabled(
  +        feature: ExperimentalFeatures.extension_types,
  +        startToken: typeKeyword,
  +      );
  +    }
  +
  +    final showOrHideKeyword = showKeyword ?? hideKeyword;
  +    if (showOrHideKeyword != null && !enableExtensionTypes) {
  +      _reportFeatureNotEnabled(
  +        feature: ExperimentalFeatures.extension_types,
  +        startToken: showOrHideKeyword,
  +      );
       }
   
       ShowClause? showClause = pop(NullValue.ShowClause) as ShowClause?;
  
positive.code:         ),
        );
        if (!enableTripleShift && operatorToken.type == TokenType.GT_GT_GT) {
          var feature = ExperimentalFeatures.triple_shift;
          handleRecoverableError(
            templateExperimentNotEnabled.withArguments(
              feature.enableString,
              _versionAsString(ExperimentStatus.currentVersion),
            ),
            operatorToken,
            operatorToken,
          );
        }
      }
  
negative.code:     var typeArguments = pop() as TypeArgumentList;
      var receiver = pop() as Expression;
      if (!enableConstructorTearoffs) {
        _reportFeatureNotEnabled(
          feature: ExperimentalFeatures.constructor_tearoffs,
          startToken: typeArguments.leftBracket,
          endToken: typeArguments.rightBracket,
        );
      }
      push(ast.functionReference(
  