[:!let modifier [expr {[:pinfo get -default 0 bundle call-protected]?"protected":""}]] [:!let prefix [expr {[[:get_owning_partof] pinfo get -default 0 bundle ismetaclass] ? "cls": "obj"}]] [:!let depr [expr {[:!get @deprecated]?"deprecated":""}]]

[$owning_attribute print_name -status]

$prefix ${:name} ?value?
[:? {[$owning_attribute pinfo exists validation]} { [$owning_attribute pinfo get validation] }] [$owning_attribute as_text]
[:? {[$owning_attribute eval {set :@deprecated}]} {
Deprecated
}]
Parameters:
[:!let spec "optional"] [:?objvar $owning_attribute @spec { [:!let spec [join [list $spec {*}[$owning_attribute @spec]] ,]] }] value : $spec If provided, the attribute ${:name} is set to value. If omitted, the current attribute value is returned.
[:?objvar $owning_attribute @spec {
Returns: [:? {[$owning_attribute @spec] ne ""} {[$owning_attribute @spec]}]
}]
Implementation details:
[:pinfo get bundle type]
attribute getter/setter
[:? {[:pinfo get -default 0 bundle redefine-protected]} {
Protection:
redefine-protected
}] [:? {[$owning_attribute pinfo get -default 0 bundle incremental]} {

${:name} add

$prefix ${:name} add value
Parameters:
value [:?objvar $owning_attribute @spec { [:? {[$owning_attribute @spec] ne ""} { :  [$owning_attribute @spec]}] }]

${:name} delete

obj ${:name} delete value
Parameters:
value [:?objvar $owning_attribute @spec { [:? {[$owning_attribute @spec] ne ""} { :  [$owning_attribute @spec]}] }]
}]