public static Expression Reduce(Expression expression, out IDictionary<string, string> primaryKeyNameByTablesWithReducedPrimaryKeyName)
		{
			var reducer = new SqliteAutoIncrementPrimaryKeyColumnReducer();

			primaryKeyNameByTablesWithReducedPrimaryKeyName = reducer.primaryKeyNameByTablesWithReducedPrimaryKeyName;

			return reducer.Visit(expression);
		}
        public static Expression Reduce(Expression expression, out IDictionary <string, string> primaryKeyNameByTablesWithReducedPrimaryKeyName)
        {
            var reducer = new SqliteAutoIncrementPrimaryKeyColumnReducer();

            primaryKeyNameByTablesWithReducedPrimaryKeyName = reducer.primaryKeyNameByTablesWithReducedPrimaryKeyName;

            return(reducer.Visit(expression));
        }
        protected override Expression PreProcess(Expression expression)
        {
            IDictionary <string, string> primaryKeyNameByTablesWithReducedPrimaryKeyName;

            expression = base.PreProcess(expression);
            expression = SqliteAutoIncrementPrimaryKeyColumnReducer.Reduce(expression, out primaryKeyNameByTablesWithReducedPrimaryKeyName);
            expression = SqliteForeignKeyConstraintReducer.Reduce(expression, primaryKeyNameByTablesWithReducedPrimaryKeyName);

            return(expression);
        }