Singleton

class Singleton(name) {
    static instance

    method new(name) {
        instance := Singleton.bless(Hash(:name => name))
    }
    method new {
        Singleton.new(nil)
    }
}

var s1 = Singleton('foo')
say s1.name                 #=> 'foo'
say s1.object_id            #=> '30424504'

var s2 = Singleton()
say s2.name                 #=> 'foo'
say s2.object_id            #=> '30424504'

s2.name = 'bar'             # change name in s2
say s1.name                 #=> 'bar'