private string SwapEscaping(char[] arr) { //need to make sure we don't bubble escaping &\\\\ should become \\&\\ and not \\\\& var swaped = new HashSet <int>(); for (var i = 1; i < arr.Length; i++) { if (arr[i] == '\\' && RavenQuery.IsEscapedChar(arr[i - 1]) && swaped.Contains(arr[i - 1]) == false) { swaped.Add(i); arr[i] = arr[i - 1]; arr[i - 1] = '\\'; } } return(new string(arr)); }