protected SAMLBindingContext prepareBindingContext(final SAML2MessageContext context,
                                                       final MessageDecoder decoder,
                                                       final SAML2MessageContext decodedCtx) {
        val bindingContext = decoder.getMessageContext().getSubcontext(SAMLBindingContext.class);
        CommonHelper.assertNotNull("SAMLBindingContext", bindingContext);
        decodedCtx.getSAMLBindingContext().setBindingDescriptor(bindingContext.getBindingDescriptor());
        decodedCtx.getSAMLBindingContext().setBindingUri(bindingContext.getBindingUri());
        decodedCtx.getSAMLBindingContext().setHasBindingSignature(bindingContext.hasBindingSignature());
        decodedCtx.getSAMLBindingContext().setIntendedDestinationEndpointURIRequired(bindingContext
                .isIntendedDestinationEndpointURIRequired());
        val relayState = bindingContext.getRelayState();
        decodedCtx.getSAMLBindingContext().setRelayState(relayState);
        context.getSAMLBindingContext().setRelayState(relayState);
        return bindingContext;
    }
<p>prepareBindingContext.</p>

@param context a {@link SAML2MessageContext} object
@param decoder a {@link AbstractPac4jDecoder} object
@param decodedCtx a {@link SAML2MessageContext} object
@return a {@link SAMLBindingContext} object
pac4j-saml/src/main/java/org/pac4j/saml/credentials/extractor/SAML2CredentialsExtractor.java