/// <summary>
        /// add a <see cref="PropertiesOverride"/> to the reslover, consider this as an alternative
        /// to Converters
        /// </summary>
        /// <param name="override">the override to add</param>
        public virtual void AddPropertyOverride(PropertiesOverride @override)
        {
            LinkedList <PropertiesOverride> overrides = null;

            if (!_propertiesOverride.TryGetValue(@override.Type, out overrides))
            {
                overrides = new LinkedList <PropertiesOverride>();
                _propertiesOverride.Add(@override.Type, overrides);
            }
            overrides.AddLast(@override);
        }
        /// <summary>
        /// create an instance of the contract resolver to handle Counch DB documents
        /// </summary>
        public DocumentContractResolver(IIdAccessor idAccessor, IRevisionAccessor revisionAccessor) : base()
        {
            _baseOverride = new BaseOverride(idAccessor, revisionAccessor);

            var naming = new LocalCamelCaseNamingStrategy
            {
                OverrideSpecifiedNames = true,
                ProcessDictionaryKeys  = true
            };

            NamingStrategy = naming;
        }