code: public static Striped<Lock> lazyWeakLock(int stripes) {
      return lazy(
          stripes,
          new Supplier<Lock>() {
            @Override
            public Lock get() {
              return new ReentrantLock(false);
            }
          });
    }
docs: Creates a {@code Striped<Lock>} with lazily initialized, weakly referenced locks. Every lock is
  reentrant.
  
  @param stripes the minimum number of stripes (locks) required
  @return a new {@code Striped<Lock>}