anchor.diff:          expect(injector.get(typedTokenOfDynamic), 1);
           expect(injector.get(typedTokenOfString), 2);
         });
  +
  +      test('should consider opaque tokens with nested types unique', () {
  +        expect(injector.get(typedTokenOfListDynamic), 3);
  +        expect(injector.get(typedTokenOfListString), 4);
  +      });
       });
     });
   }
  
positive.code: const typedTokenOfDynamic = const OpaqueToken('typedToken');
  const typedTokenOfString = const OpaqueToken<String>('typedToken');
  
  @Injector.generate(const [
    const Provider(ExampleService, useClass: ExampleService2),
    const Provider(stringToken, useValue: 'Hello World'),
  
negative.code:         expect(injector.get(typedTokenOfDynamic), 1);
          expect(injector.get(typedTokenOfString), 2);
        });
  
        test('should consider opaque tokens with different nested types', () {
          final injector = new Injector.slowReflective([
            const Provider(typedTokenOfListDynamic, useValue: 3),
            const Provider(typedTokenOfListString, useValue: 4),
          ]);
          expect(injector.get(typedTokenOfListDynamic), 3);
          expect(injector.get(typedTokenOfListString), 4);
        });
      });
  
      group('.generate', () {
  