internal void SerializeState(Stream s)
{
CheckVmWithoutError ();
var ser = new Serialization.VmStateSerializer ();
var usedStack = this.stack.GetUsedStack ();
int stackIndex = ser.Serialize (usedStack);
int envIndex = ser.Serialize (this.currentEnvironment);
Serialization.Utils.WriteBytes (s, BitConverter.GetBytes (Shovel.Api.Version));
Serialization.Utils.WriteBytes (s, BitConverter.GetBytes (stackIndex));
Serialization.Utils.WriteBytes (s, BitConverter.GetBytes (envIndex));
Serialization.Utils.WriteBytes (s, BitConverter.GetBytes (this.programCounter));
Serialization.Utils.WriteBytes (s, Encoding.UTF8.GetBytes (Utils.GetBytecodeMd5 (this.bytecode)));
Serialization.Utils.WriteBytes (s, Encoding.UTF8.GetBytes (Utils.GetSourcesMd5 (this.bytecode)));
Serialization.Utils.WriteBytes (s, BitConverter.GetBytes (this.executedTicks));
Serialization.Utils.WriteBytes (s, BitConverter.GetBytes (this.usedCells));
ser.WriteToStream (s);
}