I see that TREAT was not implemented in Oracle until release 2 of 9i - which is probably why the docs you have say it's not supported.
Playing a bit more, I see that functions which return values can be used with the dot notation:
i := TREAT(scribble(1) AS rectangle).getHeight(); -- this works
TREAT(scribble(1) AS rectangle).setHeight(50); -- this doesn't compile
I can't tell whether the function call does a copy, though I don't see why it would be different than what I had on the previous posts.