anchor.diff:  
       (cursor, new CursorVisitor(visitChildren), childrenHandle |> GCHandle.ToIntPtr) |> libclang.visitChildren |> ignore
    
  -    let result = { 
  -        Kind = cursor |> getCursorKind
  -        Name = cursor |> getCursorSpelling |> extractString
  -        Children =  (childrenHandle.Target :?> list<ASTNode>)
  -    }
  +    let result = { (cursor |> buildNode) with Children = (childrenHandle.Target :?> list<ASTNode>) } 
  +    
   
       handle.Target <- match handle.Target with
                        | :? list<ASTNode> as siblings ->
  
positive.code: type ASTNode = {
      Kind: CursorKind
      Name: string
      Children: ASTNode list
  }
  
  let private buildNode kind name children = {
          Kind = kind
          Name = name
          Children = children
      }
  
  let private extractString (str: String) =
      let result = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(str.data)
      libclang.disposeString(str)
      result
  
  let rec private visitChildren (cursor: Cursor) (parent: Cursor) (clientData: ClientData): ChildVisitResult =
      let mutable handle = clientData |> GCHandle.FromIntPtr
  
negative.code:     
      childrenHandle.Free()
  
      ChildVisitResult.Continue