With current implementation, this is not easy to fix. Since a call implies the top precedence. Parentheses are needed when you have something like this in TEST1: infix "@wimp", hamster (n: INTEGER): TEST1 is do print (@weasel Current); print (turkey); print (Current @wimp 29); print (hamster (47).hamster (47)); end without parentheses, the flat view will look like: infix "@hamster" (n: INTEGER_32): TEST1 -- (from TEST1) do print (Current.weasel) print (@turkey Current) print (Current.wimp (29)) print (Current @hamster (47).hamster (47)) end The last line is not valid code. Now suspend until we have a better solution.