code: public static Striped<Semaphore> semaphore(int stripes, final int permits) {
      return custom(
          stripes,
          new Supplier<Semaphore>() {
            @Override
            public Semaphore get() {
              return new PaddedSemaphore(permits);
            }
          });
    }
docs: Creates a {@code Striped<Semaphore>} with eagerly initialized, strongly referenced semaphores,
  with the specified number of permits.
  
  @param stripes the minimum number of stripes (semaphores) required
  @param permits the number of permits in each semaphore
  @return a new {@code Striped<Semaphore>}