public override IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) { IMethodReturn result = null; Action <string, bool> logCall = (prefix, includeArguments) => LogInfoAsync(Builder.Build(input, result, includeArguments)); using (Hole.OfTry(() => _provider, i => i.Increase(), i => i.Decrease())) using (Hole.OfTryFinal(() => logCall, log => log(IndentString + "Begin ", IncludesArguments), log => log(IndentString + "End ", false))) return(result = getNext()(input, getNext)); }