anchor.diff:      | ModuleAbbrevL(xs, ys) 
       | OpenL(xs, ys) 
       | OneLinerLetL(xs, ys) ->
  -        let xs = sortOpenDeclarations xs (|Open|_|)
  +        let xs = xs |> sortAndDedup ((|Open|_|) >> Option.get)
           match ys with
           | [] -> col sepNln xs genModuleDecl
           | _ -> col sepNln xs genModuleDecl +> rep 2 sepNln +> genModuleDeclList ys
   
       | MultilineModuleDeclL(xs, ys) ->
  -        let xs = sortOpenDeclarations xs (|Open|_|)
           match ys with
           | [] -> col (rep 2 sepNln) xs genModuleDecl
           | _ -> col (rep 2 sepNln) xs genModuleDecl +> rep 2 sepNln +> genModuleDeclList ys
  
positive.code:     | md ->
          failwithf "Unexpected module declaration: %O" md
  
  and genSigModuleDecl = function
      | SigException(ex) ->
          genSigException ex
  
negative.code:     +> genModuleDeclList mds
  
  and genSigModuleOrNamespace(SigModuleOrNamespace(ats, px, ao, s, mds, isModule)) =
      genPreXmlDoc px
      +> colPost sepNln sepNln ats genAttribute
      +> ifElse (s = "Tmp") sepNone (ifElse isModule (!- "module ") (!- "namespace ")
      +> opt sepSpace ao genAccess -- s +> rep 2 sepNln)
      +> genSigModuleDeclList mds
  
  and genModuleDeclList = function
      | [x] -> genModuleDecl x
  