anchor.diff:      /// from an untyped AST for the purposes of block structure.
       [<RequireQualifiedAccess>]
       module private Range =
  -        let inline union (r1:range) (r2:range) =
  -            let startPos =
  -                if r1.StartLine <= r2.StartLine
  -                 && r1.StartColumn <= r2.StartColumn then r1.Start else r2.Start
  -            let endPos =
  -                if r1.EndLine >= r2.EndLine
  -                 && r1.EndColumn >= r2.EndColumn then r1.End else r2.End
  -            mkFileIndexRange r1.FileIndex startPos endPos
   
           let unionOpts (r1:range option) (r2:range option) =
               match r1 , r2 with
               | None, None -> None
               | Some r, None -> Some r
               | None , Some r -> Some r
  -            | Some r1, Some r2 -> union r1 r2|> Some
  +            | Some r1, Some r2 -> unionRanges r1 r2 |> Some
   
           /// Create a range starting at the end of r1 and finishing at the end of r2
  -        let inline endToEnd (r1: range) (r2: range) = mkFileIndexRange r1.FileIndex r1.End   r2.End
  +        let inline endToEnd (r1: range) (r2: range) = mkFileIndexRange r1.FileIndex r1.End r2.End
   
           /// Create a range starting at the end of r1 and finishing at the start of r2
           let inline endToStart (r1: range) (r2: range) = mkFileIndexRange r1.FileIndex r1.End r2.Start
  
positive.code: 
      let private parseModuleOrNamespace (SynModuleOrNamespace.SynModuleOrNamespace (longId,_,isModule,decls,_,attribs,_,r)) =
          seq {
              match longId with
              | [] -> ()
              | _ ->
                  yield! parseAttributes attribs
                  let idRange = longIdentRange longId
                  let fullrange = Range.startToEnd idRange r  
                  let collapse = Range.endToEnd idRange r 
                  if isModule then
                      yield! rcheck Scope.Module Collapse.Below fullrange collapse
                  //else
                  //    //yield! rcheck Scope.Namespace Collapse.Below (Range.modEnd -1 fullrange) (Range.modEnd -1 collapse)
                  //    yield! rcheck Scope.Namespace Collapse.Below (fullrange) (collapse)
  
                  yield! collectHashDirectives decls
                  yield! collectOpens decls
                  yield! Seq.collect parseDeclaration decls
          }
  
      type private LineNum = int
  
negative.code:                         // This is not the best way to establish the position of `else`
                          // the AST doesn't provide an easy way to find the position of the keyword
                          // as such `else` will be left out of block structuring and outlining until a
                          // a suitable approach is determined
                          yield! parseExpr elseExpr
                  | None -> ()
              | SynExpr.While (_,_,e,r) ->
  