anchor.diff:                                             |> List.map (fun idents -> System.String.Join (".", idents))
                                              |> Set.ofList
                                     DeclRange = openStatementRange
  -                                  Range = 
  -                                    { Start = { Line = openStatementRange.StartLine; Col = openStatementRange.StartColumn }
  -                                      End = { Line = moduleRange.EndLine; Col = moduleRange.EndColumn }}} :: acc
  +                                  Range = (Range.mkRange openStatementRange.FileName openStatementRange.Start moduleRange.End) } :: acc 
                               | _ -> acc) [] 
                       openStatements @ acc
   
  
positive.code:     { Category: Category
        WordSpan: WordSpan }
  
  type private Point =
      { Line: int 
        Col: int }
  
  type private Range =
      { Start: Point
        End: Point }
  
  [<NoComparison>]
  type private OpenDeclaration =
      { Idents: Set<string>
        DeclRange: Range.range
        Range: Range }
  
  type private SymbolAccess =
      | FullName
  
negative.code:             |> Map.ofSeq
          | None -> Map.empty
  
      let qualifiedSymbols: (Range.range * (SymbolAccess * string)) [] =
          allSymbolsUses
          |> Array.map (fun (symbolUse, _) ->
              let r = symbolUse.RangeAlternate
              let fullName = symbolUse.Symbol.FullName
              r,
              match longIdentsByLine |> Map.tryFind r.StartLine with
              | Some idents ->
                  match idents |> Seq.tryFind (fun (identRange, _) -> 
  