public virtual object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) {
			Debug.Assert((queryExpressionLetClause != null));
			Debug.Assert((queryExpressionLetClause.Expression != null));
			return queryExpressionLetClause.Expression.AcceptVisitor(this, data);
		}
		public virtual object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) {
			throw new global::System.NotImplementedException("QueryExpressionLetClause");
		}
		public virtual object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) {
			Debug.Assert((queryExpressionLetClause != null));
			Debug.Assert((queryExpressionLetClause.Expression != null));
			nodeStack.Push(queryExpressionLetClause.Expression);
			queryExpressionLetClause.Expression.AcceptVisitor(this, data);
			queryExpressionLetClause.Expression = ((Expression)(nodeStack.Pop()));
			return null;
		}
		public override object VisitQueryExpressionLetClause(QueryExpressionLetClause letClause, object data)
		{
			AddVariable(null, letClause.Identifier,
			            letClause.StartLocation, CurrentEndLocation,
			            false, false, letClause.Expression, null, false);
			return base.VisitQueryExpressionLetClause(letClause, data);
		}
		public sealed override object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) {
			this.BeginVisit(queryExpressionLetClause);
			object result = this.TrackedVisitQueryExpressionLetClause(queryExpressionLetClause, data);
			this.EndVisit(queryExpressionLetClause);
			return result;
		}
		public virtual object TrackedVisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) {
			return base.VisitQueryExpressionLetClause(queryExpressionLetClause, data);
		}