anchor.diff:      return typeProjection.dartType;
     }
   
  -  String get mapTypes {
  -    final keyType =
  -        _mapTypeFromTypeIdentifier(returnType.typeIdentifier.typeArg!);
  -    final valueType =
  -        _mapTypeFromTypeIdentifier(returnType.typeIdentifier.typeArg!.typeArg!);
  -    return '$keyType, $valueType?';
  +  /// The type arguments of `IMap` and `IMapView`, as represented in the
  +  /// [returnType]'s [TypeIdentifier] (e.g. `String, Object?`, `String, String?`).
  +  String get mapTypeArgs {
  +    final keyTypeArg =
  +        mapTypeArgFromTypeIdentifier(returnType.typeIdentifier.typeArg!);
  +    final valueTypeArg = mapTypeArgFromTypeIdentifier(
  +        returnType.typeIdentifier.typeArg!.typeArg!);
  +    return '$keyTypeArg, $valueTypeArg?';
     }
   
  -  String get mapArgs {
  +  /// The constructor arguments passed to the constructors of `IMap` and
  +  /// `IMapView`.
  +  String get mapConstructorArgs {
       final typeProjection =
           TypeProjection(returnType.typeIdentifier.typeArg!.typeArg!);
  +
  +    // If the type argument is a WinRT Class or Interface (e.g. IJsonValue),
  +    // the constructor of that class must be passed in the 'creator' parameter
  +    // so that the 'IMap' and 'IMapView' implementations can instantiate the
  +    // object
       final creator = typeProjection.isWinRT &&
               (typeProjection.isClass || typeProjection.isInterface)
           ? '${lastComponent(typeProjection.typeIdentifier.name)}.fromRawPointer'
           : null;
  +
  +    // Similar to the 'creator' parameter above, the constructor of the enum
  +    // class must be passed in the 'enumCreator' parameter
       final enumCreator = typeProjection.isWinRTEnum
           ? '${lastComponent(typeProjection.typeIdentifier.name)}.from'
           : null;
  
positive.code: 
  import '../../../../generator.dart';
  
  mixin MapProjection on WinRTMethodProjection {
    String _mapTypeFromTypeIdentifier(TypeIdentifier typeIdentifier) {
      final typeProjection = TypeProjection(typeIdentifier);
      if (typeProjection.isObject) return 'Object';
      if (typeProjection.isString) return 'String';
  
negative.code: }
  
  class WinRTGetPropertyReturningMapViewProjection
      extends WinRTGetPropertyProjection with _MapProjection {
    WinRTGetPropertyReturningMapViewProjection(super.method, super.vtableOffset);
  
    @override
    String toString() => '''
        Map<$mapTypeArgs> get $exposedMethodName {
          final retValuePtr = calloc<COMObject>();
  
          ${ffiCall()}
  
          try {
            return IMapView<$mapTypeArgs>.fromRawPointer(retValuePtr$mapConstructorArgs).toMap();
          } finally {
            free(retValuePtr);
          }
  