OnTimerInvokers { public static <InputT, OutputT> OnTimerInvoker<InputT, OutputT> forTimer( DoFn<InputT, OutputT> fn, String timerId) { return ByteBuddyOnTimerInvokerFactory.only().forTimer(fn, timerId); }  static OnTimerInvoker<InputT, OutputT> forTimer(
      DoFn<InputT, OutputT> fn, String timerId); static OnTimerInvoker<InputT, OutputT> forTimerFamily(
      DoFn<InputT, OutputT> fn, String timerFamilyId);  }
@Test public void testStableName() { OnTimerInvoker<Void, Void> invoker = OnTimerInvokers.forTimer( new StableNameTestDoFn(), TimerDeclaration.PREFIX + StableNameTestDoFn.TIMER_ID); assertThat( invoker.getClass().getName(), equalTo( String.format( "%s$%s$%s$%s", StableNameTestDoFn.class.getName(), OnTimerInvoker.class.getSimpleName(), "tstimeridwithspecialChars" , "dHMtdGltZXItaWQud2l0aCBzcGVjaWFsQ2hhcnN7fQ" ))); }
@Test public void testStableName() { OnTimerInvoker<Void, Void> invoker = OnTimerInvokers.forTimer(new StableNameTestDoFn(), StableNameTestDoFn.TIMER_ID); assertThat( invoker.getClass().getName(), equalTo( String.format( "%s$%s$%s$%s", StableNameTestDoFn.class.getName(), OnTimerInvoker.class.getSimpleName(), "timeridwithspecialChars" , "dGltZXItaWQud2l0aCBzcGVjaWFsQ2hhcnN7fQ" ))); }