public MathExpression CreateExpression(StaticStack<MathOperation> expression) { expression.ResetTop(); StaticStack<MathOperation> Expression = expression; //the new MathExpression gets the original Dictionary<string, float> var = m_Variables; //and we keep a copy so they dont intefere with eachother m_Variables = new Dictionary<string, float>(var); return new MathExpression(Expression, var, "created"); }