anchor.diff:      if not <| File.Exists param.File then
           failwithf "No such file: %s" param.File
   
  +    if not (String.IsNullOrEmpty param.Dsym) then
  +        if not (param.Dsym.EndsWith(".dsym.zip", StringComparison.InvariantCultureIgnoreCase) 
  +        || param.Dsym.Equals("mapping.txt", StringComparison.InvariantCultureIgnoreCase)) then
  +            failwith "DSYM files should only be: IOS: *.dsym.zip  Android: mapping.txt"
  +
  +        if param.File.EndsWith(".ipa") 
  +        && not (param.Dsym.EndsWith(".dsym.zip", StringComparison.InvariantCultureIgnoreCase)) then
  +            failwith "DSYM for an .ipa file can only only be: *.dsym.zip"
  +
  +        if param.File.EndsWith(".apk") 
  +        && not (param.Dsym.Equals("mapping.txt", StringComparison.InvariantCultureIgnoreCase)) then
  +            failwith "DSYM for an .apk file can only only be: mapping.txt"
  +
       param
   
   /// [omit]
  
positive.code: }
  
  /// The HockeyApp parameter type
  type HockeyAppUploadParams = {
      /// (Required) API token
      ApiToken: string
  
negative.code: open Newtonsoft.Json
  
  /// The release type of the app
  type ReleaseType = 
      | Beta = 0 
      | Store = 1 
      | Alpha = 2 
      | Enterprise = 3
  
  /// The notification options
  type NotifyOption = 
      | None = 0 
      | CanInstallApp = 1 
      | All = 2
  
  /// The note types
  type NoteType = 
      | Textile = 0 
      | Markdown = 1
  
  /// The mandatory options
  type MandatoryOption = 
      | NotMandatory = 0 
      | Mandatory = 1
  
  /// HockeyApp's success response
  type HockeyResponse = {
  