/// <summary>
		/// Creates embeddable instance of document changes
		/// </summary>
		/// <param name="database">Database name is ignored in embeddable document store</param>
		protected override IDatabaseChanges CreateDatabaseChanges(string database)
		{
			IDatabaseChanges result = null;
			result = new EmbeddableDatabaseChanges(this, () => result = null, ((EmbeddedDatabaseCommands)  DatabaseCommands).TryResolveConflictByUsingRegisteredListeners);
			return result;
		}
		/// <summary>
		/// Subscribe to change notifications from the server
		/// </summary>
		public override IDatabaseChanges Changes(string database = null)
		{
			if(string.IsNullOrEmpty(Url) == false)
				return base.Changes(database);

			if(database != null)
				throw new NotSupportedException("Embedded document store does not support multi tenancy");

			if(databaseChanges == null)
			{
				lock(this)
				{
					Thread.MemoryBarrier();
					if(databaseChanges == null)
						databaseChanges = new EmbeddableDatabaseChanges(this, () => databaseChanges = null);
				}
			}
			return databaseChanges;
		}
		/// <summary>
		/// Creates embeddable instance of document changes
		/// </summary>
		/// <param name="database">Database name is ignored in embeddable document store</param>
		protected override IDatabaseChanges CreateDatabaseChanges(string database)
		{
			IDatabaseChanges result = null;
			result = new EmbeddableDatabaseChanges(this, () => result = null);
			return result;
		}