3시간동안 해맸는데 답이 안나와서 물어볼게

Map<Foo<?>, List<Bar<?>>>

이런 타입의 변수를 만들고 싶은데

이 때 한쌍의 Entry(Pair) 사이에는 같은 제네릭을 보장하고 싶어

Foo<String>이면 List<Bar<String>>을 저장하고

Foo<Integer>면 List<Bar<Integer>>를 저장하는 방식이야


또한 get으로 읽었을 때도 키값으로 준 제네릭에따라

리턴값 타입이 ?이 아니라 그 제네릭 타입인 걸 보장하고 싶어

어떻게 해야할까???