code: public I buildInvocation(Object protocolKey, I invocation)
      throws ConfigException
    {
      Objects.requireNonNull(invocation);
      
      invocation = buildInvocation(invocation);
  
      // XXX: see if can remove this, and rely on the invocation cache existing
      LruCache<Object,I> invocationCache = _invocationCache;
  
      if (invocationCache != null) {
        I oldInvocation;
        oldInvocation = invocationCache.get(protocolKey);
  
        // server/10r2
        if (oldInvocation != null && ! oldInvocation.isModified()) {
          return oldInvocation;
        }
  
        if (invocation.getURLLength() < _maxURLLength) {
          invocationCache.put(protocolKey, invocation);
        }
      }
  
      return invocation;
    }
docs: Builds the invocation, saving its value keyed by the protocol key.
  
  @param protocolKey protocol-specific key to save the invocation in
  @param invocation the invocation to build.