(* Example calls for interp *) interp(Num(0), [], NumV(0), NumV(0));; (* should be NumV(0) *) interp(New("simple", []), [Class("simple", "object", [], [])], NumV(0), NumV(0));; (* should be ObjV(Class("simple", "object", [], []), []) *) interp(Get(New("simple", [Num(12)]), "z"), [Class("simple", "object", [Field("z")], [])], NumV(0), NumV(0));; (* should be NumV(12) *) interp(DSend(New("simple", [Num(12)]), "add", Num(17)), [Class("simple", "object", [Field("z")], [Method("add", Add(Get(This, "z"), Arg))])], NumV(0), NumV(0));; (* should be NumV(29) *)