docs: public Mac acquire(String algorithm) {
          Mac result = null;
  
          Queue<Mac> pool = this.macPoolByAlgorithm.get(algorithm);
          if (pool != null) {
              result = pool.poll();
          }
  
          if (result != null) {
              // it has to be synchronized, for the case that some memory parts of Mac provider are changed,
              // but not yet visible for this thread
              synchronized (result) {
                  result.reset();
              }
              return result;
          }
  
          try {
              return Mac.getInstance(algorithm);
          } catch (NoSuchAlgorithmException e) {
              throw new IllegalArgumentException(String.format("NoSuchAlgorithm '%s':", algorithm), e);
          }
      }