docs: protected <E> E read(Supplier<E> sup) {
          try {
              this.lock.readLock().lock();
              return sup.get();
          } finally {
              this.lock.readLock().unlock();
          }
      }