anchor.diff:  
   ==== 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| -> ....
  -
  -#...
  +An other special call syntax, for which the `&` prefix is mandatory, is when a macro last parameter is a block.
  +In that case, the block can be provided inside curly braces but *outside* the calling parenthesis.
  +The last macro argument will therefore be a `gololang.ir.Block`.
  +
  +For instance, given:
  +[source,golo]
  +----
  +macro mymacro = |value, block| -> &quote {
  +  if args: get(0) == $(value) {
  +    $(block)
  +  }
  +}
   
   function main = |args| {
   
  
positive.code: }
  
  &mymacro {
  function bar = |a, b| -> a + b
  
  struct Foo = {x}
  }
  ----
  
  
negative.code: 
  [source,golo]
  ----
  macro example = |intConstant, funDeclaration| {
    if intConstant: value() > 40 {
      funDeclaration: getBlock(): prependStatement(call("println"): withArgs(intConstant))
    }
    return funDeclaration
  }
  ----
  
  will be called as
  [source,golo]
  ----
  &example(42) {
  function add = |a, b| -> a + b
  }
  
  &example(1) {
  function double = |a| -> 2 * a
  }
  ----
  
  Here the macro arguments will be a `gololang.ir.ConstantStatement` with `42` and `1` as values respectively, and a `gololang.ir.GoloFunction` representing `add` and `double` functions respectively.
  The previous code will be expanded as
  [source,golo]
  ----
  function add = |a, b| {
    println(42)
    return a + b
  }
  
  function double = |a| -> 2 * a
  ----
  
  A macro can also be applied to several top-level elements:
  