docs: public Service retrieve(final RequestContext context) {
          val request = WebUtils.getHttpServletRequestFromExternalWebflowContext(context);
  
          val wCtx = request.getParameter(WCTX);
          LOGGER.debug("Parameter [{}] received: [{}]", WCTX, wCtx);
          if (StringUtils.isBlank(wCtx)) {
              LOGGER.error("No [{}] parameter is found", WCTX);
              throw new IllegalArgumentException("No " + WCTX + " parameter is found");
          }
  
          val configuration = configurations.stream()
              .filter(c -> c.getId().equalsIgnoreCase(wCtx))
              .findFirst()
              .orElse(null);
          val cookieGen = configuration.getCookieGenerator();
          val value = cookieGen.retrieveCookieValue(request);
          if (StringUtils.isBlank(value)) {
              LOGGER.error("No cookie value could be retrieved to determine the state of the delegated authentication session");
              throw new IllegalArgumentException("No cookie could be found to determine session state");
          }
          val blob = EncodingUtils.hexDecode(value);
          val session = serializer.from(blob);
          request.setAttribute(this.themeParamName, session.get(this.themeParamName));
          request.setAttribute(this.localParamName, session.get(this.localParamName));
          request.setAttribute(CasProtocolConstants.PARAMETER_METHOD, session.get(CasProtocolConstants.PARAMETER_METHOD));
  
          val serviceKey = CasProtocolConstants.PARAMETER_SERVICE + '-' + wCtx;
          val service = (Service) session.get(serviceKey);
          LOGGER.debug("Located service [{}] from session cookie", service);
          WebUtils.putServiceIntoFlowScope(context, service);
          return service;
      }