This tests the pass by name some more, seeing if we can assign to a complete reference that we pass in (bangstartII) or, for the truly insane pass in a reference that a property is assumed within (BangstartII) Note that you wont see anything rendered, but SetBangStart will output to stdout #macro( bangstart $a) #set( $a.BangStart = 4 ) #end #macro( bangstartII $a) #set( $a = 5 ) #end #macro( bar $b ) $b.bang() #end #bangstart( $provider ) #bangstartII( $provider.BangStart )