anchor.diff:          -- s +> sepOpenT +> col sepComma ps (genPat { astContext with IsCStylePattern = true }) +> sepCloseT
       // Add a new line after module-level let bindings
       | Let(b) ->
  -        genLetBinding astContext true "let " b
  +        genLetBinding { astContext with IsFirstChild = true } "let " b
       | LetRec(b::bs) -> 
  -        genLetBinding astContext true "let rec " b 
  -        +> colPre (rep 2 sepNln) (rep 2 sepNln) bs (genLetBinding astContext false "and ")
  +        genLetBinding { astContext with IsFirstChild = true } "let rec " b 
  +        +> colPre (rep 2 sepNln) (rep 2 sepNln) bs (genLetBinding { astContext with IsFirstChild = false } "and ")
   
       | ModuleAbbrev(s1, s2) ->
           !- "module " -- s1 +> sepEq -- s2
  
positive.code:     | e -> failwithf "Unexpected expression: %O" e
  
  and genLetOrUseList astContext = function
      | [p, x] -> genLetBinding astContext true p x
      | OneLinerLetOrUseL(xs, ys) ->
          match ys with
          | [] -> 
              col sepNln xs (fun (p, x) -> genLetBinding astContext (p <> "and ") p x)
          | _ -> 
              col sepNln xs (fun (p, x) -> genLetBinding astContext (p <> "and ") p x) 
              +> rep 2 sepNln +> genLetOrUseList astContext ys
  
      | MultilineLetOrUseL(xs, ys) ->
          match ys with
          | [] -> 
              col (rep 2 sepNln) xs (fun (p, x) -> genLetBinding astContext (p <> "and ") p x)
              // Add a trailing new line to separate these with the main expression
              +> sepNln 
          | _ -> 
              col (rep 2 sepNln) xs (fun (p, x) -> genLetBinding astContext (p <> "and ") p x) 
              +> rep 2 sepNln +> genLetOrUseList astContext ys
  
      | _ -> sepNone   
  
negative.code:     | SigSimple(TDSRUnion(ao', xs)) ->
          typeName +> sepEq 
          +> indent +> sepNln +> opt sepNln ao' genAccess 
          +> col sepNln xs (genUnionCase { astContext with HasVerticalBar = true })
          +> colPre sepNln sepNln ms (genMemberSig astContext)
          +> unindent
  
      | SigSimple(TDSRRecord(ao', fs)) ->
          typeName +> sepEq 
          +> indent +> sepNln +> opt sepNln ao' genAccess +> sepOpenS 
          +> atCurrentColumn (col sepSemiNln fs (genField astContext "")) +> sepCloseS
          +> colPre sepNln sepNln ms (genMemberSig astContext)
          +> unindent 
  
  