What happened?
I discovered a bug in ByteBuddyDoFnInvokerFactory where the cache key strategy causes collisions for the same DoFn class used with different generic types.
Currently, the cache is keyed solely on the DoFn class. This causes incorrect invoker reuse when generics are erased. For example, MyDoFn and MyDoFn share the same cache key (MyDoFn.class). As a result, the invoker generated for String is returned for Integer.
Steps to reproduce
I reproduced this behavior with the following unit test in DoFnInvokersTest.java. The test fails with an AssertionError, proving that the generated invoker classes are identical despite the different generic types.
