private void PopStackOperands(params VESType[] expectedTypes)
{
List<VESType> actualTypes = new List<VESType>();
for (int i = 0; i < expectedTypes.Length; i++)
actualTypes.Add(this.operands.Pop());
actualTypes.Reverse();
for (int i = 0; i < expectedTypes.Length; i++)
if ((actualTypes[i] & expectedTypes[i]) == 0)
throw new InvalidOperationException(string.Format("Expected argument #{0} to be: {1} but was: {2}", i + 1, expectedTypes[i], actualTypes[i]));
}