public void dispose() {
    if (cache != null) {
      cache.dispose();
      cache = null;
    }

    super.dispose();
  }
  protected final C getDSLAMProviderContextImpl(DSLAMProviderRequest request) // yes, final!
      throws IOException {
    C res = null;

    {
      if (request != null) {
        String key = request.getTarget();

        res = cache.get(key, request);
      }
    }

    return res;
  }