anchor.diff:  
       type ILLocalBuilder(i: int) =
           member __.LocalIndex = i
  +    
  +    [<RequireQualifiedAccess>]
  +    type ILExceptionClauseBuilder =
  +        | Finally of ILCodeLabel
  +        | Fault of ILCodeLabel
  +        | FilterCatch of ILCodeLabel * (ILCodeLabel * ILCodeLabel)
  +        | TypeCatch of ILCodeLabel * ILType
  +
  +    type ILExceptionBlockBuilder(i: ILCodeLabel) =
  +        member __.StartIndex = i
  +        member val Clause : ILExceptionClauseBuilder option = None with get, set
   
       type ILGenerator(methodName) =
           let mutable locals =  ResizeArray<ILLocal>()
           let mutable instrs =  ResizeArray<ILInstr>()
  +        let mutable exceptions = ResizeArray<ILExceptionSpec>()
           let mutable labelCount =  0
           let mutable labels =  Dictionary<ILCodeLabel,int>()
  +        let mutable exceptionBlocks = Stack<ILExceptionBlockBuilder>()
   
           member __.Content = 
               { IsZeroInit = true
                 MaxStack = instrs.Count
                 Locals = locals.ToArray()
                 Code = 
  -                { Labels=labels
  -                  Instrs=instrs.ToArray()
  -                  Exceptions = [| |] // TODO
  +                { Labels = labels
  +                  Instrs = instrs.ToArray()
  +                  Exceptions = exceptions.ToArray()
                     Locals = [| |] (* TODO ILLocalDebugInfo *) }
                }
   
  
positive.code:             let local = { Type = ty; IsPinned = false; DebugInfo = None }
              locals.Add(local)
              ILLocalBuilder(idx)
  
          member __.DefineLabel() = labelCount <- labelCount + 1; labelCount
          member __.MarkLabel(label) = labels.[label] <- instrs.Count
  
negative.code:                 ilg.Emit(I_nop)
                  ilg.MarkLabel(endLabel)
  
              | TryWith(body, _filterVar, _filterBody, catchVar, catchBody) ->
  
                  let stres, ldres =
  