anchor.diff:                  let name = ps |> Seq.map (fun p -> "<" + p.Description + ">" ) |> String.concat " "
                   if isRest.Value then name + "..." else name
               | ListParam(_,p) -> "<" + p.Description + ">..."
  -            | _ -> raise <| new ArguException("internal error in argu parser representation " + (uci.ToString()) + ".")
  +            | _ -> arguExn "internal error in argu parser representation %O." uci
           | _ when Option.isSome appSettingsName.Value -> appSettingsName.Value.Value
  -        | _ -> raise <| new ArguException("parameter '" + (uci.ToString()) + "' needs to have at least one parse source."))
  +        | _ -> arguExn "parameter '%O' needs to have at least one parse source." uci)
   
       let fieldReader = Helpers.fieldReader uci
       let fieldCtor = Helpers.tupleConstructor types
  
positive.code:     let tryGetCurrent = fun () -> !current
  
      let attributes = lazy(uci.GetCustomAttributes())
      let declaringTypeAttributes = lazy(uci.DeclaringType.GetCustomAttributes() |> Array.ofSeq)
  
      let isNoCommandLine = lazy(hasAttribute2<NoCommandLineAttribute> attributes.Value declaringTypeAttributes.Value)
      let isAppSettingsCSV = lazy(hasAttribute<ParseCSVAttribute> attributes.Value)
  
negative.code:     prefixString + defaultHelpParam
  
  /// construct a CLI param from UCI name
  let generateOptionName (uci : UnionCaseInfo) (attributes: obj[]) (declaringTypeAttributes: obj[])=
      let prefixString =
          match tryGetAttribute2<CliPrefixAttribute> attributes declaringTypeAttributes with
          | None -> CliPrefix.DoubleDash
          | Some pf -> pf.Prefix
  
  