public void EvaluateSuperNew()
{
IClass testclass = this.machine.CreateClass("Test1", null, "x", string.Empty);
this.machine.SetCurrentEnvironmentObject("Test1", testclass);
IClass testclass2 = this.machine.CreateClass("Test2", testclass, "y", string.Empty);
this.machine.SetCurrentEnvironmentObject("Test2", testclass2);
VmCompiler compiler = new VmCompiler();
testclass.DefineInstanceMethod(compiler.CompileInstanceMethod("x: value x := value", testclass));
testclass2.DefineInstanceMethod(compiler.CompileInstanceMethod("y: value y := value", testclass2));
testclass.DefineClassMethod(compiler.CompileClassMethod("new ^self basicNew x: 10", testclass));
testclass2.DefineClassMethod(compiler.CompileClassMethod("new ^super new y: 20", testclass2));
var result = this.Evaluate("Test2 new");
Assert.IsNotNull(result);
Assert.IsInstanceOfType(result, typeof(IObject));
var iobj = (IObject)result;
Assert.AreEqual(10, iobj[0]);
Assert.AreEqual(20, iobj[1]);
}