anchor.diff:              let posGeq p1 p2 =
                   posEq p1 p2 || posGt p1 p2
   
  -            let inside (docloc:Mono.TextEditor.DocumentLocation) (start, finish) =
  +            let isInside (docloc:Editor.DocumentLocation) (start, finish) =
                   let cursor = (docloc.Column, docloc.Line)
                   posGeq cursor start && posGeq finish cursor
   
               let toplevel = ast.GetNavigationItems()
   
               let topLevelTypesInsideCursor =
  -                toplevel |> Array.filter (fun tl -> let m = tl.Declaration.Range in inside loc ((m.StartColumn, m.StartLine),(m.EndColumn, m.EndLine)))
  -                         |> Array.sortBy(fun xs -> xs.Declaration.Range.StartLine)
  +                toplevel
  +                |> Array.filter (fun tl -> let range = tl.Declaration.Range
  +                                           isInside loc ((range.StartColumn, range.StartLine),(range.EndColumn, range.EndLine)))
  +                |> Array.sortBy(fun xs -> xs.Declaration.Range.StartLine)
   
               let newPath = ResizeArray<_>()
               for top in topLevelTypesInsideCursor do
  
positive.code: 
          member x.ActivateItem(n) =
              let node = memberList.[n]
              let extEditor = ext.Document.GetContent<IExtensibleTextEditor>()
              if extEditor <> null then
                  let (scol,sline) = node.Range.StartColumn, node.Range.StartLine
                  extEditor.SetCaretTo(max 1 sline, max 1 scol, true)
  
          member x.GetMarkup(n) =
              let node = memberList.[n]
  
negative.code:             if topLevelTypesInsideCursor.Length > 0 then
                  let lastToplevel = topLevelTypesInsideCursor.Last()
                  //only first child found is returned, could there be multiple children found?
                  let child =
                      lastToplevel.Nested
                      |> Array.tryFind (fun tl -> let range = tl.Range
                                                  isInside loc ((range.StartColumn, range.StartLine),(range.EndColumn, range.EndLine)))
                  let multichild =
                      lastToplevel.Nested
                      |> Array.filter (fun tl -> let range = tl.Range
                                                 isInside loc ((range.StartColumn, range.StartLine),(range.EndColumn, range.EndLine)))
  
                  Debug.Assert( multichild.Length <= 1, String.Format("{0} children found please investigate!", multichild.Length))
                  match child with
  