public static <T extends Runnable> T getPerRound(Class<T> type, Supplier<T> supplier) {
    EnvironmentState state = state();
    @Nullable T instance = state.afterRound.getInstance(type);
    if (instance == null) {
      state.afterRound.putInstance(type, instance = supplier.get());
    }
    return instance;
  }
Next iteration of the same flawed design in hopes to untangle it at least a bit.
generator/src/org/immutables/generator/EnvironmentState.java