anchor.diff:      | TypedExpr(Downcast, e, t) -> genExpr e -- " :?> " +> genType false t
       | TypedExpr(Upcast, e, t) -> genExpr e -- " :> " +> genType false t
       | TypedExpr(Typed, e, t) -> genExpr e +> sepColon +> genType false t
  -    | Tuple es -> atCurrentColumn (colAutoNlnSkip0 sepComma es genExpr)
  +    | Tuple es -> atCurrentColumn (colAutoNlnSkip0 sepComma es noIndentBreakNln)
       | ArrayOrList(isArray, xs, isSimple) -> 
           let sep = ifElse isSimple sepSemi sepSemiNln
           ifElse isArray (sepOpenA +> atCurrentColumn (colAutoNlnSkip0 sep xs genExpr) +> sepCloseA) 
  
positive.code: /// Preserve a break even if the expression is a one-liner
  and preserveBreakNln e ctx = breakNln (checkPreserveBreakForExpr e ctx) e ctx
  
  and genTyparList tps = 
      ifElse (List.atMostOne tps) (col wordOr tps genTypar) (sepOpenT +> col wordOr tps genTypar +> sepCloseT)
  
  
negative.code: and genRecordFieldName(RecordFieldName(s, eo)) =
      opt sepNone eo (fun e -> !- s +> sepEq +> preserveBreakNln e)
  
  and genExpr = function
      | Paren e -> sepOpenT +> genExpr e +> sepCloseT
      | SingleExpr(kind, e) -> str kind +> genExpr e
      | ConstExpr(c) -> genConst c
  