public override void Eval(EvaluatorState ev) { //Console.WriteLine(this.ToString()); // second operand (source) ev.GetVal(); // first operand (destination) IValue storeValue = ev.Stack.ReadTop(); ev.Stack.Pop(); // pop destination or index if (storeValue.TypeOf() == ValueTypeID.TYPE_STOREREF) { DoStoreOp((ValueStore)storeValue.GetObjectValue(), ev.RegR, variation); } else if (storeValue.TypeOf() == ValueTypeID.TYPE_TABLEDATAREF) { ValueTableItem vti = (ValueTableItem)storeValue.GetObjectValue(); if (ev.RegR.TypeOf() == ValueTypeID.TYPE_UNDEFINED) { ValueTable table = vti.Parent; table.Delete(vti.Key); } else { DoTableOp(vti, ev.RegR, variation); } } else { throw new SharpNektonException(new SharpNektonError(SharpNektonErrorID.E_EXPTYPESTOREREF)); } }