/// <summary>
        /// Remove the given literal prefix
        /// </summary>
        /// <param name="literalPrefix">The custom name of the literal prefix</param>
        /// <returns>'true' if the literal prefix is successfully found and removed; otherwise, 'false'.</returns>
        /// <exception cref="ArgumentNullException">Argument is null or empty</exception>
        public static bool RemoveCustomLiteralPrefix(string literalPrefix)
        {
            // Arguments validation
            ExceptionUtils.CheckArgumentStringNotNullOrEmpty(literalPrefix, "literalPrefix");

            UriParserHelper.ValidatePrefixLiteral(literalPrefix);

            // Try to remove the custom uri literal prefix from cache
            lock (Locker)
            {
                return(CustomLiteralPrefixesOfEdmTypes.Remove(literalPrefix));
            }
        }
        /// <summary>
        /// Add a literal prefix for the given EdmType.
        /// </summary>
        /// <example>filter=MyProperty eq MyCustomLiteral'VALUE'.
        /// "MyCustomLiteral" is the literal prefix and the <paramref name="literalEdmTypeReference"/> is the type of the "VALUE".</example>
        /// <param name="literalPrefix">The custom name of the literal prefix</param>
        /// <param name="literalEdmTypeReference">The edm type of the custom literal</param>
        /// <exception cref="ArgumentNullException">Arguments are null or empty</exception>
        /// <exception cref="ArgumentException">The given literal prefix is not valid</exception>
        /// <exception cref="ODataException">The given literal prefix already exists</exception>
        public static void AddCustomLiteralPrefix(string literalPrefix, IEdmTypeReference literalEdmTypeReference)
        {
            // Arguments validation
            ExceptionUtils.CheckArgumentNotNull(literalEdmTypeReference, "literalEdmTypeReference");

            ExceptionUtils.CheckArgumentStringNotNullOrEmpty(literalPrefix, "literalPrefix");

            UriParserHelper.ValidatePrefixLiteral(literalPrefix);

            // Try to add the custom uri literal to cache
            lock (Locker)
            {
                // Check if literal does already exists
                if (CustomLiteralPrefixesOfEdmTypes.ContainsKey(literalPrefix))
                {
                    throw new ODataException(ODataErrorStrings.CustomUriTypePrefixLiterals_AddCustomUriTypePrefixLiteralAlreadyExists(literalPrefix));
                }

                CustomLiteralPrefixesOfEdmTypes.Add(literalPrefix, literalEdmTypeReference);
            }
        }