private static Dictionary<object, AudioMixerController.ConnectionNode> BuildTemporaryGraph(List<AudioMixerGroupController> allGroups, AudioMixerGroupController groupWhoseEffectIsChanged, AudioMixerEffectController effectWhoseTargetIsChanged, AudioMixerEffectController targetToTest, AudioMixerGroupController modifiedGroup1, List<AudioMixerEffectController> modifiedGroupEffects1, AudioMixerGroupController modifiedGroup2, List<AudioMixerEffectController> modifiedGroupEffects2)
 {
   Dictionary<object, AudioMixerController.ConnectionNode> dictionary = new Dictionary<object, AudioMixerController.ConnectionNode>();
   using (List<AudioMixerGroupController>.Enumerator enumerator1 = allGroups.GetEnumerator())
   {
     while (enumerator1.MoveNext())
     {
       AudioMixerGroupController current1 = enumerator1.Current;
       dictionary[(object) current1] = new AudioMixerController.ConnectionNode()
       {
         group = current1,
         effect = (AudioMixerEffectController) null
       };
       object index = (object) current1;
       using (List<AudioMixerEffectController>.Enumerator enumerator2 = (!((UnityEngine.Object) current1 == (UnityEngine.Object) modifiedGroup1) ? (!((UnityEngine.Object) current1 == (UnityEngine.Object) modifiedGroup2) ? ((IEnumerable<AudioMixerEffectController>) current1.effects).ToList<AudioMixerEffectController>() : modifiedGroupEffects2) : modifiedGroupEffects1).GetEnumerator())
       {
         while (enumerator2.MoveNext())
         {
           AudioMixerEffectController current2 = enumerator2.Current;
           if (!dictionary.ContainsKey((object) current2))
             dictionary[(object) current2] = new AudioMixerController.ConnectionNode();
           dictionary[(object) current2].group = current1;
           dictionary[(object) current2].effect = current2;
           if (!dictionary[index].targets.Contains((object) current2))
             dictionary[index].targets.Add((object) current2);
           AudioMixerEffectController effectController = !((UnityEngine.Object) current1 == (UnityEngine.Object) groupWhoseEffectIsChanged) || !((UnityEngine.Object) effectWhoseTargetIsChanged == (UnityEngine.Object) current2) ? current2.sendTarget : targetToTest;
           if ((UnityEngine.Object) effectController != (UnityEngine.Object) null)
           {
             if (!dictionary.ContainsKey((object) effectController))
             {
               dictionary[(object) effectController] = new AudioMixerController.ConnectionNode();
               dictionary[(object) effectController].group = current1;
               dictionary[(object) effectController].effect = effectController;
             }
             if (!dictionary[(object) current2].targets.Contains((object) effectController))
               dictionary[(object) current2].targets.Add((object) effectController);
           }
           index = (object) current2;
         }
       }
       dictionary[(object) current1].groupTail = index;
     }
   }
   return dictionary;
 }
		private static Dictionary<object, AudioMixerController.ConnectionNode> BuildTemporaryGraph(List<AudioMixerGroupController> allGroups, AudioMixerGroupController groupWhoseEffectIsChanged, AudioMixerEffectController effectWhoseTargetIsChanged, AudioMixerEffectController targetToTest, AudioMixerGroupController modifiedGroup1, List<AudioMixerEffectController> modifiedGroupEffects1, AudioMixerGroupController modifiedGroup2, List<AudioMixerEffectController> modifiedGroupEffects2)
		{
			Dictionary<object, AudioMixerController.ConnectionNode> dictionary = new Dictionary<object, AudioMixerController.ConnectionNode>();
			foreach (AudioMixerGroupController current in allGroups)
			{
				dictionary[current] = new AudioMixerController.ConnectionNode
				{
					group = current,
					effect = null
				};
				object obj = current;
				List<AudioMixerEffectController> list = (!(current == modifiedGroup1)) ? ((!(current == modifiedGroup2)) ? current.effects.ToList<AudioMixerEffectController>() : modifiedGroupEffects2) : modifiedGroupEffects1;
				foreach (AudioMixerEffectController current2 in list)
				{
					if (!dictionary.ContainsKey(current2))
					{
						dictionary[current2] = new AudioMixerController.ConnectionNode();
					}
					dictionary[current2].group = current;
					dictionary[current2].effect = current2;
					if (!dictionary[obj].targets.Contains(current2))
					{
						dictionary[obj].targets.Add(current2);
					}
					AudioMixerEffectController audioMixerEffectController = (!(current == groupWhoseEffectIsChanged) || !(effectWhoseTargetIsChanged == current2)) ? current2.sendTarget : targetToTest;
					if (audioMixerEffectController != null)
					{
						if (!dictionary.ContainsKey(audioMixerEffectController))
						{
							dictionary[audioMixerEffectController] = new AudioMixerController.ConnectionNode();
							dictionary[audioMixerEffectController].group = current;
							dictionary[audioMixerEffectController].effect = audioMixerEffectController;
						}
						if (!dictionary[current2].targets.Contains(audioMixerEffectController))
						{
							dictionary[current2].targets.Add(audioMixerEffectController);
						}
					}
					obj = current2;
				}
				dictionary[current].groupTail = obj;
			}
			return dictionary;
		}