anchor.diff:      let tryGetCurrent = fun () -> !current
   
       let attributes = lazy(uci.GetCustomAttributes())
  -    let declaringTypeAttributes = lazy(uci.DeclaringType.GetCustomAttributes() |> Array.ofSeq)
  +    let declaringTypeAttributes = lazy(uci.DeclaringType.GetCustomAttributes(true))
   
       let isNoCommandLine = lazy(hasAttribute2<NoCommandLineAttribute> attributes.Value declaringTypeAttributes.Value)
       let isAppSettingsCSV = lazy(hasAttribute<ParseCSVAttribute> attributes.Value)
  
positive.code:     prefixString + defaultHelpParam
  
  /// construct a CLI param from UCI name
  let generateOptionName (uci : UnionCaseInfo) (attributes1: obj[]) (attributes2: Attribute[])=
      let prefixString =
          match tryGetAttribute2<CliPrefixAttribute> attributes1 attributes2 with
          | None -> CliPrefix.DoubleDash
          | Some pf -> pf.Prefix
  
  
negative.code: [<AutoOpen>]
  module private FastAttributes =
      let inline hasAttribute<'T when 'T :> Attribute> (attributes: obj[]) =
          attributes |> Array.exists (fun x -> x :? 'T)
  
      let inline hasAttribute2<'T when 'T :> Attribute> (attributes: obj[]) (declaringTypeAttributes: obj[]) =
          (hasAttribute<'T> attributes) || (hasAttribute<'T> declaringTypeAttributes)
  
      let inline tryGetAttribute<'T when 'T :> Attribute> (attributes: obj[]) =
          attributes |> Array.tryPick (function :? 'T as t -> Some t | _ -> None)
  
      let inline tryGetAttribute2<'T when 'T :> Attribute> (attributes: obj[]) (declaringTypeAttributes: obj[]) =
          match tryGetAttribute<'T> attributes with
          | Some _ as attr -> attr
          | None -> tryGetAttribute<'T> declaringTypeAttributes
  
  let defaultHelpParam = "help"
  let defaultHelpDescription = "display this list of options."
  