private void BracketHelper( Stack <IPrecedenceMember> precedenceStack, Queue <IEquationMember> outputQueue, Stack <Function> functionStack, Bracket bracket) { if (bracket.Equals(Bracket.LeftBracket)) { precedenceStack.Push(bracket); } else if (precedenceStack.Count == 0) { throw new ArgumentException(); } else if (bracket.Equals(Bracket.RightBracket)) { while (!precedenceStack.Peek().Equals(Bracket.LeftBracket)) { if (precedenceStack.Count < 1) { throw new ArgumentException("Unbalanced parentheses"); } outputQueue.Enqueue(precedenceStack.Pop()); } precedenceStack.Pop(); } else { throw new NotImplementedException(); } if (precedenceStack.Count() > 0 && precedenceStack.Peek() is Function) { functionStack.Pop(); } }