code: @Override
      public String loadKam(KamInfo ki, KamFilter kf)
              throws KamCacheServiceException {
  
          if (ki == null) {
              throw new InvalidArgument("KamInfo required");
          }
  
          String ret;
          Callable<String> callable;
          if (kf != null) {
              // Check the fltrdMap cache first
              FilteredKAMKey key = new FilteredKAMKey(ki, kf);
              read.lock();
              try {
                  ret = fltrdMap.get(key);
              } finally {
                  read.unlock();
              }
              if (ret != null) {
                  // Cache hit
                  return ret;
              }
              // Cache miss, create a callable to defer loading
              callable = new CacheCallable(ki, kf);
          } else {
              read.lock();
              try {
                  ret = unfltrdMap.get(ki);
              } finally {
                  read.unlock();
              }
              if (ret != null) {
                  // Cache hit
                  return ret;
              }
              // Cache miss, create a callable to defer loading
              callable = new CacheCallable(ki, null);
          }
  
          // Block, waiting for KAM to load
          try {
              ret = execSvc.submit(callable).get();
          } catch (ExecutionException e) {
              throw new KamCacheServiceException(e);
          } catch (InterruptedException e) {
              throw new KamCacheServiceException(e);
          }
          return ret;
      }
docs: {@inheritDoc}