anchor.diff:          match ps with
           | [] ->  aoc -- s +> tpsoc
           | [PatSeq(PatTuple, [p1; p2])] when s = "(::)" -> aoc +> genPat p1 -- " :: " +> genPat p2
  -        | [p] -> aoc -- s +> tpsoc +> ifElse (hasParenInPat p) (ifElse (addSpaceBeforeParensFunDef p) sepBeforeArg sepNone) sepSpace +> genPat p
  +        | [p] -> aoc -- s +> tpsoc +> ifElse (hasParenInPat p) (ifElse (addSpaceBeforeParensInFunDef s p) sepBeforeArg sepNone) sepSpace +> genPat p
           // This pattern is potentially long
           | ps -> atCurrentColumn (aoc -- s +> tpsoc +> sepSpace +> colAutoNlnSkip0 sepSpace ps genPat)
   
  
positive.code:             | TCSimple TCInterface -> true
              | _ -> false
  
          typeName +> optPre sepBeforeArg sepNone impCtor (genMemberDefn inter) +> sepEq 
          +> indent +> sepNln +> genTypeDefKind tdk
          +> indent +> genMemberDefnList inter others +> unindent
          ++ "end" +> unindent
  
negative.code: let sortAndDedup by l =
      l |> Seq.distinctBy by |> Seq.sortBy by |> List.ofSeq
  
  let rec addSpaceBeforeParensInFunCall functionOrMethod arg = 
      match functionOrMethod, arg with
      | _, ConstExpr(Const "()") -> false
      | SynExpr.LongIdent(_, LongIdentWithDots s, _, _), _ ->
          let parts = s.Split '.'
          not <| Char.IsUpper parts.[parts.Length - 1].[0]
      | SynExpr.Ident(Ident s), _ -> not <| Char.IsUpper s.[0]
      | SynExpr.TypeApp(e, _, _, _, _, _, _), _ -> addSpaceBeforeParensInFunCall e arg
      | _ -> true
  
  let addSpaceBeforeParensInFunDef functionOrMethod args =
      match functionOrMethod, args with
      | _, PatParen (PatConst SynConst.Unit) -> false
      | "new", _ -> false
      | (s:string), _ -> 
          let parts = s.Split '.'
          not <| Char.IsUpper parts.[parts.Length - 1].[0]
      | _ -> true
  
  let rec genParsedInput = function
  