| Index: lib/src/codegen/js_interop.dart | 
| diff --git a/lib/src/codegen/js_interop.dart b/lib/src/codegen/js_interop.dart | 
| index 777a0097bde7e47720d2dd05638683a0c11c2baf..470efed9574a6fa42777929b2a6a8355c44589f1 100644 | 
| --- a/lib/src/codegen/js_interop.dart | 
| +++ b/lib/src/codegen/js_interop.dart | 
| @@ -48,3 +48,13 @@ bool isJSExportNameAnnotation(DartObjectImpl value) { | 
|  | 
| bool isJsPeerInterface(DartObjectImpl value) => | 
| value.type.name == 'JsPeerInterface'; | 
| + | 
| +/// Whether this invocation represents a `genericTypeConstructor` intrinsic | 
| +/// call, meant to be used only inside `JS` templates. | 
| +/// | 
| +/// That intrinsic function is only to be used in JS expressions inside the SDK. | 
| +/// For instance `JS('', '#(type)', genericTypeConstructor(List))` will | 
| +/// generate `core.List$(type)`. | 
| +bool isGenericTypeConstructorIntrinsic(MethodInvocation i) => | 
| +    _isJsLibType('genericTypeConstructor', i.methodName?.bestElement) && | 
| +    i.argumentList.arguments.length == 1; | 
|  |