proc main()
{
    var a = "hello";
    var b = @a;
    var c = oadl::protect(b);
    var d = oadl::perm(b);

    "Constant string a should not be transient but should be readonly\n";
    "a.transient(): ", a.transient(), '\n';
    "a.readonly(): ", a.readonly(), '\n';
    "A copy of a constant string is transient but not readonly\n";
    "b.transient(): ", b.transient(), '\n';
    "b.readonly(): ", b.readonly(), '\n';
    "Protecting a non-constant string is transient *and* readonly\n";
    "c.transient(): ", c.transient(), '\n';
    "c.readonly(): ", c.readonly(), '\n';
    "Promoting a non-constant string to perm makes it non-transient\n";
    "d.transient(): ", d.transient(), '\n';
    "d.readonly(): ", d.readonly(), '\n';
}