It works like the Eiffel "once" keyword. The method decorated with the attribute will only run once. Subsequent calls will return a cached value. It is thread safe (it will only lock the first time it is called).
[once] def ComputeHash():
The hash will only be computer once.
It is not recommended that one uses this attribute
with methods that have parameters. I don't know
if that should be enforced.
Rodrigo: Notice that I added BooCodeBuilder.CreateConstructor(TypeMemberModifiers).