public override object VisitLocalVariableDeclaration (LocalVariableDeclaration localVariableDeclaration, object data)
			{
				//				Console.WriteLine ("LocalVariableDeclaration: " + localVariableDeclaration.StartLocation.ToString () + " - " + localVariableDeclaration.EndLocation.ToString ());
				localVariableDeclaration.TypeReference.AcceptVisitor (this, data);
				foreach (VariableDeclaration o in localVariableDeclaration.Variables) {
					if (o.Name == ((IntegrateTemporaryVariableVisitorOptions)data).GetName ()) {
						IntegrateTemporaryVariableVisitorOptions options = (IntegrateTemporaryVariableVisitorOptions)data;
						options.Initializer = localVariableDeclaration.GetVariableDeclaration(((LocalVariable)options.Options.SelectedItem).Name).Initializer;
						if (localVariableDeclaration.Variables.Count == 1) {
							TextReplaceChange change = new TextReplaceChange ();
							change.Description = string.Format (GettextCatalog.GetString ("Deleting local variable declaration {0}"), options.GetName ());
							change.FileName = options.Options.Document.FileName;

							change.Offset = options.Options.Document.Editor.Document.LocationToOffset (localVariableDeclaration.StartLocation.Line + ((LocalVariable)options.Options.SelectedItem).DeclaringMember.BodyRegion.Start.Line, localVariableDeclaration.StartLocation.Column);
							int end = options.Options.Document.Editor.Document.LocationToOffset (localVariableDeclaration.EndLocation.Line + ((LocalVariable)options.Options.SelectedItem).DeclaringMember.BodyRegion.Start.Line, localVariableDeclaration.EndLocation.Column);

							change.RemovedChars = end - change.Offset;
							change.InsertedText = "";
							((IntegrateTemporaryVariableVisitorOptions)data).Changes.Add (change);
						} else {
							TextReplaceChange change = new TextReplaceChange ();
							change.Description = string.Format (GettextCatalog.GetString ("Deleting local variable declaration {0}"), options.GetName ());
							change.FileName = options.Options.Document.FileName;

							change.Offset = options.Options.Document.Editor.Document.LocationToOffset (localVariableDeclaration.StartLocation.Line + ((LocalVariable)options.Options.SelectedItem).DeclaringMember.BodyRegion.Start.Line, localVariableDeclaration.StartLocation.Column);
							int end = options.Options.Document.Editor.Document.LocationToOffset (localVariableDeclaration.EndLocation.Line + ((LocalVariable)options.Options.SelectedItem).DeclaringMember.BodyRegion.Start.Line, localVariableDeclaration.EndLocation.Column);

							change.RemovedChars = end - change.Offset;
							localVariableDeclaration.Variables.Remove (localVariableDeclaration.GetVariableDeclaration (options.GetName ()));
							INRefactoryASTProvider provider = options.Options.GetASTProvider ();
							change.InsertedText = options.Options.GetWhitespaces (change.Offset) + provider.OutputNode (options.Options.Dom, localVariableDeclaration);
							((IntegrateTemporaryVariableVisitorOptions)data).Changes.Add (change);
						}
					} else {
						o.AcceptVisitor (this, data);
					}
				}
				return null;
			}
			public override object VisitLocalVariableDeclaration (LocalVariableDeclaration localVariableDeclaration, object data)
			{
				//				Console.WriteLine ("LocalVariableDeclaration: " + localVariableDeclaration.StartLocation.ToString () + " - " + localVariableDeclaration.EndLocation.ToString ());
				localVariableDeclaration.TypeReference.AcceptVisitor (this, data);
				foreach (VariableDeclaration o in localVariableDeclaration.Variables) {
					if (o.Name == ((IntegrateTemporaryVariableVisitorOptions)data).GetName ()) {
						IntegrateTemporaryVariableVisitorOptions options = (IntegrateTemporaryVariableVisitorOptions)data;
						options.Initializer = localVariableDeclaration.GetVariableDeclaration(((LocalVariable)options.Options.SelectedItem).Name).Initializer;
						if (localVariableDeclaration.Variables.Count == 1) {
							TextReplaceChange change = new TextReplaceChange ();
							change.Description = string.Format (GettextCatalog.GetString ("Deleting local variable declaration {0}"), options.GetName ());
							change.FileName = options.Options.Document.FileName;
							int lineNumber = localVariableDeclaration.StartLocation.Line + ((LocalVariable)options.Options.SelectedItem).DeclaringMember.BodyRegion.Start.Line;
							change.Offset = options.Options.Document.Editor.Document.LocationToOffset (lineNumber, localVariableDeclaration.StartLocation.Column);
							int end = options.Options.Document.Editor.Document.LocationToOffset (localVariableDeclaration.EndLocation.Line + ((LocalVariable)options.Options.SelectedItem).DeclaringMember.BodyRegion.Start.Line, localVariableDeclaration.EndLocation.Column);
							change.RemovedChars = end - change.Offset;
							// check if whole line can be removed.
							var line = options.Options.Document.Editor.GetLine (lineNumber);
							if (line.GetIndentation (options.Options.Document.Editor.Document).Length == localVariableDeclaration.StartLocation.Column - 1) {
								bool isEmpty = true;
								for (int i = end; i < line.EndOffset; i++) {
									if (!char.IsWhiteSpace (options.Options.Document.Editor.GetCharAt (i))) {
										isEmpty = false;
										break;
									}
								}
								if (isEmpty) {
									change.Offset = line.Offset;
									change.RemovedChars = line.Length;
								}
							}
							change.InsertedText = "";
							((IntegrateTemporaryVariableVisitorOptions)data).Changes.Add (change);
						} else {
							TextReplaceChange change = new TextReplaceChange ();
							change.Description = string.Format (GettextCatalog.GetString ("Deleting local variable declaration {0}"), options.GetName ());
							change.FileName = options.Options.Document.FileName;

							change.Offset = options.Options.Document.Editor.Document.LocationToOffset (localVariableDeclaration.StartLocation.Line + ((LocalVariable)options.Options.SelectedItem).DeclaringMember.BodyRegion.Start.Line, localVariableDeclaration.StartLocation.Column);
							int end = options.Options.Document.Editor.Document.LocationToOffset (localVariableDeclaration.EndLocation.Line + ((LocalVariable)options.Options.SelectedItem).DeclaringMember.BodyRegion.Start.Line, localVariableDeclaration.EndLocation.Column);

							change.RemovedChars = end - change.Offset;
							localVariableDeclaration.Variables.Remove (localVariableDeclaration.GetVariableDeclaration (options.GetName ()));
							INRefactoryASTProvider provider = options.Options.GetASTProvider ();
							change.InsertedText = options.Options.GetWhitespaces (change.Offset) + provider.OutputNode (options.Options.Dom, localVariableDeclaration);
							((IntegrateTemporaryVariableVisitorOptions)data).Changes.Add (change);
						}
					} else {
						o.AcceptVisitor (this, data);
					}
				}
				return null;
			}