anchor.diff:  module testdeco
   
   function log = |msg| {
  -    return |fun| {
  -        return |args...| {
  -            println(msg)
  -            return fun: invokeWithArguments(args)
  -        }
  +  return |fun| {
  +    return |args...| {
  +      println(msg)
  +      return fun: invokeWithArguments(args)
       }
  +  }
   }
   
   @log("calling foo")
   function foo = |a| {
  -    println("foo got a " + a)
  +  println("foo got a " + a)
   }
   
   @log("I'am a bar")
   function bar = |a| -> 2*a
   
   function main = |args| {
  -    foo("bar")
  -    println(bar(21))
  +  foo("bar")
  +  println(bar(21))
   }
   ----
   
  
positive.code: import gololang.Decorators
  
  let myContext = defaultContext():
                      define("entry", |this, args| {
                          println("hello")
                          return args
                      }):
                      define("exit", |this, result| { 
                          require(result >= 3, "wrong value")
                          println("goobye")
                          return result
                      }):
                      define("catcher", |this, e| {
                          println("Caught " + e)
                          throw e
                      }):
                      define("finallizer", |this| {println("do some cleanup")})
  
  
  @withContext(myContext)
  function foo = |a, b| {
      println("Hard computation")
      return a + b
  }
  
  function main = |args| {
      println(foo(1,2))
      println("====")
      println(decorators.withContext(myContext)(|a| -> 2*a)(3))
      println("====")
      try {
          println(foo(1, 1))
      } catch (e) { }
  }
  ----
  
  
negative.code: [source,golo]
  ----
  function deco1 = |fun| {
    return |args...| {
      print("deco1 + ")
      return fun: invokeWithArguments(args)
    }
  }
  ----
  
  