code: public static Runnable wrap(Runnable runnable) {
  		String suffix = Log.suffix.get();
  		// t.getCause() is atop t, see Log.concat() for more details
  		Throwable t = new Throwable(Log.throwable.get());
  		return () -> {
  			threadNum.incrementAndGet();
  			Log.suffix.set(suffix);
  			Log.throwable.set(t);
  			try {
  				runnable.run();
  			} catch (Error | RuntimeException e) {
  				Log.e(e);
  			} finally {
  				Log.throwable.remove();
  				Log.suffix.remove();
  				threadNum.decrementAndGet();
  			}
  		};
  	}
docs: Wrap a {@link Runnable} in order to:
  <ul>
  <li>Make the logging suffix in <b>branch thread</b> (callee thread)
  the same as <b>trunk thread</b> (caller thread)</li>
  <li>Make the logging stack trace in <b>branch thread</b>
  concatenating with <b>trunk thread</b></li>
  <li>Count number of <b>branch thread</b>s</li>
  </ul>
  
  @see Log#suffix
  @see Log#throwable