#!/usr/bin/ruby

class T(value) {
    method display {
        say value;
    }
}

class S(value) < T {
    method display {
        say value;
    }
}

var obj1 = T("T");
var obj2 = S("S");
var obj3 = obj2.dclone;         # make a deep clone of obj2

obj2.value = "foo";             # change the value of obj2

assert_eq(obj1.value, "T");
assert_eq(obj2.value, "foo");
assert_eq(obj3.value, "S");

obj1.display;
obj2.display;
obj3.display;