public object CreateDocumentValue(PersistentMemberMap memberMapBase, object value)
        {
            if (memberMapBase == null)
                throw new ArgumentNullException("memberMapBase");

            this.value = value;
            memberMapBase.Accept(this);
            return this.value;
        }
        /// <summary>
        /// Gets the next member map.
        /// </summary>
        /// <param name="currentMemberMap">The current member map.</param>
        /// <param name="nextMemberName">Name of the next member.</param>
        /// <returns></returns>
        private PersistentMemberMap GetNextMemberMap(PersistentMemberMap currentMemberMap, string nextMemberName)
        {
            var memberMap = currentMemberMap as ValueTypeMemberMap;
            if (memberMap != null && memberMap.ValueType is NestedClassValueType)
            {
                var nestedClassMap = ((NestedClassValueType)memberMap.ValueType).NestedClassMap;
                currentMemberMap = nestedClassMap.GetMemberMapBaseFromMemberName(nextMemberName) as PersistentMemberMap;
                if (currentMemberMap == null)
                    throw new InvalidOperationException("Only persistent member maps are allowed.");
                this.Key += currentMemberMap.Key;
                return currentMemberMap;
            }
            else if (memberMap != null && memberMap.ValueType is ManyToOneValueType)
            {
                var refType = ((ManyToOneValueType)memberMap.ValueType).ReferenceType;
                var classMap = this.mappingStore.GetClassMapFor(refType);
                if (classMap.IdMap.MemberName == nextMemberName)
                {
                    this.Key += ".$id";
                    return classMap.IdMap;
                }
                else
                    throw new NotSupportedException("Id is the only supported condition across a reference.");
            }

            throw new NotSupportedException(string.Format("The value type {0} must occur last.", currentMemberMap));
        }