public static SecurityHeaderElementInferenceEngine GetInferenceEngine(SecurityHeaderLayout layout)
        {
            SecurityHeaderLayoutHelper.Validate(layout);
            switch (layout)
            {
            case SecurityHeaderLayout.Strict:
                return(StrictModeSecurityHeaderElementInferenceEngine.Instance);

            default:
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(layout)));
            }
        }
        public static SecurityHeaderElementInferenceEngine GetInferenceEngine(SecurityHeaderLayout layout)
        {
            SecurityHeaderLayoutHelper.Validate(layout);
            switch (layout)
            {
            case SecurityHeaderLayout.Strict:
                return(StrictModeSecurityHeaderElementInferenceEngine.Instance);

            case SecurityHeaderLayout.Lax:
                return(LaxModeSecurityHeaderElementInferenceEngine.Instance);

            case SecurityHeaderLayout.LaxTimestampFirst:
                return(LaxTimestampFirstModeSecurityHeaderElementInferenceEngine.Instance);

            case SecurityHeaderLayout.LaxTimestampLast:
                return(LaxTimestampLastModeSecurityHeaderElementInferenceEngine.Instance);
            }
            throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("layout"));
        }