github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library@v0.2.0/GetOpt/GetOpt.go (about)

     1  // Package GetOpt
     2  // Dafny module GetOpt compiled into Go
     3  
     4  package GetOpt
     5  
     6  import (
     7  	os "os"
     8  
     9  	m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts"
    10  	m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals"
    11  	m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear"
    12  	m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod"
    13  	m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO"
    14  	m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions"
    15  	m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals"
    16  	m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings"
    17  	m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm"
    18  	m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_"
    19  	m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals"
    20  	m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear"
    21  	m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul"
    22  	m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals"
    23  	m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear"
    24  	m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power"
    25  	m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations"
    26  	m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq"
    27  	m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort"
    28  	m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting"
    29  	m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary"
    30  	m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop"
    31  	m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence"
    32  	m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String"
    33  	m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt"
    34  	m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams"
    35  	m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings"
    36  	m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_"
    37  	m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm"
    38  	m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm"
    39  	m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers"
    40  	m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_"
    41  	_dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny"
    42  )
    43  
    44  var _ = os.Args
    45  var _ _dafny.Dummy__
    46  var _ m__System.Dummy__
    47  var _ m_Wrappers.Dummy__
    48  var _ m_Relations.Dummy__
    49  var _ m_Seq_MergeSort.Dummy__
    50  var _ m__Math.Dummy__
    51  var _ m_Seq.Dummy__
    52  var _ m_BoundedInts.Dummy__
    53  var _ m__Unicode.Dummy__
    54  var _ m_Functions.Dummy__
    55  var _ m_Utf8EncodingForm.Dummy__
    56  var _ m_Utf16EncodingForm.Dummy__
    57  var _ m_UnicodeStrings.Dummy__
    58  var _ m_FileIO.Dummy__
    59  var _ m_GeneralInternals.Dummy__
    60  var _ m_MulInternalsNonlinear.Dummy__
    61  var _ m_MulInternals.Dummy__
    62  var _ m_Mul.Dummy__
    63  var _ m_ModInternalsNonlinear.Dummy__
    64  var _ m_DivInternalsNonlinear.Dummy__
    65  var _ m_ModInternals.Dummy__
    66  var _ m_DivInternals.Dummy__
    67  var _ m_DivMod.Dummy__
    68  var _ m_Power.Dummy__
    69  var _ m_Logarithm.Dummy__
    70  var _ m_StandardLibraryInterop.Dummy__
    71  var _ m_StandardLibrary_UInt.Dummy__
    72  var _ m_StandardLibrary_Sequence.Dummy__
    73  var _ m_StandardLibrary_String.Dummy__
    74  var _ m_StandardLibrary.Dummy__
    75  var _ m_Streams.Dummy__
    76  var _ m_Sorting.Dummy__
    77  var _ m_HexStrings.Dummy__
    78  
    79  type Dummy__ struct{}
    80  
    81  // Definition of class Default__
    82  type Default__ struct {
    83  	dummy byte
    84  }
    85  
    86  func New_Default___() *Default__ {
    87  	_this := Default__{}
    88  
    89  	return &_this
    90  }
    91  
    92  type CompanionStruct_Default___ struct {
    93  }
    94  
    95  var Companion_Default___ = CompanionStruct_Default___{}
    96  
    97  func (_this *Default__) Equals(other *Default__) bool {
    98  	return _this == other
    99  }
   100  
   101  func (_this *Default__) EqualsGeneric(x interface{}) bool {
   102  	other, ok := x.(*Default__)
   103  	return ok && _this.Equals(other)
   104  }
   105  
   106  func (*Default__) String() string {
   107  	return "GetOpt.Default__"
   108  }
   109  func (_this *Default__) ParentTraits_() []*_dafny.TraitID {
   110  	return [](*_dafny.TraitID){}
   111  }
   112  
   113  var _ _dafny.TraitOffspring = &Default__{}
   114  
   115  func (_static *CompanionStruct_Default___) Example(args _dafny.Sequence) m_Wrappers.Result {
   116  	var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false)
   117  	_ = output
   118  	var _0_MyOptions _dafny.Sequence
   119  	_ = _0_MyOptions
   120  	_0_MyOptions = _dafny.SeqOf(Companion_Param_.Create_Flag_(_dafny.SeqOfString("foo"), _dafny.SeqOfString("Does foo things"), Companion_Default___.NullChar(), false, false, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf()), Companion_Param_.Create_Opt_(_dafny.SeqOfString("two"), _dafny.SeqOfString("Does bar things to thingy"), _dafny.SeqOfString("thingy"), _dafny.Char('t'), Companion_Unused_.Create_UnusedOk_(), false, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf(), Companion_Tri_.Create_No_()), Companion_Param_.Create_Command_(Companion_Options_.Create_Options_(_dafny.SeqOfString("command"), _dafny.SeqOfString("Does command stuff"), _dafny.SeqOf(Companion_Param_.Create_Opt_(_dafny.SeqOfString("two"), _dafny.SeqOfString("Does bar things to thingy"), _dafny.SeqOfString("thingy"), _dafny.Char('t'), Companion_Unused_.Create_UnusedOk_(), false, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf(), Companion_Tri_.Create_No_()), Companion_Param_.Create_Flag_(_dafny.SeqOfString("foo"), _dafny.SeqOfString("Does foo things"), Companion_Default___.NullChar(), false, false, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf())))))
   121  	var _1_opts Options
   122  	_ = _1_opts
   123  	_1_opts = Companion_Options_.Create_Options_(_dafny.SeqOfString("myProg"), _dafny.SeqOfString("does prog stuff"), _0_MyOptions)
   124  	var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_Parsed_.Default())
   125  	_ = _2_valueOrError0
   126  	_2_valueOrError0 = Companion_Default___.GetOptions(_1_opts, args)
   127  	if (_2_valueOrError0).IsFailure() {
   128  		output = (_2_valueOrError0).PropagateFailure()
   129  		return output
   130  	}
   131  	var _3_x Parsed
   132  	_ = _3_x
   133  	_3_x = (_2_valueOrError0).Extract().(Parsed)
   134  	var _4_h m_Wrappers.Option
   135  	_ = _4_h
   136  	_4_h = Companion_Default___.NeedsHelp(_1_opts, _3_x, _dafny.SeqOfString(""))
   137  	if (_4_h).Is_Some() {
   138  		_dafny.Print(((_4_h).Dtor_value().(_dafny.Sequence)).SetString())
   139  		output = m_Wrappers.Companion_Result_.Create_Success_(true)
   140  		return output
   141  	}
   142  	output = m_Wrappers.Companion_Result_.Create_Success_(true)
   143  	return output
   144  	return output
   145  }
   146  func (_static *CompanionStruct_Default___) Filter(f func(interface{}) bool, xs _dafny.Sequence) _dafny.Sequence {
   147  	var _0___accumulator _dafny.Sequence = _dafny.SeqOf()
   148  	_ = _0___accumulator
   149  	goto TAIL_CALL_START
   150  TAIL_CALL_START:
   151  	if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 {
   152  		return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf())
   153  	} else {
   154  		_0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, (func() _dafny.Sequence {
   155  			if (f)((xs).Select(0).(interface{})) {
   156  				return _dafny.SeqOf((xs).Select(0).(interface{}))
   157  			}
   158  			return _dafny.SeqOf()
   159  		})())
   160  		var _in0 func(interface{}) bool = f
   161  		_ = _in0
   162  		var _in1 _dafny.Sequence = (xs).Drop(1)
   163  		_ = _in1
   164  		f = _in0
   165  		xs = _in1
   166  		goto TAIL_CALL_START
   167  	}
   168  }
   169  func (_static *CompanionStruct_Default___) IsHelp(args Parsed) bool {
   170  	return ((_dafny.IntOfUint32(((args).Dtor_params()).Cardinality())).Sign() != 0) && (_dafny.Companion_Sequence_.Equal((((args).Dtor_params()).Select(0).(OneArg)).Dtor_name(), Companion_Default___.HELP__STR()))
   171  }
   172  func (_static *CompanionStruct_Default___) NeedsHelp(opts Options, args Parsed, prefix _dafny.Sequence) m_Wrappers.Option {
   173  	goto TAIL_CALL_START
   174  TAIL_CALL_START:
   175  	if Companion_Default___.IsHelp(args) {
   176  		return m_Wrappers.Companion_Option_.Create_Some_(Companion_Default___.GetHelp(opts, prefix))
   177  	} else if ((args).Dtor_subcommand()).Is_Some() {
   178  		var _0_valueOrError0 m_Wrappers.Option = Companion_Default___.GetSubOptions((opts).Dtor_params(), (((args).Dtor_subcommand()).Dtor_value().(Parsed)).Dtor_command(), _dafny.Zero)
   179  		_ = _0_valueOrError0
   180  		if (_0_valueOrError0).IsFailure() {
   181  			return (_0_valueOrError0).PropagateFailure()
   182  		} else {
   183  			var _1_pos _dafny.Int = (_0_valueOrError0).Extract().(_dafny.Int)
   184  			_ = _1_pos
   185  			var _in0 Options = (((opts).Dtor_params()).Select((_1_pos).Uint32()).(Param)).Dtor_options()
   186  			_ = _in0
   187  			var _in1 Parsed = ((args).Dtor_subcommand()).Dtor_value().(Parsed)
   188  			_ = _in1
   189  			var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(prefix, (args).Dtor_command()), _dafny.SeqOfString(" "))
   190  			_ = _in2
   191  			opts = _in0
   192  			args = _in1
   193  			prefix = _in2
   194  			goto TAIL_CALL_START
   195  		}
   196  	} else {
   197  		return m_Wrappers.Companion_Option_.Create_None_()
   198  	}
   199  }
   200  func (_static *CompanionStruct_Default___) GetHelp(opts Options, prefix _dafny.Sequence) _dafny.Sequence {
   201  	var _0_newOpts _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate((opts).Dtor_params(), _dafny.SeqOf(Companion_Default___.HELP__PARAM()))
   202  	_ = _0_newOpts
   203  	var _1_longLen _dafny.Int = Companion_Default___.GetLongLen(_0_newOpts, _dafny.IntOfInt64(6))
   204  	_ = _1_longLen
   205  	var _2_commandLen _dafny.Int = Companion_Default___.GetCommandLen(_0_newOpts, _dafny.Zero)
   206  	_ = _2_commandLen
   207  	if (_2_commandLen).Sign() == 0 {
   208  		return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("USAGE : "), prefix), (opts).Dtor_name()), _dafny.SeqOfString(" [args...]\n")), (opts).Dtor_help()), _dafny.SeqOfString("\n")), Companion_Default___.GetHelp2(_0_newOpts, _1_longLen))
   209  	} else {
   210  		return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("USAGE : "), (opts).Dtor_name()), _dafny.SeqOfString(" [args...] command [args...]\n")), (opts).Dtor_help()), _dafny.SeqOfString("\n")), _dafny.SeqOfString("\nAvailable Commands:\n")), Companion_Default___.GetCmdHelp(_0_newOpts, _2_commandLen)), _dafny.SeqOfString("\nAvailable Options:\n")), Companion_Default___.GetHelp2(_0_newOpts, _1_longLen))
   211  	}
   212  }
   213  func (_static *CompanionStruct_Default___) OptValue(args _dafny.Sequence, arg _dafny.Sequence) m_Wrappers.Option {
   214  	goto TAIL_CALL_START
   215  TAIL_CALL_START:
   216  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   217  		return m_Wrappers.Companion_Option_.Create_None_()
   218  	} else if _dafny.Companion_Sequence_.Equal(((args).Select(0).(OneArg)).Dtor_name(), arg) {
   219  		return ((args).Select(0).(OneArg)).Dtor_value()
   220  	} else {
   221  		var _in0 _dafny.Sequence = (args).Drop(1)
   222  		_ = _in0
   223  		var _in1 _dafny.Sequence = arg
   224  		_ = _in1
   225  		args = _in0
   226  		arg = _in1
   227  		goto TAIL_CALL_START
   228  	}
   229  }
   230  func (_static *CompanionStruct_Default___) FlagCount(args _dafny.Sequence, arg _dafny.Sequence) _dafny.Int {
   231  	var _0___accumulator _dafny.Int = _dafny.Zero
   232  	_ = _0___accumulator
   233  	goto TAIL_CALL_START
   234  TAIL_CALL_START:
   235  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   236  		return (_dafny.Zero).Plus(_0___accumulator)
   237  	} else if _dafny.Companion_Sequence_.Equal(((args).Select(0).(OneArg)).Dtor_name(), arg) {
   238  		_0___accumulator = (_0___accumulator).Plus(_dafny.One)
   239  		var _in0 _dafny.Sequence = (args).Drop(1)
   240  		_ = _in0
   241  		var _in1 _dafny.Sequence = arg
   242  		_ = _in1
   243  		args = _in0
   244  		arg = _in1
   245  		goto TAIL_CALL_START
   246  	} else {
   247  		var _in2 _dafny.Sequence = (args).Drop(1)
   248  		_ = _in2
   249  		var _in3 _dafny.Sequence = arg
   250  		_ = _in3
   251  		args = _in2
   252  		arg = _in3
   253  		goto TAIL_CALL_START
   254  	}
   255  }
   256  func (_static *CompanionStruct_Default___) OptMapLast(args _dafny.Sequence, theMap _dafny.Map) _dafny.Map {
   257  	goto TAIL_CALL_START
   258  TAIL_CALL_START:
   259  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   260  		return theMap
   261  	} else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() {
   262  		var _in0 _dafny.Sequence = (args).Drop(1)
   263  		_ = _in0
   264  		var _in1 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), (((args).Select(0).(OneArg)).Dtor_value()).Dtor_value().(_dafny.Sequence))
   265  		_ = _in1
   266  		args = _in0
   267  		theMap = _in1
   268  		goto TAIL_CALL_START
   269  	} else {
   270  		var _in2 _dafny.Sequence = (args).Drop(1)
   271  		_ = _in2
   272  		var _in3 _dafny.Map = theMap
   273  		_ = _in3
   274  		args = _in2
   275  		theMap = _in3
   276  		goto TAIL_CALL_START
   277  	}
   278  }
   279  func (_static *CompanionStruct_Default___) FlagsSet(args _dafny.Sequence, theSet _dafny.Set) _dafny.Set {
   280  	goto TAIL_CALL_START
   281  TAIL_CALL_START:
   282  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   283  		return theSet
   284  	} else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() {
   285  		var _in0 _dafny.Sequence = (args).Drop(1)
   286  		_ = _in0
   287  		var _in1 _dafny.Set = theSet
   288  		_ = _in1
   289  		args = _in0
   290  		theSet = _in1
   291  		goto TAIL_CALL_START
   292  	} else {
   293  		var _in2 _dafny.Sequence = (args).Drop(1)
   294  		_ = _in2
   295  		var _in3 _dafny.Set = (theSet).Union(_dafny.SetOf(((args).Select(0).(OneArg)).Dtor_name()))
   296  		_ = _in3
   297  		args = _in2
   298  		theSet = _in3
   299  		goto TAIL_CALL_START
   300  	}
   301  }
   302  func (_static *CompanionStruct_Default___) OptMapList(args _dafny.Sequence, theMap _dafny.Map) _dafny.Map {
   303  	goto TAIL_CALL_START
   304  TAIL_CALL_START:
   305  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   306  		return theMap
   307  	} else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() {
   308  		if (theMap).Contains(((args).Select(0).(OneArg)).Dtor_name()) {
   309  			var _in0 _dafny.Sequence = (args).Drop(1)
   310  			_ = _in0
   311  			var _in1 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), _dafny.Companion_Sequence_.Concatenate((theMap).Get(((args).Select(0).(OneArg)).Dtor_name()).(_dafny.Sequence), _dafny.SeqOf((((args).Select(0).(OneArg)).Dtor_value()).Dtor_value().(_dafny.Sequence))))
   312  			_ = _in1
   313  			args = _in0
   314  			theMap = _in1
   315  			goto TAIL_CALL_START
   316  		} else {
   317  			var _in2 _dafny.Sequence = (args).Drop(1)
   318  			_ = _in2
   319  			var _in3 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), _dafny.SeqOf((((args).Select(0).(OneArg)).Dtor_value()).Dtor_value().(_dafny.Sequence)))
   320  			_ = _in3
   321  			args = _in2
   322  			theMap = _in3
   323  			goto TAIL_CALL_START
   324  		}
   325  	} else {
   326  		var _in4 _dafny.Sequence = (args).Drop(1)
   327  		_ = _in4
   328  		var _in5 _dafny.Map = theMap
   329  		_ = _in5
   330  		args = _in4
   331  		theMap = _in5
   332  		goto TAIL_CALL_START
   333  	}
   334  }
   335  func (_static *CompanionStruct_Default___) FlagMapCount(args _dafny.Sequence, theMap _dafny.Map) _dafny.Map {
   336  	goto TAIL_CALL_START
   337  TAIL_CALL_START:
   338  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   339  		return theMap
   340  	} else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() {
   341  		var _in0 _dafny.Sequence = (args).Drop(1)
   342  		_ = _in0
   343  		var _in1 _dafny.Map = theMap
   344  		_ = _in1
   345  		args = _in0
   346  		theMap = _in1
   347  		goto TAIL_CALL_START
   348  	} else if (theMap).Contains(((args).Select(0).(OneArg)).Dtor_name()) {
   349  		var _in2 _dafny.Sequence = (args).Drop(1)
   350  		_ = _in2
   351  		var _in3 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), ((theMap).Get(((args).Select(0).(OneArg)).Dtor_name()).(_dafny.Int)).Plus(_dafny.One))
   352  		_ = _in3
   353  		args = _in2
   354  		theMap = _in3
   355  		goto TAIL_CALL_START
   356  	} else {
   357  		var _in4 _dafny.Sequence = (args).Drop(1)
   358  		_ = _in4
   359  		var _in5 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), _dafny.One)
   360  		_ = _in5
   361  		args = _in4
   362  		theMap = _in5
   363  		goto TAIL_CALL_START
   364  	}
   365  }
   366  func (_static *CompanionStruct_Default___) FlagSetCheck(args _dafny.Sequence, theSet _dafny.Set) m_Wrappers.Result {
   367  	goto TAIL_CALL_START
   368  TAIL_CALL_START:
   369  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   370  		return m_Wrappers.Companion_Result_.Create_Success_(theSet)
   371  	} else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() {
   372  		if (theSet).Contains(((args).Select(0).(OneArg)).Dtor_name()) {
   373  			return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate arg : "), ((args).Select(0).(OneArg)).Dtor_name()))
   374  		} else {
   375  			var _in0 _dafny.Sequence = (args).Drop(1)
   376  			_ = _in0
   377  			var _in1 _dafny.Set = (theSet).Union(_dafny.SetOf(((args).Select(0).(OneArg)).Dtor_name()))
   378  			_ = _in1
   379  			args = _in0
   380  			theSet = _in1
   381  			goto TAIL_CALL_START
   382  		}
   383  	} else {
   384  		var _in2 _dafny.Sequence = (args).Drop(1)
   385  		_ = _in2
   386  		var _in3 _dafny.Set = theSet
   387  		_ = _in3
   388  		args = _in2
   389  		theSet = _in3
   390  		goto TAIL_CALL_START
   391  	}
   392  }
   393  func (_static *CompanionStruct_Default___) OptMapCheck(args _dafny.Sequence, theMap _dafny.Map) m_Wrappers.Result {
   394  	goto TAIL_CALL_START
   395  TAIL_CALL_START:
   396  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   397  		return m_Wrappers.Companion_Result_.Create_Success_(theMap)
   398  	} else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() {
   399  		if (theMap).Contains(((args).Select(0).(OneArg)).Dtor_name()) {
   400  			return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate arg : "), ((args).Select(0).(OneArg)).Dtor_name()))
   401  		} else {
   402  			var _in0 _dafny.Sequence = (args).Drop(1)
   403  			_ = _in0
   404  			var _in1 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), (((args).Select(0).(OneArg)).Dtor_value()).Dtor_value().(_dafny.Sequence))
   405  			_ = _in1
   406  			args = _in0
   407  			theMap = _in1
   408  			goto TAIL_CALL_START
   409  		}
   410  	} else {
   411  		var _in2 _dafny.Sequence = (args).Drop(1)
   412  		_ = _in2
   413  		var _in3 _dafny.Map = theMap
   414  		_ = _in3
   415  		args = _in2
   416  		theMap = _in3
   417  		goto TAIL_CALL_START
   418  	}
   419  }
   420  func (_static *CompanionStruct_Default___) GetHelpHelp(opt Param) _dafny.Sequence {
   421  	if (opt).Is_Command() {
   422  		return _dafny.SeqOfString("")
   423  	} else if (opt).Is_Flag() {
   424  		return (opt).Dtor_help()
   425  	} else {
   426  		return _dafny.Companion_Sequence_.Concatenate((opt).Dtor_help(), (func() _dafny.Sequence {
   427  			if (opt).Required() {
   428  				return _dafny.SeqOfString(" (required)")
   429  			}
   430  			return (func() _dafny.Sequence {
   431  				if (opt).HasDefault() {
   432  					return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString(" (default : "), ((opt).Dtor_unused()).Dtor_val()), _dafny.SeqOfString(")"))
   433  				}
   434  				return _dafny.SeqOfString("")
   435  			})()
   436  		})())
   437  	}
   438  }
   439  func (_static *CompanionStruct_Default___) OneHelp(opt Param, longLen _dafny.Int) _dafny.Sequence {
   440  	if ((opt).Is_Command()) || (!((opt).ShowHelp())) {
   441  		return _dafny.SeqOfString("")
   442  	} else {
   443  		return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(Companion_Default___.GetShortHelp(opt), _dafny.SeqOfString("  ")), Companion_Default___.GetLongHelp(opt, longLen)), _dafny.SeqOfString("  ")), Companion_Default___.GetHelpHelp(opt)), _dafny.SeqOfString("\n"))
   444  	}
   445  }
   446  func (_static *CompanionStruct_Default___) GetCommandHelp(opt Param, commandLen _dafny.Int) _dafny.Sequence {
   447  	var _0_name _dafny.Sequence = (func() _dafny.Sequence {
   448  		if (_dafny.IntOfUint32((((opt).Dtor_options()).Dtor_name()).Cardinality())).Cmp(commandLen) < 0 {
   449  			return _dafny.Companion_Sequence_.Concatenate(((opt).Dtor_options()).Dtor_name(), _dafny.SeqCreate(((commandLen).Minus(_dafny.IntOfUint32((((opt).Dtor_options()).Dtor_name()).Cardinality()))).Uint32(), func(coer22 func(_dafny.Int) _dafny.Char) func(_dafny.Int) interface{} {
   450  				return func(arg26 _dafny.Int) interface{} {
   451  					return coer22(arg26)
   452  				}
   453  			}(func(_1_i _dafny.Int) _dafny.Char {
   454  				return _dafny.Char(' ')
   455  			})).SetString())
   456  		}
   457  		return ((opt).Dtor_options()).Dtor_name()
   458  	})()
   459  	_ = _0_name
   460  	return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_0_name, _dafny.SeqOfString("  ")), ((opt).Dtor_options()).Dtor_help()), _dafny.SeqOfString("\n"))
   461  }
   462  func (_static *CompanionStruct_Default___) GetShortHelp(opt Param) _dafny.Sequence {
   463  	if ((opt).Is_Opt()) || ((opt).Is_Flag()) {
   464  		if ((opt).Dtor_short()) != (Companion_Default___.NullChar()) /* dircomp */ {
   465  			return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("-"), _dafny.SeqOfChars((opt).Dtor_short()))
   466  		} else {
   467  			return _dafny.SeqOfString("  ")
   468  		}
   469  	} else {
   470  		return _dafny.SeqOfString("")
   471  	}
   472  }
   473  func (_static *CompanionStruct_Default___) GetLongHelp(opt Param, longLen _dafny.Int) _dafny.Sequence {
   474  	if ((opt).Is_Opt()) || ((opt).Is_Flag()) {
   475  		var _0_tmp _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("--"), (opt).Dtor_name()), (func() _dafny.Sequence {
   476  			if (opt).Is_Opt() {
   477  				return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("="), (opt).Dtor_argName())
   478  			}
   479  			return _dafny.SeqOfString("")
   480  		})())
   481  		_ = _0_tmp
   482  		if (_dafny.IntOfUint32((_0_tmp).Cardinality())).Cmp(longLen) < 0 {
   483  			return _dafny.Companion_Sequence_.Concatenate(_0_tmp, _dafny.SeqCreate(((longLen).Minus(_dafny.IntOfUint32((_0_tmp).Cardinality()))).Uint32(), func(coer23 func(_dafny.Int) _dafny.Char) func(_dafny.Int) interface{} {
   484  				return func(arg27 _dafny.Int) interface{} {
   485  					return coer23(arg27)
   486  				}
   487  			}(func(_1_i _dafny.Int) _dafny.Char {
   488  				return _dafny.Char(' ')
   489  			})).SetString())
   490  		} else {
   491  			return _0_tmp
   492  		}
   493  	} else {
   494  		return _dafny.SeqOfString("")
   495  	}
   496  }
   497  func (_static *CompanionStruct_Default___) GetHelp2(opts _dafny.Sequence, longLen _dafny.Int) _dafny.Sequence {
   498  	var _0___accumulator _dafny.Sequence = _dafny.SeqOfChars()
   499  	_ = _0___accumulator
   500  	goto TAIL_CALL_START
   501  TAIL_CALL_START:
   502  	if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 {
   503  		return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOfString(""))
   504  	} else {
   505  		var _1_x _dafny.Sequence = Companion_Default___.OneHelp((opts).Select(0).(Param), longLen)
   506  		_ = _1_x
   507  		_0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _1_x)
   508  		var _in0 _dafny.Sequence = (opts).Drop(1)
   509  		_ = _in0
   510  		var _in1 _dafny.Int = longLen
   511  		_ = _in1
   512  		opts = _in0
   513  		longLen = _in1
   514  		goto TAIL_CALL_START
   515  	}
   516  }
   517  func (_static *CompanionStruct_Default___) GetCmdHelp(opts _dafny.Sequence, commandLen _dafny.Int) _dafny.Sequence {
   518  	var _0___accumulator _dafny.Sequence = _dafny.SeqOfChars()
   519  	_ = _0___accumulator
   520  	goto TAIL_CALL_START
   521  TAIL_CALL_START:
   522  	if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 {
   523  		return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOfString(""))
   524  	} else {
   525  		var _1_x _dafny.Sequence = (func() _dafny.Sequence {
   526  			if ((opts).Select(0).(Param)).Is_Command() {
   527  				return Companion_Default___.GetCommandHelp((opts).Select(0).(Param), commandLen)
   528  			}
   529  			return _dafny.SeqOfString("")
   530  		})()
   531  		_ = _1_x
   532  		_0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _1_x)
   533  		var _in0 _dafny.Sequence = (opts).Drop(1)
   534  		_ = _in0
   535  		var _in1 _dafny.Int = commandLen
   536  		_ = _in1
   537  		opts = _in0
   538  		commandLen = _in1
   539  		goto TAIL_CALL_START
   540  	}
   541  }
   542  func (_static *CompanionStruct_Default___) GetLongLen(opts _dafny.Sequence, max _dafny.Int) _dafny.Int {
   543  	goto TAIL_CALL_START
   544  TAIL_CALL_START:
   545  	if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 {
   546  		return max
   547  	} else {
   548  		var _0_x _dafny.Int = _dafny.IntOfUint32((Companion_Default___.GetLongHelp((opts).Select(0).(Param), _dafny.Zero)).Cardinality())
   549  		_ = _0_x
   550  		var _1_newMax _dafny.Int = (func() _dafny.Int {
   551  			if (_0_x).Cmp(max) > 0 {
   552  				return _0_x
   553  			}
   554  			return max
   555  		})()
   556  		_ = _1_newMax
   557  		var _in0 _dafny.Sequence = (opts).Drop(1)
   558  		_ = _in0
   559  		var _in1 _dafny.Int = _1_newMax
   560  		_ = _in1
   561  		opts = _in0
   562  		max = _in1
   563  		goto TAIL_CALL_START
   564  	}
   565  }
   566  func (_static *CompanionStruct_Default___) GetCommandLen(opts _dafny.Sequence, max _dafny.Int) _dafny.Int {
   567  	goto TAIL_CALL_START
   568  TAIL_CALL_START:
   569  	if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 {
   570  		return max
   571  	} else {
   572  		var _0_x _dafny.Int = (func() _dafny.Int {
   573  			if ((opts).Select(0).(Param)).Is_Command() {
   574  				return _dafny.IntOfUint32(((((opts).Select(0).(Param)).Dtor_options()).Dtor_name()).Cardinality())
   575  			}
   576  			return _dafny.Zero
   577  		})()
   578  		_ = _0_x
   579  		var _1_newMax _dafny.Int = (func() _dafny.Int {
   580  			if (_0_x).Cmp(max) > 0 {
   581  				return _0_x
   582  			}
   583  			return max
   584  		})()
   585  		_ = _1_newMax
   586  		var _in0 _dafny.Sequence = (opts).Drop(1)
   587  		_ = _in0
   588  		var _in1 _dafny.Int = _1_newMax
   589  		_ = _in1
   590  		opts = _in0
   591  		max = _in1
   592  		goto TAIL_CALL_START
   593  	}
   594  }
   595  func (_static *CompanionStruct_Default___) AddShortAlias(aliases _dafny.Sequence, shortMap _dafny.Map, name _dafny.Sequence) m_Wrappers.Result {
   596  	goto TAIL_CALL_START
   597  TAIL_CALL_START:
   598  	if (_dafny.IntOfUint32((aliases).Cardinality())).Sign() == 0 {
   599  		return m_Wrappers.Companion_Result_.Create_Success_(shortMap)
   600  	} else if (shortMap).Contains((aliases).Select(0).(_dafny.Char)) {
   601  		return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Short alias '"), (aliases).Subsequence(0, 1)), _dafny.SeqOfString("' for '")), name), _dafny.SeqOfString("' already in use as a short option.")))
   602  	} else {
   603  		var _in0 _dafny.Sequence = (aliases).Drop(1)
   604  		_ = _in0
   605  		var _in1 _dafny.Map = (shortMap).Update((aliases).Select(0).(_dafny.Char), name)
   606  		_ = _in1
   607  		var _in2 _dafny.Sequence = name
   608  		_ = _in2
   609  		aliases = _in0
   610  		shortMap = _in1
   611  		name = _in2
   612  		goto TAIL_CALL_START
   613  	}
   614  }
   615  func (_static *CompanionStruct_Default___) AddLongAlias(aliases _dafny.Sequence, longMap _dafny.Map, opt Param) m_Wrappers.Result {
   616  	goto TAIL_CALL_START
   617  TAIL_CALL_START:
   618  	if (_dafny.IntOfUint32((aliases).Cardinality())).Sign() == 0 {
   619  		return m_Wrappers.Companion_Result_.Create_Success_(longMap)
   620  	} else if (longMap).Contains((aliases).Select(0).(_dafny.Sequence)) {
   621  		return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Long alias '"), (aliases).Select(0).(_dafny.Sequence)), _dafny.SeqOfString("' already in use as a long option.")))
   622  	} else {
   623  		var _in0 _dafny.Sequence = (aliases).Drop(1)
   624  		_ = _in0
   625  		var _in1 _dafny.Map = (longMap).Update((aliases).Select(0).(_dafny.Sequence), opt)
   626  		_ = _in1
   627  		var _in2 Param = opt
   628  		_ = _in2
   629  		aliases = _in0
   630  		longMap = _in1
   631  		opt = _in2
   632  		goto TAIL_CALL_START
   633  	}
   634  }
   635  func (_static *CompanionStruct_Default___) GetMaps(opts _dafny.Sequence, longMap _dafny.Map, shortMap _dafny.Map, commandMap _dafny.Map) m_Wrappers.Result {
   636  	goto TAIL_CALL_START
   637  TAIL_CALL_START:
   638  	if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 {
   639  		return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(longMap, shortMap, commandMap))
   640  	} else {
   641  		var _0_opt Param = (opts).Select(0).(Param)
   642  		_ = _0_opt
   643  		if (_0_opt).Is_Command() {
   644  			var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!(commandMap).Contains(((_0_opt).Dtor_options()).Dtor_name()), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate command in options : "), ((_0_opt).Dtor_options()).Dtor_name()))
   645  			_ = _1_valueOrError0
   646  			if (_1_valueOrError0).IsFailure() {
   647  				return (_1_valueOrError0).PropagateFailure()
   648  			} else {
   649  				var _in0 _dafny.Sequence = (opts).Drop(1)
   650  				_ = _in0
   651  				var _in1 _dafny.Map = longMap
   652  				_ = _in1
   653  				var _in2 _dafny.Map = shortMap
   654  				_ = _in2
   655  				var _in3 _dafny.Map = (commandMap).Update(((_0_opt).Dtor_options()).Dtor_name(), (_0_opt).Dtor_options())
   656  				_ = _in3
   657  				opts = _in0
   658  				longMap = _in1
   659  				shortMap = _in2
   660  				commandMap = _in3
   661  				goto TAIL_CALL_START
   662  			}
   663  		} else {
   664  			var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!(longMap).Contains((_0_opt).Dtor_name()), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate long name in options : "), (_0_opt).Dtor_name()))
   665  			_ = _2_valueOrError1
   666  			if (_2_valueOrError1).IsFailure() {
   667  				return (_2_valueOrError1).PropagateFailure()
   668  			} else {
   669  				var _3_newLongMap _dafny.Map = (longMap).Update((_0_opt).Dtor_name(), _0_opt)
   670  				_ = _3_newLongMap
   671  				var _4_valueOrError2 m_Wrappers.Result = Companion_Default___.AddShortAlias((_0_opt).ShortAlias(), shortMap, (_0_opt).Dtor_name())
   672  				_ = _4_valueOrError2
   673  				if (_4_valueOrError2).IsFailure() {
   674  					return (_4_valueOrError2).PropagateFailure()
   675  				} else {
   676  					var _5_newShortMap _dafny.Map = (_4_valueOrError2).Extract().(_dafny.Map)
   677  					_ = _5_newShortMap
   678  					var _6_valueOrError3 m_Wrappers.Result = Companion_Default___.AddLongAlias((_0_opt).LongAlias(), _3_newLongMap, _0_opt)
   679  					_ = _6_valueOrError3
   680  					if (_6_valueOrError3).IsFailure() {
   681  						return (_6_valueOrError3).PropagateFailure()
   682  					} else {
   683  						var _7_newLongMap _dafny.Map = (_6_valueOrError3).Extract().(_dafny.Map)
   684  						_ = _7_newLongMap
   685  						if ((_0_opt).Dtor_short()) != (Companion_Default___.NullChar()) /* dircomp */ {
   686  							var _8_short _dafny.Char = (_0_opt).Dtor_short()
   687  							_ = _8_short
   688  							if (_5_newShortMap).Contains(_8_short) {
   689  								return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate short char in options : '"), _dafny.SeqOfChars(_8_short)), _dafny.SeqOfString("' for ")), (_0_opt).Dtor_name()), _dafny.SeqOfString(" and ")), (_5_newShortMap).Get(_8_short).(_dafny.Sequence)))
   690  							} else {
   691  								var _in4 _dafny.Sequence = (opts).Drop(1)
   692  								_ = _in4
   693  								var _in5 _dafny.Map = (_7_newLongMap).Update((_0_opt).Dtor_name(), _0_opt)
   694  								_ = _in5
   695  								var _in6 _dafny.Map = (_5_newShortMap).Update(_8_short, (_0_opt).Dtor_name())
   696  								_ = _in6
   697  								var _in7 _dafny.Map = commandMap
   698  								_ = _in7
   699  								opts = _in4
   700  								longMap = _in5
   701  								shortMap = _in6
   702  								commandMap = _in7
   703  								goto TAIL_CALL_START
   704  							}
   705  						} else {
   706  							var _in8 _dafny.Sequence = (opts).Drop(1)
   707  							_ = _in8
   708  							var _in9 _dafny.Map = (_7_newLongMap).Update((_0_opt).Dtor_name(), _0_opt)
   709  							_ = _in9
   710  							var _in10 _dafny.Map = _5_newShortMap
   711  							_ = _in10
   712  							var _in11 _dafny.Map = commandMap
   713  							_ = _in11
   714  							opts = _in8
   715  							longMap = _in9
   716  							shortMap = _in10
   717  							commandMap = _in11
   718  							goto TAIL_CALL_START
   719  						}
   720  					}
   721  				}
   722  			}
   723  		}
   724  	}
   725  }
   726  func (_static *CompanionStruct_Default___) Print(x interface{}) m_Wrappers.Outcome {
   727  	var _hresult m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
   728  	_ = _hresult
   729  	_dafny.Print(x)
   730  	_dafny.Print((_dafny.SeqOfString("\n")).SetString())
   731  	_hresult = m_Wrappers.Companion_Outcome_.Create_Pass_()
   732  	return _hresult
   733  	return _hresult
   734  }
   735  func (_static *CompanionStruct_Default___) ArgExists(args _dafny.Sequence, name _dafny.Sequence) bool {
   736  	goto TAIL_CALL_START
   737  TAIL_CALL_START:
   738  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   739  		return false
   740  	} else if _dafny.Companion_Sequence_.Equal(((args).Select(0).(OneArg)).Dtor_name(), name) {
   741  		return true
   742  	} else {
   743  		var _in0 _dafny.Sequence = (args).Drop(1)
   744  		_ = _in0
   745  		var _in1 _dafny.Sequence = name
   746  		_ = _in1
   747  		args = _in0
   748  		name = _in1
   749  		goto TAIL_CALL_START
   750  	}
   751  }
   752  func (_static *CompanionStruct_Default___) PostProcess2(opts _dafny.Sequence, args _dafny.Sequence, newArgs _dafny.Sequence) m_Wrappers.Result {
   753  	goto TAIL_CALL_START
   754  TAIL_CALL_START:
   755  	if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 {
   756  		return m_Wrappers.Companion_Result_.Create_Success_(newArgs)
   757  	} else if ((((opts).Select(0).(Param)).Is_Opt()) && (((opts).Select(0).(Param)).Required())) && (!(Companion_Default___.ArgExists(args, ((opts).Select(0).(Param)).Dtor_name()))) {
   758  		return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option '"), ((opts).Select(0).(Param)).Dtor_name()), _dafny.SeqOfString("' is required, but was not used.")))
   759  	} else if ((((opts).Select(0).(Param)).Is_Opt()) && (((opts).Select(0).(Param)).HasDefault())) && (!(Companion_Default___.ArgExists(args, ((opts).Select(0).(Param)).Dtor_name()))) {
   760  		var _in0 _dafny.Sequence = (opts).Drop(1)
   761  		_ = _in0
   762  		var _in1 _dafny.Sequence = args
   763  		_ = _in1
   764  		var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(newArgs, _dafny.SeqOf(Companion_OneArg_.Create_OneArg_(((opts).Select(0).(Param)).Dtor_name(), m_Wrappers.Companion_Option_.Create_Some_((((opts).Select(0).(Param)).Dtor_unused()).Dtor_val()))))
   765  		_ = _in2
   766  		opts = _in0
   767  		args = _in1
   768  		newArgs = _in2
   769  		goto TAIL_CALL_START
   770  	} else {
   771  		var _in3 _dafny.Sequence = (opts).Drop(1)
   772  		_ = _in3
   773  		var _in4 _dafny.Sequence = args
   774  		_ = _in4
   775  		var _in5 _dafny.Sequence = newArgs
   776  		_ = _in5
   777  		opts = _in3
   778  		args = _in4
   779  		newArgs = _in5
   780  		goto TAIL_CALL_START
   781  	}
   782  }
   783  func (_static *CompanionStruct_Default___) GetSubOptions(opts _dafny.Sequence, name _dafny.Sequence, pos _dafny.Int) m_Wrappers.Option {
   784  	goto TAIL_CALL_START
   785  TAIL_CALL_START:
   786  	if (_dafny.IntOfUint32((opts).Cardinality())).Cmp(pos) == 0 {
   787  		return m_Wrappers.Companion_Option_.Create_None_()
   788  	} else if (((opts).Select((pos).Uint32()).(Param)).Is_Command()) && (_dafny.Companion_Sequence_.Equal((((opts).Select((pos).Uint32()).(Param)).Dtor_options()).Dtor_name(), name)) {
   789  		return m_Wrappers.Companion_Option_.Create_Some_(pos)
   790  	} else {
   791  		var _in0 _dafny.Sequence = opts
   792  		_ = _in0
   793  		var _in1 _dafny.Sequence = name
   794  		_ = _in1
   795  		var _in2 _dafny.Int = (pos).Plus(_dafny.One)
   796  		_ = _in2
   797  		opts = _in0
   798  		name = _in1
   799  		pos = _in2
   800  		goto TAIL_CALL_START
   801  	}
   802  }
   803  func (_static *CompanionStruct_Default___) PostProcess(opts Options, args Parsed) m_Wrappers.Result {
   804  	var _pat_let_tv0 = args
   805  	_ = _pat_let_tv0
   806  	var _pat_let_tv1 = args
   807  	_ = _pat_let_tv1
   808  	if Companion_Default___.IsHelp(args) {
   809  		return m_Wrappers.Companion_Result_.Create_Success_(args)
   810  	} else {
   811  		var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.PostProcess2((opts).Dtor_params(), (args).Dtor_params(), _dafny.SeqOf())
   812  		_ = _0_valueOrError0
   813  		if (_0_valueOrError0).IsFailure() {
   814  			return (_0_valueOrError0).PropagateFailure()
   815  		} else {
   816  			var _1_newParams _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence)
   817  			_ = _1_newParams
   818  			if ((args).Dtor_subcommand()).Is_Some() {
   819  				var _2_optPos m_Wrappers.Option = Companion_Default___.GetSubOptions((opts).Dtor_params(), (((args).Dtor_subcommand()).Dtor_value().(Parsed)).Dtor_command(), _dafny.Zero)
   820  				_ = _2_optPos
   821  				if (_2_optPos).Is_Some() {
   822  					var _3_valueOrError1 m_Wrappers.Result = Companion_Default___.PostProcess((((opts).Dtor_params()).Select(((_2_optPos).Dtor_value().(_dafny.Int)).Uint32()).(Param)).Dtor_options(), ((args).Dtor_subcommand()).Dtor_value().(Parsed))
   823  					_ = _3_valueOrError1
   824  					if (_3_valueOrError1).IsFailure() {
   825  						return (_3_valueOrError1).PropagateFailure()
   826  					} else {
   827  						var _4_sub Parsed = (_3_valueOrError1).Extract().(Parsed)
   828  						_ = _4_sub
   829  						return m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let1_0 Parsed) Parsed {
   830  							return func(_5_dt__update__tmp_h0 Parsed) Parsed {
   831  								return func(_pat_let2_0 m_Wrappers.Option) Parsed {
   832  									return func(_6_dt__update_hsubcommand_h0 m_Wrappers.Option) Parsed {
   833  										return func(_pat_let3_0 _dafny.Sequence) Parsed {
   834  											return func(_7_dt__update_hparams_h0 _dafny.Sequence) Parsed {
   835  												return Companion_Parsed_.Create_Parsed_((_5_dt__update__tmp_h0).Dtor_command(), _7_dt__update_hparams_h0, (_5_dt__update__tmp_h0).Dtor_files(), _6_dt__update_hsubcommand_h0)
   836  											}(_pat_let3_0)
   837  										}(_dafny.Companion_Sequence_.Concatenate((_pat_let_tv0).Dtor_params(), _1_newParams))
   838  									}(_pat_let2_0)
   839  								}(m_Wrappers.Companion_Option_.Create_Some_(_4_sub))
   840  							}(_pat_let1_0)
   841  						}(args))
   842  					}
   843  				} else {
   844  					return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Internal error in GetOpt::PostProcess"))
   845  				}
   846  			} else {
   847  				return m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let4_0 Parsed) Parsed {
   848  					return func(_8_dt__update__tmp_h1 Parsed) Parsed {
   849  						return func(_pat_let5_0 _dafny.Sequence) Parsed {
   850  							return func(_9_dt__update_hparams_h1 _dafny.Sequence) Parsed {
   851  								return Companion_Parsed_.Create_Parsed_((_8_dt__update__tmp_h1).Dtor_command(), _9_dt__update_hparams_h1, (_8_dt__update__tmp_h1).Dtor_files(), (_8_dt__update__tmp_h1).Dtor_subcommand())
   852  							}(_pat_let5_0)
   853  						}(_dafny.Companion_Sequence_.Concatenate((_pat_let_tv1).Dtor_params(), _1_newParams))
   854  					}(_pat_let4_0)
   855  				}(args))
   856  			}
   857  		}
   858  	}
   859  }
   860  func (_static *CompanionStruct_Default___) AllDigits(s _dafny.Sequence) bool {
   861  	goto TAIL_CALL_START
   862  TAIL_CALL_START:
   863  	if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 {
   864  		return true
   865  	} else if ((_dafny.Char('0')) <= ((s).Select(0).(_dafny.Char))) && (((s).Select(0).(_dafny.Char)) <= (_dafny.Char('9'))) {
   866  		var _in0 _dafny.Sequence = (s).Drop(1)
   867  		_ = _in0
   868  		s = _in0
   869  		goto TAIL_CALL_START
   870  	} else {
   871  		return false
   872  	}
   873  }
   874  func (_static *CompanionStruct_Default___) ValidPositional(s _dafny.Sequence) bool {
   875  	if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 {
   876  		return true
   877  	} else if ((s).Select(0).(_dafny.Char)) != (_dafny.Char('-')) /* dircomp */ {
   878  		return true
   879  	} else {
   880  		return Companion_Default___.AllDigits((s).Drop(1))
   881  	}
   882  }
   883  func (_static *CompanionStruct_Default___) TestPositionals(opts _dafny.Sequence, optional m_Wrappers.Option) m_Wrappers.Outcome {
   884  	goto TAIL_CALL_START
   885  TAIL_CALL_START:
   886  	if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 {
   887  		return m_Wrappers.Companion_Outcome_.Create_Pass_()
   888  	} else if !(((opts).Select(0).(Param)).Is_Opt()) {
   889  		var _in0 _dafny.Sequence = (opts).Drop(1)
   890  		_ = _in0
   891  		var _in1 m_Wrappers.Option = optional
   892  		_ = _in1
   893  		opts = _in0
   894  		optional = _in1
   895  		goto TAIL_CALL_START
   896  	} else if (((opts).Select(0).(Param)).Dtor_positional()).Equals(Companion_Tri_.Create_No_()) {
   897  		var _in2 _dafny.Sequence = (opts).Drop(1)
   898  		_ = _in2
   899  		var _in3 m_Wrappers.Option = optional
   900  		_ = _in3
   901  		opts = _in2
   902  		optional = _in3
   903  		goto TAIL_CALL_START
   904  	} else if (((opts).Select(0).(Param)).Dtor_positional()).Equals(Companion_Tri_.Create_Maybe_()) {
   905  		var _in4 _dafny.Sequence = (opts).Drop(1)
   906  		_ = _in4
   907  		var _in5 m_Wrappers.Option = m_Wrappers.Companion_Option_.Create_Some_(((opts).Select(0).(Param)).Dtor_name())
   908  		_ = _in5
   909  		opts = _in4
   910  		optional = _in5
   911  		goto TAIL_CALL_START
   912  	} else if (optional).Is_None() {
   913  		var _in6 _dafny.Sequence = (opts).Drop(1)
   914  		_ = _in6
   915  		var _in7 m_Wrappers.Option = optional
   916  		_ = _in7
   917  		opts = _in6
   918  		optional = _in7
   919  		goto TAIL_CALL_START
   920  	} else {
   921  		return m_Wrappers.Companion_Outcome_.Create_Fail_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Required positional argument '"), ((opts).Select(0).(Param)).Dtor_name()), _dafny.SeqOfString("' follows optional positional argument '")), (optional).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString("'.")))
   922  	}
   923  }
   924  func (_static *CompanionStruct_Default___) GetPositionals(opts _dafny.Sequence, args _dafny.Sequence, params _dafny.Sequence) m_Wrappers.Result {
   925  	goto TAIL_CALL_START
   926  TAIL_CALL_START:
   927  	if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 {
   928  		return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(args, params))
   929  	} else if !(((opts).Select(0).(Param)).Is_Opt()) {
   930  		var _in0 _dafny.Sequence = (opts).Drop(1)
   931  		_ = _in0
   932  		var _in1 _dafny.Sequence = args
   933  		_ = _in1
   934  		var _in2 _dafny.Sequence = params
   935  		_ = _in2
   936  		opts = _in0
   937  		args = _in1
   938  		params = _in2
   939  		goto TAIL_CALL_START
   940  	} else if (((opts).Select(0).(Param)).Dtor_positional()).Equals(Companion_Tri_.Create_No_()) {
   941  		var _in3 _dafny.Sequence = (opts).Drop(1)
   942  		_ = _in3
   943  		var _in4 _dafny.Sequence = args
   944  		_ = _in4
   945  		var _in5 _dafny.Sequence = params
   946  		_ = _in5
   947  		opts = _in3
   948  		args = _in4
   949  		params = _in5
   950  		goto TAIL_CALL_START
   951  	} else if (((opts).Select(0).(Param)).Dtor_positional()).Equals(Companion_Tri_.Create_Yes_()) {
   952  		if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   953  			return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Positional arg '"), ((opts).Select(0).(Param)).Dtor_name()), _dafny.SeqOfString("' is required, but we've run out of arguments.")))
   954  		} else if Companion_Default___.ValidPositional((args).Select(0).(_dafny.Sequence)) {
   955  			var _in6 _dafny.Sequence = (opts).Drop(1)
   956  			_ = _in6
   957  			var _in7 _dafny.Sequence = (args).Drop(1)
   958  			_ = _in7
   959  			var _in8 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(params, _dafny.SeqOf(Companion_OneArg_.Create_OneArg_(((opts).Select(0).(Param)).Dtor_name(), m_Wrappers.Companion_Option_.Create_Some_((args).Select(0).(_dafny.Sequence)))))
   960  			_ = _in8
   961  			opts = _in6
   962  			args = _in7
   963  			params = _in8
   964  			goto TAIL_CALL_START
   965  		} else {
   966  			return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Positional arg "), ((opts).Select(0).(Param)).Dtor_name()), _dafny.SeqOfString(" matched with invalid positional value '")), (args).Select(0).(_dafny.Sequence)), _dafny.SeqOfString("'.")))
   967  		}
   968  	} else {
   969  		if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
   970  			return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(args, params))
   971  		} else if Companion_Default___.ValidPositional((args).Select(0).(_dafny.Sequence)) {
   972  			var _in9 _dafny.Sequence = (opts).Drop(1)
   973  			_ = _in9
   974  			var _in10 _dafny.Sequence = (args).Drop(1)
   975  			_ = _in10
   976  			var _in11 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(params, _dafny.SeqOf(Companion_OneArg_.Create_OneArg_(((opts).Select(0).(Param)).Dtor_name(), m_Wrappers.Companion_Option_.Create_Some_((args).Select(0).(_dafny.Sequence)))))
   977  			_ = _in11
   978  			opts = _in9
   979  			args = _in10
   980  			params = _in11
   981  			goto TAIL_CALL_START
   982  		} else {
   983  			return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(args, params))
   984  		}
   985  	}
   986  }
   987  func (_static *CompanionStruct_Default___) GetOptions(opts Options, args _dafny.Sequence) m_Wrappers.Result {
   988  	var _0_newOpts _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate((opts).Dtor_params(), _dafny.SeqOf(Companion_Default___.HELP__PARAM()))
   989  	_ = _0_newOpts
   990  	var _1_inherits _dafny.Sequence = Companion_Default___.Filter(func(coer24 func(Param) bool) func(interface{}) bool {
   991  		return func(arg28 interface{}) bool {
   992  			return coer24(arg28.(Param))
   993  		}
   994  	}(func(_2_o Param) bool {
   995  		return (_2_o).Inherits()
   996  	}), _0_newOpts)
   997  	_ = _1_inherits
   998  	var _3_valueOrError0 m_Wrappers.Outcome = Companion_Default___.TestPositionals(_0_newOpts, m_Wrappers.Companion_Option_.Create_None_())
   999  	_ = _3_valueOrError0
  1000  	if (_3_valueOrError0).IsFailure() {
  1001  		return (_3_valueOrError0).PropagateFailure()
  1002  	} else {
  1003  		var _4_valueOrError1 m_Wrappers.Result = Companion_Default___.GetPositionals(_0_newOpts, (args).Drop(1), _dafny.SeqOf())
  1004  		_ = _4_valueOrError1
  1005  		if (_4_valueOrError1).IsFailure() {
  1006  			return (_4_valueOrError1).PropagateFailure()
  1007  		} else {
  1008  			var _let_tmp_rhs0 _dafny.Tuple = (_4_valueOrError1).Extract().(_dafny.Tuple)
  1009  			_ = _let_tmp_rhs0
  1010  			var _5_newArgs _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(0)).(_dafny.Sequence)
  1011  			_ = _5_newArgs
  1012  			var _6_params _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(1)).(_dafny.Sequence)
  1013  			_ = _6_params
  1014  			var _7_valueOrError2 m_Wrappers.Result = Companion_Default___.GetMaps(_0_newOpts, _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap())
  1015  			_ = _7_valueOrError2
  1016  			if (_7_valueOrError2).IsFailure() {
  1017  				return (_7_valueOrError2).PropagateFailure()
  1018  			} else {
  1019  				var _let_tmp_rhs1 _dafny.Tuple = (_7_valueOrError2).Extract().(_dafny.Tuple)
  1020  				_ = _let_tmp_rhs1
  1021  				var _8_longMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(0)).(_dafny.Map)
  1022  				_ = _8_longMap
  1023  				var _9_shortMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(1)).(_dafny.Map)
  1024  				_ = _9_shortMap
  1025  				var _10_commandMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(2)).(_dafny.Map)
  1026  				_ = _10_commandMap
  1027  				var _11_context Context = Companion_Context_.Create_Context_(_8_longMap, _9_shortMap, _1_inherits, _10_commandMap, (args).Select(0).(_dafny.Sequence))
  1028  				_ = _11_context
  1029  				var _12_valueOrError3 m_Wrappers.Result = Companion_Default___.GetOptions2(_5_newArgs, _11_context, _6_params, _dafny.SeqOf())
  1030  				_ = _12_valueOrError3
  1031  				if (_12_valueOrError3).IsFailure() {
  1032  					return (_12_valueOrError3).PropagateFailure()
  1033  				} else {
  1034  					var _13_result Parsed = (_12_valueOrError3).Extract().(Parsed)
  1035  					_ = _13_result
  1036  					return Companion_Default___.PostProcess(opts, _13_result)
  1037  				}
  1038  			}
  1039  		}
  1040  	}
  1041  }
  1042  func (_static *CompanionStruct_Default___) IndexOf(xs _dafny.Sequence, v interface{}) _dafny.Int {
  1043  	var _0___accumulator _dafny.Int = _dafny.Zero
  1044  	_ = _0___accumulator
  1045  	goto TAIL_CALL_START
  1046  TAIL_CALL_START:
  1047  	if _dafny.AreEqual((xs).Select(0).(interface{}), v) {
  1048  		return (_dafny.Zero).Plus(_0___accumulator)
  1049  	} else {
  1050  		_0___accumulator = (_0___accumulator).Plus(_dafny.One)
  1051  		var _in0 _dafny.Sequence = (xs).Drop(1)
  1052  		_ = _in0
  1053  		var _in1 interface{} = v
  1054  		_ = _in1
  1055  		xs = _in0
  1056  		v = _in1
  1057  		goto TAIL_CALL_START
  1058  	}
  1059  }
  1060  func (_static *CompanionStruct_Default___) SplitOnce(s _dafny.Sequence, delim interface{}) _dafny.Tuple {
  1061  	var _0_i _dafny.Int = Companion_Default___.IndexOf(s, delim)
  1062  	_ = _0_i
  1063  	return _dafny.TupleOf((s).Take((_0_i).Uint32()), (s).Drop(((_0_i).Plus(_dafny.One)).Uint32()))
  1064  }
  1065  func (_static *CompanionStruct_Default___) GetOptions2(args _dafny.Sequence, context Context, parms _dafny.Sequence, files _dafny.Sequence) m_Wrappers.Result {
  1066  	if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 {
  1067  		return m_Wrappers.Companion_Result_.Create_Success_(Companion_Parsed_.Create_Parsed_((context).Dtor_command(), parms, files, m_Wrappers.Companion_Option_.Create_None_()))
  1068  	} else if ((context).Dtor_commands()).Contains((args).Select(0).(_dafny.Sequence)) {
  1069  		var _0_inherits _dafny.Sequence = Companion_Default___.Filter(func(coer25 func(Param) bool) func(interface{}) bool {
  1070  			return func(arg29 interface{}) bool {
  1071  				return coer25(arg29.(Param))
  1072  			}
  1073  		}(func(_1_o Param) bool {
  1074  			return (_1_o).Inherits()
  1075  		}), (((context).Dtor_commands()).Get((args).Select(0).(_dafny.Sequence)).(Options)).Dtor_params())
  1076  		_ = _0_inherits
  1077  		var _2_newOpts _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate((((context).Dtor_commands()).Get((args).Select(0).(_dafny.Sequence)).(Options)).Dtor_params(), (context).Dtor_inherits())
  1078  		_ = _2_newOpts
  1079  		var _3_valueOrError0 m_Wrappers.Outcome = Companion_Default___.TestPositionals(_2_newOpts, m_Wrappers.Companion_Option_.Create_None_())
  1080  		_ = _3_valueOrError0
  1081  		if (_3_valueOrError0).IsFailure() {
  1082  			return (_3_valueOrError0).PropagateFailure()
  1083  		} else {
  1084  			var _4_valueOrError1 m_Wrappers.Result = Companion_Default___.GetPositionals(_2_newOpts, (args).Drop(1), _dafny.SeqOf())
  1085  			_ = _4_valueOrError1
  1086  			if (_4_valueOrError1).IsFailure() {
  1087  				return (_4_valueOrError1).PropagateFailure()
  1088  			} else {
  1089  				var _let_tmp_rhs0 _dafny.Tuple = (_4_valueOrError1).Extract().(_dafny.Tuple)
  1090  				_ = _let_tmp_rhs0
  1091  				var _5_newArgs _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(0)).(_dafny.Sequence)
  1092  				_ = _5_newArgs
  1093  				var _6_params _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(1)).(_dafny.Sequence)
  1094  				_ = _6_params
  1095  				var _7_valueOrError2 m_Wrappers.Result = Companion_Default___.GetMaps(_2_newOpts, _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap())
  1096  				_ = _7_valueOrError2
  1097  				if (_7_valueOrError2).IsFailure() {
  1098  					return (_7_valueOrError2).PropagateFailure()
  1099  				} else {
  1100  					var _let_tmp_rhs1 _dafny.Tuple = (_7_valueOrError2).Extract().(_dafny.Tuple)
  1101  					_ = _let_tmp_rhs1
  1102  					var _8_longMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(0)).(_dafny.Map)
  1103  					_ = _8_longMap
  1104  					var _9_shortMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(1)).(_dafny.Map)
  1105  					_ = _9_shortMap
  1106  					var _10_commandSet _dafny.Map = (*(_let_tmp_rhs1).IndexInt(2)).(_dafny.Map)
  1107  					_ = _10_commandSet
  1108  					var _11_newContext Context = Companion_Context_.Create_Context_(_8_longMap, _9_shortMap, _dafny.Companion_Sequence_.Concatenate((context).Dtor_inherits(), _0_inherits), _10_commandSet, (args).Select(0).(_dafny.Sequence))
  1109  					_ = _11_newContext
  1110  					var _12_lostArgs _dafny.Int = (_dafny.IntOfUint32((args).Cardinality())).Minus(_dafny.IntOfUint32((_5_newArgs).Cardinality()))
  1111  					_ = _12_lostArgs
  1112  					var _13_valueOrError3 m_Wrappers.Result = Companion_Default___.GetOptions2((args).Drop((_12_lostArgs).Uint32()), _11_newContext, _6_params, _dafny.SeqOf())
  1113  					_ = _13_valueOrError3
  1114  					if (_13_valueOrError3).IsFailure() {
  1115  						return (_13_valueOrError3).PropagateFailure()
  1116  					} else {
  1117  						var _14_result Parsed = (_13_valueOrError3).Extract().(Parsed)
  1118  						_ = _14_result
  1119  						return m_Wrappers.Companion_Result_.Create_Success_(Companion_Parsed_.Create_Parsed_((context).Dtor_command(), parms, files, m_Wrappers.Companion_Option_.Create_Some_(_14_result)))
  1120  					}
  1121  				}
  1122  			}
  1123  		}
  1124  	} else if _dafny.Companion_Sequence_.Equal((args).Select(0).(_dafny.Sequence), _dafny.SeqOfString("--")) {
  1125  		return m_Wrappers.Companion_Result_.Create_Success_(Companion_Parsed_.Create_Parsed_((context).Dtor_command(), parms, _dafny.Companion_Sequence_.Concatenate(files, (args).Drop(1)), m_Wrappers.Companion_Option_.Create_None_()))
  1126  	} else if _dafny.Companion_Sequence_.IsProperPrefixOf(_dafny.SeqOfString("--"), (args).Select(0).(_dafny.Sequence)) {
  1127  		var _15_longOpt _dafny.Sequence = ((args).Select(0).(_dafny.Sequence)).Drop(2)
  1128  		_ = _15_longOpt
  1129  		if _dafny.Companion_Sequence_.Contains(_15_longOpt, _dafny.Char('=')) {
  1130  			var _let_tmp_rhs2 _dafny.Tuple = Companion_Default___.SplitOnce(_15_longOpt, _dafny.Char('='))
  1131  			_ = _let_tmp_rhs2
  1132  			var _16_opt _dafny.Sequence = (*(_let_tmp_rhs2).IndexInt(0)).(_dafny.Sequence)
  1133  			_ = _16_opt
  1134  			var _17_arg _dafny.Sequence = (*(_let_tmp_rhs2).IndexInt(1)).(_dafny.Sequence)
  1135  			_ = _17_arg
  1136  			if ((context).Dtor_longMap()).Contains(_16_opt) {
  1137  				if (((context).Dtor_longMap()).Get(_16_opt).(Param)).NeedsArg() {
  1138  					return Companion_Default___.GetOptions2((args).Drop(1), context, _dafny.Companion_Sequence_.Concatenate(parms, (((context).Dtor_longMap()).Get(_16_opt).(Param)).MakeArg(m_Wrappers.Companion_Option_.Create_Some_(_17_arg))), files)
  1139  				} else {
  1140  					return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option "), _16_opt), _dafny.SeqOfString(" does not take an argument, but it got one.")))
  1141  				}
  1142  			} else {
  1143  				return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option "), _16_opt), _dafny.SeqOfString(" not recognized.")))
  1144  			}
  1145  		} else if ((context).Dtor_longMap()).Contains(_15_longOpt) {
  1146  			var _18_opt Param = ((context).Dtor_longMap()).Get(_15_longOpt).(Param)
  1147  			_ = _18_opt
  1148  			if (_18_opt).NeedsArg() {
  1149  				if (_dafny.IntOfUint32((args).Cardinality())).Cmp(_dafny.IntOfInt64(2)) < 0 {
  1150  					return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option "), _15_longOpt), _dafny.SeqOfString(" requires an argument, but didn't get one.")))
  1151  				} else {
  1152  					return Companion_Default___.GetOptions2((args).Drop(2), context, _dafny.Companion_Sequence_.Concatenate(parms, (_18_opt).MakeArg(m_Wrappers.Companion_Option_.Create_Some_((args).Select(1).(_dafny.Sequence)))), files)
  1153  				}
  1154  			} else if (((_18_opt).Is_Flag()) && ((_18_opt).Dtor_solo())) && ((((_dafny.IntOfUint32((args).Cardinality())).Cmp(_dafny.One) != 0) || ((_dafny.IntOfUint32((parms).Cardinality())).Sign() != 0)) || ((_dafny.IntOfUint32((files).Cardinality())).Sign() != 0)) {
  1155  				return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option '"), _15_longOpt), _dafny.SeqOfString("' used with other stuff, but must only be used alone.")))
  1156  			} else {
  1157  				return Companion_Default___.GetOptions2((args).Drop(1), context, _dafny.Companion_Sequence_.Concatenate(parms, (_18_opt).MakeArg(m_Wrappers.Companion_Option_.Create_None_())), files)
  1158  			}
  1159  		} else {
  1160  			return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option "), _15_longOpt), _dafny.SeqOfString(" not recognized.")))
  1161  		}
  1162  	} else if _dafny.Companion_Sequence_.Equal(_dafny.SeqOfString("-"), (args).Select(0).(_dafny.Sequence)) {
  1163  		return Companion_Default___.GetOptions2((args).Drop(1), context, parms, _dafny.Companion_Sequence_.Concatenate(files, _dafny.SeqOf((args).Select(0).(_dafny.Sequence))))
  1164  	} else if _dafny.Companion_Sequence_.IsProperPrefixOf(_dafny.SeqOfString("-"), (args).Select(0).(_dafny.Sequence)) {
  1165  		var _19_valueOrError4 m_Wrappers.Result = Companion_Default___.GetShort(((args).Select(0).(_dafny.Sequence)).Drop(1), (context).Dtor_longMap(), (context).Dtor_shortMap(), _dafny.SeqOf())
  1166  		_ = _19_valueOrError4
  1167  		if (_19_valueOrError4).IsFailure() {
  1168  			return (_19_valueOrError4).PropagateFailure()
  1169  		} else {
  1170  			var _let_tmp_rhs3 _dafny.Tuple = (_19_valueOrError4).Extract().(_dafny.Tuple)
  1171  			_ = _let_tmp_rhs3
  1172  			var _20_newParms _dafny.Sequence = (*(_let_tmp_rhs3).IndexInt(0)).(_dafny.Sequence)
  1173  			_ = _20_newParms
  1174  			var _21_nextParm m_Wrappers.Option = (*(_let_tmp_rhs3).IndexInt(1)).(m_Wrappers.Option)
  1175  			_ = _21_nextParm
  1176  			if (_21_nextParm).Is_None() {
  1177  				return Companion_Default___.GetOptions2((args).Drop(1), context, _dafny.Companion_Sequence_.Concatenate(parms, _20_newParms), files)
  1178  			} else if (_dafny.IntOfUint32((args).Cardinality())).Cmp(_dafny.One) == 0 {
  1179  				return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Short option "), _dafny.SeqOfChars((_21_nextParm).Dtor_value().(_dafny.Char))), _dafny.SeqOfString(" requires argument but didn't get one.")))
  1180  			} else {
  1181  				var _22_longOpt _dafny.Sequence = ((context).Dtor_shortMap()).Get((_21_nextParm).Dtor_value().(_dafny.Char)).(_dafny.Sequence)
  1182  				_ = _22_longOpt
  1183  				var _23_opt Param = ((context).Dtor_longMap()).Get(_22_longOpt).(Param)
  1184  				_ = _23_opt
  1185  				return Companion_Default___.GetOptions2((args).Drop(2), context, _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(parms, _20_newParms), (_23_opt).MakeArg(m_Wrappers.Companion_Option_.Create_Some_((args).Select(1).(_dafny.Sequence)))), files)
  1186  			}
  1187  		}
  1188  	} else if (((context).Dtor_commands()).Cardinality()).Sign() == 0 {
  1189  		return Companion_Default___.GetOptions2((args).Drop(1), context, parms, _dafny.Companion_Sequence_.Concatenate(files, _dafny.SeqOf((args).Select(0).(_dafny.Sequence))))
  1190  	} else {
  1191  		return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Unrecognized command "), (args).Select(0).(_dafny.Sequence)), _dafny.SeqOfString(" for ")), (context).Dtor_command()), _dafny.SeqOfString("\nRun '")), (context).Dtor_command()), _dafny.SeqOfString(" --help' for usage.")))
  1192  	}
  1193  }
  1194  func (_static *CompanionStruct_Default___) GetShort(arg _dafny.Sequence, longMap _dafny.Map, shortMap _dafny.Map, parms _dafny.Sequence) m_Wrappers.Result {
  1195  	goto TAIL_CALL_START
  1196  TAIL_CALL_START:
  1197  	if (_dafny.IntOfUint32((arg).Cardinality())).Sign() == 0 {
  1198  		return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(parms, m_Wrappers.Companion_Option_.Create_None_()))
  1199  	} else {
  1200  		var _0_ch _dafny.Char = (arg).Select(0).(_dafny.Char)
  1201  		_ = _0_ch
  1202  		if (shortMap).Contains(_0_ch) {
  1203  			var _1_opt _dafny.Sequence = (shortMap).Get(_0_ch).(_dafny.Sequence)
  1204  			_ = _1_opt
  1205  			if ((longMap).Get(_1_opt).(Param)).NeedsArg() {
  1206  				if (_dafny.IntOfUint32((arg).Cardinality())).Cmp(_dafny.One) == 0 {
  1207  					return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(parms, m_Wrappers.Companion_Option_.Create_Some_(_0_ch)))
  1208  				} else {
  1209  					return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_dafny.Companion_Sequence_.Concatenate(parms, ((longMap).Get(_1_opt).(Param)).MakeArg(m_Wrappers.Companion_Option_.Create_Some_((arg).Drop(1)))), m_Wrappers.Companion_Option_.Create_None_()))
  1210  				}
  1211  			} else {
  1212  				var _in0 _dafny.Sequence = (arg).Drop(1)
  1213  				_ = _in0
  1214  				var _in1 _dafny.Map = longMap
  1215  				_ = _in1
  1216  				var _in2 _dafny.Map = shortMap
  1217  				_ = _in2
  1218  				var _in3 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(parms, ((longMap).Get(_1_opt).(Param)).MakeArg(m_Wrappers.Companion_Option_.Create_None_()))
  1219  				_ = _in3
  1220  				arg = _in0
  1221  				longMap = _in1
  1222  				shortMap = _in2
  1223  				parms = _in3
  1224  				goto TAIL_CALL_START
  1225  			}
  1226  		} else {
  1227  			return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Short option '"), _dafny.SeqOfChars(_0_ch)), _dafny.SeqOfString("' not recognized.")))
  1228  		}
  1229  	}
  1230  }
  1231  func (_static *CompanionStruct_Default___) NullChar() _dafny.Char {
  1232  	return _dafny.Char((_dafny.Zero).Int32())
  1233  }
  1234  func (_static *CompanionStruct_Default___) HELP__STR() _dafny.Sequence {
  1235  	return _dafny.SeqOfString("help")
  1236  }
  1237  func (_static *CompanionStruct_Default___) HELP__PARAM() Param {
  1238  	return Companion_Param_.Create_Flag_(Companion_Default___.HELP__STR(), _dafny.SeqOfString("This help text."), Companion_Default___.NullChar(), true, true, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf())
  1239  }
  1240  
  1241  // End of class Default__
  1242  
  1243  // Definition of datatype Tri
  1244  type Tri struct {
  1245  	Data_Tri_
  1246  }
  1247  
  1248  func (_this Tri) Get_() Data_Tri_ {
  1249  	return _this.Data_Tri_
  1250  }
  1251  
  1252  type Data_Tri_ interface {
  1253  	isTri()
  1254  }
  1255  
  1256  type CompanionStruct_Tri_ struct {
  1257  }
  1258  
  1259  var Companion_Tri_ = CompanionStruct_Tri_{}
  1260  
  1261  type Tri_Yes struct {
  1262  }
  1263  
  1264  func (Tri_Yes) isTri() {}
  1265  
  1266  func (CompanionStruct_Tri_) Create_Yes_() Tri {
  1267  	return Tri{Tri_Yes{}}
  1268  }
  1269  
  1270  func (_this Tri) Is_Yes() bool {
  1271  	_, ok := _this.Get_().(Tri_Yes)
  1272  	return ok
  1273  }
  1274  
  1275  type Tri_No struct {
  1276  }
  1277  
  1278  func (Tri_No) isTri() {}
  1279  
  1280  func (CompanionStruct_Tri_) Create_No_() Tri {
  1281  	return Tri{Tri_No{}}
  1282  }
  1283  
  1284  func (_this Tri) Is_No() bool {
  1285  	_, ok := _this.Get_().(Tri_No)
  1286  	return ok
  1287  }
  1288  
  1289  type Tri_Maybe struct {
  1290  }
  1291  
  1292  func (Tri_Maybe) isTri() {}
  1293  
  1294  func (CompanionStruct_Tri_) Create_Maybe_() Tri {
  1295  	return Tri{Tri_Maybe{}}
  1296  }
  1297  
  1298  func (_this Tri) Is_Maybe() bool {
  1299  	_, ok := _this.Get_().(Tri_Maybe)
  1300  	return ok
  1301  }
  1302  
  1303  func (CompanionStruct_Tri_) Default() Tri {
  1304  	return Companion_Tri_.Create_Yes_()
  1305  }
  1306  
  1307  func (_ CompanionStruct_Tri_) AllSingletonConstructors() _dafny.Iterator {
  1308  	i := -1
  1309  	return func() (interface{}, bool) {
  1310  		i++
  1311  		switch i {
  1312  		case 0:
  1313  			return Companion_Tri_.Create_Yes_(), true
  1314  		case 1:
  1315  			return Companion_Tri_.Create_No_(), true
  1316  		case 2:
  1317  			return Companion_Tri_.Create_Maybe_(), true
  1318  		default:
  1319  			return Tri{}, false
  1320  		}
  1321  	}
  1322  }
  1323  
  1324  func (_this Tri) String() string {
  1325  	switch _this.Get_().(type) {
  1326  	case nil:
  1327  		return "null"
  1328  	case Tri_Yes:
  1329  		{
  1330  			return "GetOpt.Tri.Yes"
  1331  		}
  1332  	case Tri_No:
  1333  		{
  1334  			return "GetOpt.Tri.No"
  1335  		}
  1336  	case Tri_Maybe:
  1337  		{
  1338  			return "GetOpt.Tri.Maybe"
  1339  		}
  1340  	default:
  1341  		{
  1342  			return "<unexpected>"
  1343  		}
  1344  	}
  1345  }
  1346  
  1347  func (_this Tri) Equals(other Tri) bool {
  1348  	switch _this.Get_().(type) {
  1349  	case Tri_Yes:
  1350  		{
  1351  			_, ok := other.Get_().(Tri_Yes)
  1352  			return ok
  1353  		}
  1354  	case Tri_No:
  1355  		{
  1356  			_, ok := other.Get_().(Tri_No)
  1357  			return ok
  1358  		}
  1359  	case Tri_Maybe:
  1360  		{
  1361  			_, ok := other.Get_().(Tri_Maybe)
  1362  			return ok
  1363  		}
  1364  	default:
  1365  		{
  1366  			return false // unexpected
  1367  		}
  1368  	}
  1369  }
  1370  
  1371  func (_this Tri) EqualsGeneric(other interface{}) bool {
  1372  	typed, ok := other.(Tri)
  1373  	return ok && _this.Equals(typed)
  1374  }
  1375  
  1376  func Type_Tri_() _dafny.TypeDescriptor {
  1377  	return type_Tri_{}
  1378  }
  1379  
  1380  type type_Tri_ struct {
  1381  }
  1382  
  1383  func (_this type_Tri_) Default() interface{} {
  1384  	return Companion_Tri_.Default()
  1385  }
  1386  
  1387  func (_this type_Tri_) String() string {
  1388  	return "GetOpt.Tri"
  1389  }
  1390  func (_this Tri) ParentTraits_() []*_dafny.TraitID {
  1391  	return [](*_dafny.TraitID){}
  1392  }
  1393  
  1394  var _ _dafny.TraitOffspring = Tri{}
  1395  
  1396  // End of datatype Tri
  1397  
  1398  // Definition of datatype Visibility
  1399  type Visibility struct {
  1400  	Data_Visibility_
  1401  }
  1402  
  1403  func (_this Visibility) Get_() Data_Visibility_ {
  1404  	return _this.Data_Visibility_
  1405  }
  1406  
  1407  type Data_Visibility_ interface {
  1408  	isVisibility()
  1409  }
  1410  
  1411  type CompanionStruct_Visibility_ struct {
  1412  }
  1413  
  1414  var Companion_Visibility_ = CompanionStruct_Visibility_{}
  1415  
  1416  type Visibility_Normal struct {
  1417  }
  1418  
  1419  func (Visibility_Normal) isVisibility() {}
  1420  
  1421  func (CompanionStruct_Visibility_) Create_Normal_() Visibility {
  1422  	return Visibility{Visibility_Normal{}}
  1423  }
  1424  
  1425  func (_this Visibility) Is_Normal() bool {
  1426  	_, ok := _this.Get_().(Visibility_Normal)
  1427  	return ok
  1428  }
  1429  
  1430  type Visibility_Hidden struct {
  1431  }
  1432  
  1433  func (Visibility_Hidden) isVisibility() {}
  1434  
  1435  func (CompanionStruct_Visibility_) Create_Hidden_() Visibility {
  1436  	return Visibility{Visibility_Hidden{}}
  1437  }
  1438  
  1439  func (_this Visibility) Is_Hidden() bool {
  1440  	_, ok := _this.Get_().(Visibility_Hidden)
  1441  	return ok
  1442  }
  1443  
  1444  type Visibility_Deprecated struct {
  1445  }
  1446  
  1447  func (Visibility_Deprecated) isVisibility() {}
  1448  
  1449  func (CompanionStruct_Visibility_) Create_Deprecated_() Visibility {
  1450  	return Visibility{Visibility_Deprecated{}}
  1451  }
  1452  
  1453  func (_this Visibility) Is_Deprecated() bool {
  1454  	_, ok := _this.Get_().(Visibility_Deprecated)
  1455  	return ok
  1456  }
  1457  
  1458  func (CompanionStruct_Visibility_) Default() Visibility {
  1459  	return Companion_Visibility_.Create_Normal_()
  1460  }
  1461  
  1462  func (_ CompanionStruct_Visibility_) AllSingletonConstructors() _dafny.Iterator {
  1463  	i := -1
  1464  	return func() (interface{}, bool) {
  1465  		i++
  1466  		switch i {
  1467  		case 0:
  1468  			return Companion_Visibility_.Create_Normal_(), true
  1469  		case 1:
  1470  			return Companion_Visibility_.Create_Hidden_(), true
  1471  		case 2:
  1472  			return Companion_Visibility_.Create_Deprecated_(), true
  1473  		default:
  1474  			return Visibility{}, false
  1475  		}
  1476  	}
  1477  }
  1478  
  1479  func (_this Visibility) String() string {
  1480  	switch _this.Get_().(type) {
  1481  	case nil:
  1482  		return "null"
  1483  	case Visibility_Normal:
  1484  		{
  1485  			return "GetOpt.Visibility.Normal"
  1486  		}
  1487  	case Visibility_Hidden:
  1488  		{
  1489  			return "GetOpt.Visibility.Hidden"
  1490  		}
  1491  	case Visibility_Deprecated:
  1492  		{
  1493  			return "GetOpt.Visibility.Deprecated"
  1494  		}
  1495  	default:
  1496  		{
  1497  			return "<unexpected>"
  1498  		}
  1499  	}
  1500  }
  1501  
  1502  func (_this Visibility) Equals(other Visibility) bool {
  1503  	switch _this.Get_().(type) {
  1504  	case Visibility_Normal:
  1505  		{
  1506  			_, ok := other.Get_().(Visibility_Normal)
  1507  			return ok
  1508  		}
  1509  	case Visibility_Hidden:
  1510  		{
  1511  			_, ok := other.Get_().(Visibility_Hidden)
  1512  			return ok
  1513  		}
  1514  	case Visibility_Deprecated:
  1515  		{
  1516  			_, ok := other.Get_().(Visibility_Deprecated)
  1517  			return ok
  1518  		}
  1519  	default:
  1520  		{
  1521  			return false // unexpected
  1522  		}
  1523  	}
  1524  }
  1525  
  1526  func (_this Visibility) EqualsGeneric(other interface{}) bool {
  1527  	typed, ok := other.(Visibility)
  1528  	return ok && _this.Equals(typed)
  1529  }
  1530  
  1531  func Type_Visibility_() _dafny.TypeDescriptor {
  1532  	return type_Visibility_{}
  1533  }
  1534  
  1535  type type_Visibility_ struct {
  1536  }
  1537  
  1538  func (_this type_Visibility_) Default() interface{} {
  1539  	return Companion_Visibility_.Default()
  1540  }
  1541  
  1542  func (_this type_Visibility_) String() string {
  1543  	return "GetOpt.Visibility"
  1544  }
  1545  func (_this Visibility) ParentTraits_() []*_dafny.TraitID {
  1546  	return [](*_dafny.TraitID){}
  1547  }
  1548  
  1549  var _ _dafny.TraitOffspring = Visibility{}
  1550  
  1551  // End of datatype Visibility
  1552  
  1553  // Definition of datatype Options
  1554  type Options struct {
  1555  	Data_Options_
  1556  }
  1557  
  1558  func (_this Options) Get_() Data_Options_ {
  1559  	return _this.Data_Options_
  1560  }
  1561  
  1562  type Data_Options_ interface {
  1563  	isOptions()
  1564  }
  1565  
  1566  type CompanionStruct_Options_ struct {
  1567  }
  1568  
  1569  var Companion_Options_ = CompanionStruct_Options_{}
  1570  
  1571  type Options_Options struct {
  1572  	Name   _dafny.Sequence
  1573  	Help   _dafny.Sequence
  1574  	Params _dafny.Sequence
  1575  }
  1576  
  1577  func (Options_Options) isOptions() {}
  1578  
  1579  func (CompanionStruct_Options_) Create_Options_(Name _dafny.Sequence, Help _dafny.Sequence, Params _dafny.Sequence) Options {
  1580  	return Options{Options_Options{Name, Help, Params}}
  1581  }
  1582  
  1583  func (_this Options) Is_Options() bool {
  1584  	_, ok := _this.Get_().(Options_Options)
  1585  	return ok
  1586  }
  1587  
  1588  func (CompanionStruct_Options_) Default() Options {
  1589  	return Companion_Options_.Create_Options_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq)
  1590  }
  1591  
  1592  func (_this Options) Dtor_name() _dafny.Sequence {
  1593  	return _this.Get_().(Options_Options).Name
  1594  }
  1595  
  1596  func (_this Options) Dtor_help() _dafny.Sequence {
  1597  	return _this.Get_().(Options_Options).Help
  1598  }
  1599  
  1600  func (_this Options) Dtor_params() _dafny.Sequence {
  1601  	return _this.Get_().(Options_Options).Params
  1602  }
  1603  
  1604  func (_this Options) String() string {
  1605  	switch data := _this.Get_().(type) {
  1606  	case nil:
  1607  		return "null"
  1608  	case Options_Options:
  1609  		{
  1610  			return "GetOpt.Options.Options" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Help) + ", " + _dafny.String(data.Params) + ")"
  1611  		}
  1612  	default:
  1613  		{
  1614  			return "<unexpected>"
  1615  		}
  1616  	}
  1617  }
  1618  
  1619  func (_this Options) Equals(other Options) bool {
  1620  	switch data1 := _this.Get_().(type) {
  1621  	case Options_Options:
  1622  		{
  1623  			data2, ok := other.Get_().(Options_Options)
  1624  			return ok && data1.Name.Equals(data2.Name) && data1.Help.Equals(data2.Help) && data1.Params.Equals(data2.Params)
  1625  		}
  1626  	default:
  1627  		{
  1628  			return false // unexpected
  1629  		}
  1630  	}
  1631  }
  1632  
  1633  func (_this Options) EqualsGeneric(other interface{}) bool {
  1634  	typed, ok := other.(Options)
  1635  	return ok && _this.Equals(typed)
  1636  }
  1637  
  1638  func Type_Options_() _dafny.TypeDescriptor {
  1639  	return type_Options_{}
  1640  }
  1641  
  1642  type type_Options_ struct {
  1643  }
  1644  
  1645  func (_this type_Options_) Default() interface{} {
  1646  	return Companion_Options_.Default()
  1647  }
  1648  
  1649  func (_this type_Options_) String() string {
  1650  	return "GetOpt.Options"
  1651  }
  1652  func (_this Options) ParentTraits_() []*_dafny.TraitID {
  1653  	return [](*_dafny.TraitID){}
  1654  }
  1655  
  1656  var _ _dafny.TraitOffspring = Options{}
  1657  
  1658  // End of datatype Options
  1659  
  1660  // Definition of datatype Unused
  1661  type Unused struct {
  1662  	Data_Unused_
  1663  }
  1664  
  1665  func (_this Unused) Get_() Data_Unused_ {
  1666  	return _this.Data_Unused_
  1667  }
  1668  
  1669  type Data_Unused_ interface {
  1670  	isUnused()
  1671  }
  1672  
  1673  type CompanionStruct_Unused_ struct {
  1674  }
  1675  
  1676  var Companion_Unused_ = CompanionStruct_Unused_{}
  1677  
  1678  type Unused_UnusedOk struct {
  1679  }
  1680  
  1681  func (Unused_UnusedOk) isUnused() {}
  1682  
  1683  func (CompanionStruct_Unused_) Create_UnusedOk_() Unused {
  1684  	return Unused{Unused_UnusedOk{}}
  1685  }
  1686  
  1687  func (_this Unused) Is_UnusedOk() bool {
  1688  	_, ok := _this.Get_().(Unused_UnusedOk)
  1689  	return ok
  1690  }
  1691  
  1692  type Unused_Required struct {
  1693  }
  1694  
  1695  func (Unused_Required) isUnused() {}
  1696  
  1697  func (CompanionStruct_Unused_) Create_Required_() Unused {
  1698  	return Unused{Unused_Required{}}
  1699  }
  1700  
  1701  func (_this Unused) Is_Required() bool {
  1702  	_, ok := _this.Get_().(Unused_Required)
  1703  	return ok
  1704  }
  1705  
  1706  type Unused_Default struct {
  1707  	Val _dafny.Sequence
  1708  }
  1709  
  1710  func (Unused_Default) isUnused() {}
  1711  
  1712  func (CompanionStruct_Unused_) Create_Default_(Val _dafny.Sequence) Unused {
  1713  	return Unused{Unused_Default{Val}}
  1714  }
  1715  
  1716  func (_this Unused) Is_Default() bool {
  1717  	_, ok := _this.Get_().(Unused_Default)
  1718  	return ok
  1719  }
  1720  
  1721  func (CompanionStruct_Unused_) Default() Unused {
  1722  	return Companion_Unused_.Create_UnusedOk_()
  1723  }
  1724  
  1725  func (_this Unused) Dtor_val() _dafny.Sequence {
  1726  	return _this.Get_().(Unused_Default).Val
  1727  }
  1728  
  1729  func (_this Unused) String() string {
  1730  	switch data := _this.Get_().(type) {
  1731  	case nil:
  1732  		return "null"
  1733  	case Unused_UnusedOk:
  1734  		{
  1735  			return "GetOpt.Unused.UnusedOk"
  1736  		}
  1737  	case Unused_Required:
  1738  		{
  1739  			return "GetOpt.Unused.Required"
  1740  		}
  1741  	case Unused_Default:
  1742  		{
  1743  			return "GetOpt.Unused.Default" + "(" + _dafny.String(data.Val) + ")"
  1744  		}
  1745  	default:
  1746  		{
  1747  			return "<unexpected>"
  1748  		}
  1749  	}
  1750  }
  1751  
  1752  func (_this Unused) Equals(other Unused) bool {
  1753  	switch data1 := _this.Get_().(type) {
  1754  	case Unused_UnusedOk:
  1755  		{
  1756  			_, ok := other.Get_().(Unused_UnusedOk)
  1757  			return ok
  1758  		}
  1759  	case Unused_Required:
  1760  		{
  1761  			_, ok := other.Get_().(Unused_Required)
  1762  			return ok
  1763  		}
  1764  	case Unused_Default:
  1765  		{
  1766  			data2, ok := other.Get_().(Unused_Default)
  1767  			return ok && data1.Val.Equals(data2.Val)
  1768  		}
  1769  	default:
  1770  		{
  1771  			return false // unexpected
  1772  		}
  1773  	}
  1774  }
  1775  
  1776  func (_this Unused) EqualsGeneric(other interface{}) bool {
  1777  	typed, ok := other.(Unused)
  1778  	return ok && _this.Equals(typed)
  1779  }
  1780  
  1781  func Type_Unused_() _dafny.TypeDescriptor {
  1782  	return type_Unused_{}
  1783  }
  1784  
  1785  type type_Unused_ struct {
  1786  }
  1787  
  1788  func (_this type_Unused_) Default() interface{} {
  1789  	return Companion_Unused_.Default()
  1790  }
  1791  
  1792  func (_this type_Unused_) String() string {
  1793  	return "GetOpt.Unused"
  1794  }
  1795  func (_this Unused) ParentTraits_() []*_dafny.TraitID {
  1796  	return [](*_dafny.TraitID){}
  1797  }
  1798  
  1799  var _ _dafny.TraitOffspring = Unused{}
  1800  
  1801  // End of datatype Unused
  1802  
  1803  // Definition of datatype Param
  1804  type Param struct {
  1805  	Data_Param_
  1806  }
  1807  
  1808  func (_this Param) Get_() Data_Param_ {
  1809  	return _this.Data_Param_
  1810  }
  1811  
  1812  type Data_Param_ interface {
  1813  	isParam()
  1814  }
  1815  
  1816  type CompanionStruct_Param_ struct {
  1817  }
  1818  
  1819  var Companion_Param_ = CompanionStruct_Param_{}
  1820  
  1821  type Param_Opt struct {
  1822  	Name       _dafny.Sequence
  1823  	Help       _dafny.Sequence
  1824  	ArgName    _dafny.Sequence
  1825  	Short      _dafny.Char
  1826  	Unused     Unused
  1827  	Inherit    bool
  1828  	Vis        Visibility
  1829  	ShortAlias _dafny.Sequence
  1830  	LongAlias  _dafny.Sequence
  1831  	Positional Tri
  1832  }
  1833  
  1834  func (Param_Opt) isParam() {}
  1835  
  1836  func (CompanionStruct_Param_) Create_Opt_(Name _dafny.Sequence, Help _dafny.Sequence, ArgName _dafny.Sequence, Short _dafny.Char, Unused Unused, Inherit bool, Vis Visibility, ShortAlias _dafny.Sequence, LongAlias _dafny.Sequence, Positional Tri) Param {
  1837  	return Param{Param_Opt{Name, Help, ArgName, Short, Unused, Inherit, Vis, ShortAlias, LongAlias, Positional}}
  1838  }
  1839  
  1840  func (_this Param) Is_Opt() bool {
  1841  	_, ok := _this.Get_().(Param_Opt)
  1842  	return ok
  1843  }
  1844  
  1845  type Param_Flag struct {
  1846  	Name       _dafny.Sequence
  1847  	Help       _dafny.Sequence
  1848  	Short      _dafny.Char
  1849  	Solo       bool
  1850  	Inherit    bool
  1851  	Vis        Visibility
  1852  	ShortAlias _dafny.Sequence
  1853  	LongAlias  _dafny.Sequence
  1854  }
  1855  
  1856  func (Param_Flag) isParam() {}
  1857  
  1858  func (CompanionStruct_Param_) Create_Flag_(Name _dafny.Sequence, Help _dafny.Sequence, Short _dafny.Char, Solo bool, Inherit bool, Vis Visibility, ShortAlias _dafny.Sequence, LongAlias _dafny.Sequence) Param {
  1859  	return Param{Param_Flag{Name, Help, Short, Solo, Inherit, Vis, ShortAlias, LongAlias}}
  1860  }
  1861  
  1862  func (_this Param) Is_Flag() bool {
  1863  	_, ok := _this.Get_().(Param_Flag)
  1864  	return ok
  1865  }
  1866  
  1867  type Param_Command struct {
  1868  	Options Options
  1869  }
  1870  
  1871  func (Param_Command) isParam() {}
  1872  
  1873  func (CompanionStruct_Param_) Create_Command_(Options Options) Param {
  1874  	return Param{Param_Command{Options}}
  1875  }
  1876  
  1877  func (_this Param) Is_Command() bool {
  1878  	_, ok := _this.Get_().(Param_Command)
  1879  	return ok
  1880  }
  1881  
  1882  func (CompanionStruct_Param_) Default() Param {
  1883  	return Companion_Param_.Create_Opt_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.Char('D'), Companion_Unused_.Default(), false, Companion_Visibility_.Default(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq, Companion_Tri_.Default())
  1884  }
  1885  
  1886  func (_this Param) Dtor_name() _dafny.Sequence {
  1887  	switch data := _this.Get_().(type) {
  1888  	case Param_Opt:
  1889  		return data.Name
  1890  	default:
  1891  		return data.(Param_Flag).Name
  1892  	}
  1893  }
  1894  
  1895  func (_this Param) Dtor_help() _dafny.Sequence {
  1896  	switch data := _this.Get_().(type) {
  1897  	case Param_Opt:
  1898  		return data.Help
  1899  	default:
  1900  		return data.(Param_Flag).Help
  1901  	}
  1902  }
  1903  
  1904  func (_this Param) Dtor_argName() _dafny.Sequence {
  1905  	return _this.Get_().(Param_Opt).ArgName
  1906  }
  1907  
  1908  func (_this Param) Dtor_short() _dafny.Char {
  1909  	switch data := _this.Get_().(type) {
  1910  	case Param_Opt:
  1911  		return data.Short
  1912  	default:
  1913  		return data.(Param_Flag).Short
  1914  	}
  1915  }
  1916  
  1917  func (_this Param) Dtor_unused() Unused {
  1918  	return _this.Get_().(Param_Opt).Unused
  1919  }
  1920  
  1921  func (_this Param) Dtor_inherit() bool {
  1922  	switch data := _this.Get_().(type) {
  1923  	case Param_Opt:
  1924  		return data.Inherit
  1925  	default:
  1926  		return data.(Param_Flag).Inherit
  1927  	}
  1928  }
  1929  
  1930  func (_this Param) Dtor_vis() Visibility {
  1931  	switch data := _this.Get_().(type) {
  1932  	case Param_Opt:
  1933  		return data.Vis
  1934  	default:
  1935  		return data.(Param_Flag).Vis
  1936  	}
  1937  }
  1938  
  1939  func (_this Param) Dtor_shortAlias() _dafny.Sequence {
  1940  	switch data := _this.Get_().(type) {
  1941  	case Param_Opt:
  1942  		return data.ShortAlias
  1943  	default:
  1944  		return data.(Param_Flag).ShortAlias
  1945  	}
  1946  }
  1947  
  1948  func (_this Param) Dtor_longAlias() _dafny.Sequence {
  1949  	switch data := _this.Get_().(type) {
  1950  	case Param_Opt:
  1951  		return data.LongAlias
  1952  	default:
  1953  		return data.(Param_Flag).LongAlias
  1954  	}
  1955  }
  1956  
  1957  func (_this Param) Dtor_positional() Tri {
  1958  	return _this.Get_().(Param_Opt).Positional
  1959  }
  1960  
  1961  func (_this Param) Dtor_solo() bool {
  1962  	return _this.Get_().(Param_Flag).Solo
  1963  }
  1964  
  1965  func (_this Param) Dtor_options() Options {
  1966  	return _this.Get_().(Param_Command).Options
  1967  }
  1968  
  1969  func (_this Param) String() string {
  1970  	switch data := _this.Get_().(type) {
  1971  	case nil:
  1972  		return "null"
  1973  	case Param_Opt:
  1974  		{
  1975  			return "GetOpt.Param.Opt" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Help) + ", " + _dafny.String(data.ArgName) + ", " + _dafny.String(data.Short) + ", " + _dafny.String(data.Unused) + ", " + _dafny.String(data.Inherit) + ", " + _dafny.String(data.Vis) + ", " + _dafny.String(data.ShortAlias) + ", " + _dafny.String(data.LongAlias) + ", " + _dafny.String(data.Positional) + ")"
  1976  		}
  1977  	case Param_Flag:
  1978  		{
  1979  			return "GetOpt.Param.Flag" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Help) + ", " + _dafny.String(data.Short) + ", " + _dafny.String(data.Solo) + ", " + _dafny.String(data.Inherit) + ", " + _dafny.String(data.Vis) + ", " + _dafny.String(data.ShortAlias) + ", " + _dafny.String(data.LongAlias) + ")"
  1980  		}
  1981  	case Param_Command:
  1982  		{
  1983  			return "GetOpt.Param.Command" + "(" + _dafny.String(data.Options) + ")"
  1984  		}
  1985  	default:
  1986  		{
  1987  			return "<unexpected>"
  1988  		}
  1989  	}
  1990  }
  1991  
  1992  func (_this Param) Equals(other Param) bool {
  1993  	switch data1 := _this.Get_().(type) {
  1994  	case Param_Opt:
  1995  		{
  1996  			data2, ok := other.Get_().(Param_Opt)
  1997  			return ok && data1.Name.Equals(data2.Name) && data1.Help.Equals(data2.Help) && data1.ArgName.Equals(data2.ArgName) && data1.Short == data2.Short && data1.Unused.Equals(data2.Unused) && data1.Inherit == data2.Inherit && data1.Vis.Equals(data2.Vis) && data1.ShortAlias.Equals(data2.ShortAlias) && data1.LongAlias.Equals(data2.LongAlias) && data1.Positional.Equals(data2.Positional)
  1998  		}
  1999  	case Param_Flag:
  2000  		{
  2001  			data2, ok := other.Get_().(Param_Flag)
  2002  			return ok && data1.Name.Equals(data2.Name) && data1.Help.Equals(data2.Help) && data1.Short == data2.Short && data1.Solo == data2.Solo && data1.Inherit == data2.Inherit && data1.Vis.Equals(data2.Vis) && data1.ShortAlias.Equals(data2.ShortAlias) && data1.LongAlias.Equals(data2.LongAlias)
  2003  		}
  2004  	case Param_Command:
  2005  		{
  2006  			data2, ok := other.Get_().(Param_Command)
  2007  			return ok && data1.Options.Equals(data2.Options)
  2008  		}
  2009  	default:
  2010  		{
  2011  			return false // unexpected
  2012  		}
  2013  	}
  2014  }
  2015  
  2016  func (_this Param) EqualsGeneric(other interface{}) bool {
  2017  	typed, ok := other.(Param)
  2018  	return ok && _this.Equals(typed)
  2019  }
  2020  
  2021  func Type_Param_() _dafny.TypeDescriptor {
  2022  	return type_Param_{}
  2023  }
  2024  
  2025  type type_Param_ struct {
  2026  }
  2027  
  2028  func (_this type_Param_) Default() interface{} {
  2029  	return Companion_Param_.Default()
  2030  }
  2031  
  2032  func (_this type_Param_) String() string {
  2033  	return "GetOpt.Param"
  2034  }
  2035  func (_this Param) ParentTraits_() []*_dafny.TraitID {
  2036  	return [](*_dafny.TraitID){}
  2037  }
  2038  
  2039  var _ _dafny.TraitOffspring = Param{}
  2040  
  2041  func (_this Param) NeedsArg() bool {
  2042  	{
  2043  		return (_this).Is_Opt()
  2044  	}
  2045  }
  2046  func (_this Param) Inherits() bool {
  2047  	{
  2048  		return (((_this).Is_Opt()) || ((_this).Is_Flag())) && ((_this).Dtor_inherit())
  2049  	}
  2050  }
  2051  func (_this Param) ShowHelp() bool {
  2052  	{
  2053  		return ((_this).Is_Command()) || (((_this).Dtor_vis()).Equals(Companion_Visibility_.Create_Normal_()))
  2054  	}
  2055  }
  2056  func (_this Param) KeepResult() bool {
  2057  	{
  2058  		return ((_this).Is_Command()) || (!((_this).Dtor_vis()).Equals(Companion_Visibility_.Create_Deprecated_()))
  2059  	}
  2060  }
  2061  func (_this Param) Name() _dafny.Sequence {
  2062  	{
  2063  		if (_this).Is_Command() {
  2064  			return ((_this).Dtor_options()).Dtor_name()
  2065  		} else {
  2066  			return (_this).Dtor_name()
  2067  		}
  2068  	}
  2069  }
  2070  func (_this Param) MakeArg(value m_Wrappers.Option) _dafny.Sequence {
  2071  	{
  2072  		if (_this).KeepResult() {
  2073  			return _dafny.SeqOf(Companion_OneArg_.Create_OneArg_((_this).Name(), value))
  2074  		} else {
  2075  			return _dafny.SeqOf()
  2076  		}
  2077  	}
  2078  }
  2079  func (_this Param) ShortAlias() _dafny.Sequence {
  2080  	{
  2081  		if (_this).Is_Command() {
  2082  			return _dafny.SeqOfChars()
  2083  		} else {
  2084  			return (_this).Dtor_shortAlias()
  2085  		}
  2086  	}
  2087  }
  2088  func (_this Param) LongAlias() _dafny.Sequence {
  2089  	{
  2090  		if (_this).Is_Command() {
  2091  			return _dafny.SeqOf()
  2092  		} else {
  2093  			return (_this).Dtor_longAlias()
  2094  		}
  2095  	}
  2096  }
  2097  func (_this Param) Required() bool {
  2098  	{
  2099  		return ((_this).Is_Opt()) && (((_this).Dtor_unused()).Is_Required())
  2100  	}
  2101  }
  2102  func (_this Param) HasDefault() bool {
  2103  	{
  2104  		return ((_this).Is_Opt()) && (((_this).Dtor_unused()).Is_Default())
  2105  	}
  2106  }
  2107  
  2108  // End of datatype Param
  2109  
  2110  // Definition of datatype OneArg
  2111  type OneArg struct {
  2112  	Data_OneArg_
  2113  }
  2114  
  2115  func (_this OneArg) Get_() Data_OneArg_ {
  2116  	return _this.Data_OneArg_
  2117  }
  2118  
  2119  type Data_OneArg_ interface {
  2120  	isOneArg()
  2121  }
  2122  
  2123  type CompanionStruct_OneArg_ struct {
  2124  }
  2125  
  2126  var Companion_OneArg_ = CompanionStruct_OneArg_{}
  2127  
  2128  type OneArg_OneArg struct {
  2129  	Name  _dafny.Sequence
  2130  	Value m_Wrappers.Option
  2131  }
  2132  
  2133  func (OneArg_OneArg) isOneArg() {}
  2134  
  2135  func (CompanionStruct_OneArg_) Create_OneArg_(Name _dafny.Sequence, Value m_Wrappers.Option) OneArg {
  2136  	return OneArg{OneArg_OneArg{Name, Value}}
  2137  }
  2138  
  2139  func (_this OneArg) Is_OneArg() bool {
  2140  	_, ok := _this.Get_().(OneArg_OneArg)
  2141  	return ok
  2142  }
  2143  
  2144  func (CompanionStruct_OneArg_) Default() OneArg {
  2145  	return Companion_OneArg_.Create_OneArg_(_dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default())
  2146  }
  2147  
  2148  func (_this OneArg) Dtor_name() _dafny.Sequence {
  2149  	return _this.Get_().(OneArg_OneArg).Name
  2150  }
  2151  
  2152  func (_this OneArg) Dtor_value() m_Wrappers.Option {
  2153  	return _this.Get_().(OneArg_OneArg).Value
  2154  }
  2155  
  2156  func (_this OneArg) String() string {
  2157  	switch data := _this.Get_().(type) {
  2158  	case nil:
  2159  		return "null"
  2160  	case OneArg_OneArg:
  2161  		{
  2162  			return "GetOpt.OneArg.OneArg" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Value) + ")"
  2163  		}
  2164  	default:
  2165  		{
  2166  			return "<unexpected>"
  2167  		}
  2168  	}
  2169  }
  2170  
  2171  func (_this OneArg) Equals(other OneArg) bool {
  2172  	switch data1 := _this.Get_().(type) {
  2173  	case OneArg_OneArg:
  2174  		{
  2175  			data2, ok := other.Get_().(OneArg_OneArg)
  2176  			return ok && data1.Name.Equals(data2.Name) && data1.Value.Equals(data2.Value)
  2177  		}
  2178  	default:
  2179  		{
  2180  			return false // unexpected
  2181  		}
  2182  	}
  2183  }
  2184  
  2185  func (_this OneArg) EqualsGeneric(other interface{}) bool {
  2186  	typed, ok := other.(OneArg)
  2187  	return ok && _this.Equals(typed)
  2188  }
  2189  
  2190  func Type_OneArg_() _dafny.TypeDescriptor {
  2191  	return type_OneArg_{}
  2192  }
  2193  
  2194  type type_OneArg_ struct {
  2195  }
  2196  
  2197  func (_this type_OneArg_) Default() interface{} {
  2198  	return Companion_OneArg_.Default()
  2199  }
  2200  
  2201  func (_this type_OneArg_) String() string {
  2202  	return "GetOpt.OneArg"
  2203  }
  2204  func (_this OneArg) ParentTraits_() []*_dafny.TraitID {
  2205  	return [](*_dafny.TraitID){}
  2206  }
  2207  
  2208  var _ _dafny.TraitOffspring = OneArg{}
  2209  
  2210  // End of datatype OneArg
  2211  
  2212  // Definition of datatype Parsed
  2213  type Parsed struct {
  2214  	Data_Parsed_
  2215  }
  2216  
  2217  func (_this Parsed) Get_() Data_Parsed_ {
  2218  	return _this.Data_Parsed_
  2219  }
  2220  
  2221  type Data_Parsed_ interface {
  2222  	isParsed()
  2223  }
  2224  
  2225  type CompanionStruct_Parsed_ struct {
  2226  }
  2227  
  2228  var Companion_Parsed_ = CompanionStruct_Parsed_{}
  2229  
  2230  type Parsed_Parsed struct {
  2231  	Command    _dafny.Sequence
  2232  	Params     _dafny.Sequence
  2233  	Files      _dafny.Sequence
  2234  	Subcommand m_Wrappers.Option
  2235  }
  2236  
  2237  func (Parsed_Parsed) isParsed() {}
  2238  
  2239  func (CompanionStruct_Parsed_) Create_Parsed_(Command _dafny.Sequence, Params _dafny.Sequence, Files _dafny.Sequence, Subcommand m_Wrappers.Option) Parsed {
  2240  	return Parsed{Parsed_Parsed{Command, Params, Files, Subcommand}}
  2241  }
  2242  
  2243  func (_this Parsed) Is_Parsed() bool {
  2244  	_, ok := _this.Get_().(Parsed_Parsed)
  2245  	return ok
  2246  }
  2247  
  2248  func (CompanionStruct_Parsed_) Default() Parsed {
  2249  	return Companion_Parsed_.Create_Parsed_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq, _dafny.EmptySeq, m_Wrappers.Companion_Option_.Default())
  2250  }
  2251  
  2252  func (_this Parsed) Dtor_command() _dafny.Sequence {
  2253  	return _this.Get_().(Parsed_Parsed).Command
  2254  }
  2255  
  2256  func (_this Parsed) Dtor_params() _dafny.Sequence {
  2257  	return _this.Get_().(Parsed_Parsed).Params
  2258  }
  2259  
  2260  func (_this Parsed) Dtor_files() _dafny.Sequence {
  2261  	return _this.Get_().(Parsed_Parsed).Files
  2262  }
  2263  
  2264  func (_this Parsed) Dtor_subcommand() m_Wrappers.Option {
  2265  	return _this.Get_().(Parsed_Parsed).Subcommand
  2266  }
  2267  
  2268  func (_this Parsed) String() string {
  2269  	switch data := _this.Get_().(type) {
  2270  	case nil:
  2271  		return "null"
  2272  	case Parsed_Parsed:
  2273  		{
  2274  			return "GetOpt.Parsed.Parsed" + "(" + _dafny.String(data.Command) + ", " + _dafny.String(data.Params) + ", " + _dafny.String(data.Files) + ", " + _dafny.String(data.Subcommand) + ")"
  2275  		}
  2276  	default:
  2277  		{
  2278  			return "<unexpected>"
  2279  		}
  2280  	}
  2281  }
  2282  
  2283  func (_this Parsed) Equals(other Parsed) bool {
  2284  	switch data1 := _this.Get_().(type) {
  2285  	case Parsed_Parsed:
  2286  		{
  2287  			data2, ok := other.Get_().(Parsed_Parsed)
  2288  			return ok && data1.Command.Equals(data2.Command) && data1.Params.Equals(data2.Params) && data1.Files.Equals(data2.Files) && data1.Subcommand.Equals(data2.Subcommand)
  2289  		}
  2290  	default:
  2291  		{
  2292  			return false // unexpected
  2293  		}
  2294  	}
  2295  }
  2296  
  2297  func (_this Parsed) EqualsGeneric(other interface{}) bool {
  2298  	typed, ok := other.(Parsed)
  2299  	return ok && _this.Equals(typed)
  2300  }
  2301  
  2302  func Type_Parsed_() _dafny.TypeDescriptor {
  2303  	return type_Parsed_{}
  2304  }
  2305  
  2306  type type_Parsed_ struct {
  2307  }
  2308  
  2309  func (_this type_Parsed_) Default() interface{} {
  2310  	return Companion_Parsed_.Default()
  2311  }
  2312  
  2313  func (_this type_Parsed_) String() string {
  2314  	return "GetOpt.Parsed"
  2315  }
  2316  func (_this Parsed) ParentTraits_() []*_dafny.TraitID {
  2317  	return [](*_dafny.TraitID){}
  2318  }
  2319  
  2320  var _ _dafny.TraitOffspring = Parsed{}
  2321  
  2322  // End of datatype Parsed
  2323  
  2324  // Definition of class CommandMap
  2325  type CommandMap struct {
  2326  }
  2327  
  2328  func New_CommandMap_() *CommandMap {
  2329  	_this := CommandMap{}
  2330  
  2331  	return &_this
  2332  }
  2333  
  2334  type CompanionStruct_CommandMap_ struct {
  2335  }
  2336  
  2337  var Companion_CommandMap_ = CompanionStruct_CommandMap_{}
  2338  
  2339  func (*CommandMap) String() string {
  2340  	return "GetOpt.CommandMap"
  2341  }
  2342  
  2343  // End of class CommandMap
  2344  
  2345  func Type_CommandMap_() _dafny.TypeDescriptor {
  2346  	return type_CommandMap_{}
  2347  }
  2348  
  2349  type type_CommandMap_ struct {
  2350  }
  2351  
  2352  func (_this type_CommandMap_) Default() interface{} {
  2353  	return _dafny.EmptyMap
  2354  }
  2355  
  2356  func (_this type_CommandMap_) String() string {
  2357  	return "GetOpt.CommandMap"
  2358  }
  2359  func (_this *CompanionStruct_CommandMap_) Is_(__source _dafny.Map) bool {
  2360  	var _0_x _dafny.Map = (__source)
  2361  	_ = _0_x
  2362  	return _dafny.Quantifier((_0_x).Keys().Elements(), true, func(_forall_var_0 _dafny.Sequence) bool {
  2363  		var _1_k _dafny.Sequence
  2364  		_1_k = interface{}(_forall_var_0).(_dafny.Sequence)
  2365  		return !((_0_x).Contains(_1_k)) || (_dafny.Companion_Sequence_.Equal(((_0_x).Get(_1_k).(Options)).Dtor_name(), _1_k))
  2366  	})
  2367  }
  2368  
  2369  // Definition of datatype Context
  2370  type Context struct {
  2371  	Data_Context_
  2372  }
  2373  
  2374  func (_this Context) Get_() Data_Context_ {
  2375  	return _this.Data_Context_
  2376  }
  2377  
  2378  type Data_Context_ interface {
  2379  	isContext()
  2380  }
  2381  
  2382  type CompanionStruct_Context_ struct {
  2383  }
  2384  
  2385  var Companion_Context_ = CompanionStruct_Context_{}
  2386  
  2387  type Context_Context struct {
  2388  	LongMap  _dafny.Map
  2389  	ShortMap _dafny.Map
  2390  	Inherits _dafny.Sequence
  2391  	Commands _dafny.Map
  2392  	Command  _dafny.Sequence
  2393  }
  2394  
  2395  func (Context_Context) isContext() {}
  2396  
  2397  func (CompanionStruct_Context_) Create_Context_(LongMap _dafny.Map, ShortMap _dafny.Map, Inherits _dafny.Sequence, Commands _dafny.Map, Command _dafny.Sequence) Context {
  2398  	return Context{Context_Context{LongMap, ShortMap, Inherits, Commands, Command}}
  2399  }
  2400  
  2401  func (_this Context) Is_Context() bool {
  2402  	_, ok := _this.Get_().(Context_Context)
  2403  	return ok
  2404  }
  2405  
  2406  func (CompanionStruct_Context_) Default() Context {
  2407  	return Companion_Context_.Create_Context_(_dafny.EmptyMap, _dafny.EmptyMap, _dafny.EmptySeq, _dafny.EmptyMap, _dafny.EmptySeq.SetString())
  2408  }
  2409  
  2410  func (_this Context) Dtor_longMap() _dafny.Map {
  2411  	return _this.Get_().(Context_Context).LongMap
  2412  }
  2413  
  2414  func (_this Context) Dtor_shortMap() _dafny.Map {
  2415  	return _this.Get_().(Context_Context).ShortMap
  2416  }
  2417  
  2418  func (_this Context) Dtor_inherits() _dafny.Sequence {
  2419  	return _this.Get_().(Context_Context).Inherits
  2420  }
  2421  
  2422  func (_this Context) Dtor_commands() _dafny.Map {
  2423  	return _this.Get_().(Context_Context).Commands
  2424  }
  2425  
  2426  func (_this Context) Dtor_command() _dafny.Sequence {
  2427  	return _this.Get_().(Context_Context).Command
  2428  }
  2429  
  2430  func (_this Context) String() string {
  2431  	switch data := _this.Get_().(type) {
  2432  	case nil:
  2433  		return "null"
  2434  	case Context_Context:
  2435  		{
  2436  			return "GetOpt.Context.Context" + "(" + _dafny.String(data.LongMap) + ", " + _dafny.String(data.ShortMap) + ", " + _dafny.String(data.Inherits) + ", " + _dafny.String(data.Commands) + ", " + _dafny.String(data.Command) + ")"
  2437  		}
  2438  	default:
  2439  		{
  2440  			return "<unexpected>"
  2441  		}
  2442  	}
  2443  }
  2444  
  2445  func (_this Context) Equals(other Context) bool {
  2446  	switch data1 := _this.Get_().(type) {
  2447  	case Context_Context:
  2448  		{
  2449  			data2, ok := other.Get_().(Context_Context)
  2450  			return ok && data1.LongMap.Equals(data2.LongMap) && data1.ShortMap.Equals(data2.ShortMap) && data1.Inherits.Equals(data2.Inherits) && data1.Commands.Equals(data2.Commands) && data1.Command.Equals(data2.Command)
  2451  		}
  2452  	default:
  2453  		{
  2454  			return false // unexpected
  2455  		}
  2456  	}
  2457  }
  2458  
  2459  func (_this Context) EqualsGeneric(other interface{}) bool {
  2460  	typed, ok := other.(Context)
  2461  	return ok && _this.Equals(typed)
  2462  }
  2463  
  2464  func Type_Context_() _dafny.TypeDescriptor {
  2465  	return type_Context_{}
  2466  }
  2467  
  2468  type type_Context_ struct {
  2469  }
  2470  
  2471  func (_this type_Context_) Default() interface{} {
  2472  	return Companion_Context_.Default()
  2473  }
  2474  
  2475  func (_this type_Context_) String() string {
  2476  	return "GetOpt.Context"
  2477  }
  2478  func (_this Context) ParentTraits_() []*_dafny.TraitID {
  2479  	return [](*_dafny.TraitID){}
  2480  }
  2481  
  2482  var _ _dafny.TraitOffspring = Context{}
  2483  
  2484  // End of datatype Context