with surrounding parentheses around "complex" annotations, we have much more freedom to choose the first token: not only we can use binary operators (that are not also unary operators) like ":", ".", "*", "<", but we can also reuse other existing keywords such as:
(if _expression_) {}
which is another kind of annotation similar to some preprocessor condition applied to the unary _expression_ "{}" that follows it, possibly extended to:
(if expression1, else error) {}
which adds an "else" parameter to the "if" annotation, also as an annotation with parameter "error", so the "if" has two parameters: "expression1" and "else error"
This can be used for example to perform platform-specific optimizations:
(if target.platform~='i386', else asm 'pushf; pop ax') flags()
This means that the "flags()" _expression_ is annotated by a conditional "if" annotation that checks if the target.platform is 'i386' and replaces in that case the _expression_ by the assembly code, also given by another annotation, "asm" which takes in parameter a string that it will compile...
As well this can be used to add anotation for debuggers by inserting a "break" annotation taking in parameter some possible expressions useful for the debugger
(break) {}
(break"my breakpoint") {}