code: @Weight(Weight.Unit.NORMAL)
    public static Runnable defer(@Nonnull final Runnable runnable) {
      assertNotNull(runnable);
      defer(new Deferred() {
        private static final long serialVersionUID = 2061489024868070733L;
        private final Runnable value = runnable;
  
        @Override
        public void executeDeferred() throws Exception {
          this.value.run();
        }
      });
      return runnable;
    }
docs: Defer execution of some runnable action.
  
  @param runnable some runnable action to be executed in future
  @return the same runnable object from arguments.
  @throws AssertionError if the runnable object is null