code: public TCert getNextTCert(List<String> attrs) {
          if (!isEnrolled()) {
              throw new RuntimeException(String.format("user '%s' is not enrolled", this.getName()));
          }
          String key = getAttrsKey(attrs);
  
          logger.debug(String.format("Member.getNextTCert: key=%s", key));
          TCertGetter tcertGetter = this.tcertGetterMap.get(key);
          if (tcertGetter == null) {
              logger.debug(String.format("Member.getNextTCert: key=%s, creating new getter", key));
              tcertGetter = new TCertGetter(this, attrs, key);
              this.tcertGetterMap.put(key, tcertGetter);
          }
          return tcertGetter.getNextTCert();
      }
docs: Get the next available transaction certificate with the appropriate attributes.