anchor.diff:  [source,golo]
   ----
   @example(42)
  -function foo = |a, b| -> a + b
  +function add = |a, b| -> a + b
   
   @mymacro
  -function bar = |a, b| -> a + b
  +function mult = |a, b| -> a * b
   
   @mymacro
  -struct Foo = {x}
  +struct Point = {x, y}
   ----
   
   [WARNING]
  
positive.code: 
  ==== Calling macros with a block
  
  An other special call syntax, for which the `&` prefix is mandatory, is when a macro must be called with a complete block as last argument.
  
  For instance:
  [source,golo]
  ----
  macro mymacro = |value, block| -> ....
  
  #...
  
  function main = |args| {
  
  
negative.code: }
  ----
  
  the `value` argument is a `gololang.ir.ConstantStatement` representing `42` and the `block` argument is a `gololang.ir.Block` containing two nodes for the `println("hello")` statement and the `doSomething()` call.
  This call will be expanded as
  [source,golo]
  ----
  function main = |args| {
    if args: get(0) == 42 {
      println("hello")
      doSomething()
    }
  }
  ----
  
  
  See the <<sample_do_while,`do ... while`>> example below for an example of a macro using a block.
  
  
  