public static TSQLModel.SelectStatement EnsureSelectStatement(object expression)
        {
            if (expression == null)
            {
                throw new ArgumentNullException("expression");
            }

            var result = expression as TSQLModel.SelectStatement;

            if (result == null)
            {
                var selectStatement = expression as SQLModel.SelectStatement;
                if (selectStatement != null)
                {
                    result = new TSQLModel.SelectStatement();
                    if (selectStatement.Modifiers != null)
                    {
                        result.Modifiers = new Model.LanguageModifiers();
                        result.Modifiers.AddRange(selectStatement.Modifiers);
                    }
                    result.QueryExpression = selectStatement.QueryExpression;
                    result.OrderClause     = selectStatement.OrderClause;
                }

                if (result == null)
                {
                    var queryExpression = expression as SQLModel.QueryExpression;
                    if (queryExpression != null)
                    {
                        result = new TSQLModel.SelectStatement();
                        result.QueryExpression = queryExpression;
                    }

                    if (result == null)
                    {
                        var selectExpression = expression as SQLModel.SelectExpression;
                        if (selectExpression != null)
                        {
                            result = new TSQLModel.SelectStatement();
                            result.QueryExpression = new SQLModel.QueryExpression();
                            result.QueryExpression.SelectExpression = selectExpression;
                        }
                    }
                }
            }

            if (result == null)
            {
                throw new InvalidOperationException(String.Format("Could not promote expression of type {0} to a SelectStatement.", expression.GetType().Name));
            }

            return(result);
        }
		public static TSQLModel.SelectStatement EnsureSelectStatement(object expression)
		{
			if (expression == null)
			{
				throw new ArgumentNullException("expression");
			}

			var result = expression as TSQLModel.SelectStatement;

			if (result == null)
			{
				var selectStatement = expression as SQLModel.SelectStatement;
				if (selectStatement != null)
				{
					result = new TSQLModel.SelectStatement();
					if (selectStatement.Modifiers != null)
					{
						result.Modifiers = new Model.LanguageModifiers();
						result.Modifiers.AddRange(selectStatement.Modifiers);
					}
					result.QueryExpression = selectStatement.QueryExpression;
					result.OrderClause = selectStatement.OrderClause;
				}

				if (result == null)
				{
					var queryExpression = expression as SQLModel.QueryExpression;
					if (queryExpression != null)
					{
						result = new TSQLModel.SelectStatement();
						result.QueryExpression = queryExpression;
					}

					if (result == null)
					{
						var selectExpression = expression as SQLModel.SelectExpression;
						if (selectExpression != null)
						{
							result = new TSQLModel.SelectStatement();
							result.QueryExpression = new SQLModel.QueryExpression();
							result.QueryExpression.SelectExpression = selectExpression;
						}
					}
				}
			}

			if (result == null)
			{
				throw new InvalidOperationException(String.Format("Could not promote expression of type {0} to a SelectStatement.", expression.GetType().Name));
			}

			return result;
		}