Repository: abice/go-enum
Pull request #273 (2025-07-22 03:38:57)

feat: allow disabling of iota
Fixes: #269

Adds a No Iota functionality to the generator so that users can disable the iota generation all together.  It might be that this becomes the default, but want to opt in to start with.

## Copilot description
This pull request introduces significant enhancements to the `go-enum` code generator, including the addition of a `NoIota` option for generating enums with explicit values, improved test coverage, and various codebase refinements. Below is a summary of the most important changes:

### New Feature: `NoIota` Option
* Added a `NoIota` configuration option to generate enum constants with explicit values instead of using `iota`. This is implemented in the `GeneratorConfig` struct and exposed via the `WithNoIota` option function. ([[1]](diffhunk://#diff-46503ed51c817c8425fbf136a10aae8ddb66d858a9faf8849014d873e149d8ebR6), [[2]](diffhunk://#diff-46503ed51c817c8425fbf136a10aae8ddb66d858a9faf8849014d873e149d8ebR48-R54))
* Updated the `enum.tmpl` template to support the `NoIota` option, ensuring proper handling of explicit enum values. ([[1]](diffhunk://#diff-6609de6ece72309825f6f23022de2080f9bf62605b685febd44b7361f972aea5R25), [[2]](diffhunk://#diff-6609de6ece72309825f6f23022de2080f9bf62605b685febd44b7361f972aea5R34-R37))
* Introduced the `DirectValue` helper function to retrieve exact enum values without adjustments for `iota`. ([generator/template_funcs.goR130-R143](diffhunk://#diff-91af3f6897d8e68712e1340a02f78c4d73e77194826e1e862752ca506ba596fbR130-R143))

### Code Generation Enhancements
* Modified the `Generate` method to include the `NoIota` option in the template data. ([generator/generator.goL227-R202](diffhunk://#diff-ebe0c9061541da82c4de858d4996649ee6d33bf4036cb96200cc3f3ae891a536L227-R202))
* Updated the snapshot tests to verify the behavior of the `NoIota` option, ensuring correct output for enums with explicit values. ([[1]](diffhunk://#diff-52ae3a39c4d670fae82899f3b2fe02a6281204d6beba7906b37508be90a18e4aR1-R108), [[2]](diffhunk://#diff-bf1870bf3b23c9b0266791321b7dd81d725229cb9e77bf08ff12e50e4feb50b6R171-R210))

### Testing Improvements
* Added comprehensive unit tests for the `NoIota` option, including scenarios with enums that have non-sequential or explicit values. ([[1]](diffhunk://#diff-dbd11da5628ff8b1d8949912e598b3f99e647548e35c73be92cc274c176aefcaR1-R234), [[2]](diffhunk://#diff-fd4e64c2a498bf2e7e06785d9fc30a2dbe1fb2e5a2503b937f8025043c66831bR1-R8))
* Benchmarked key enum methods (`String`, `IsValid`, and `Parse`) for performance validation. ([example/buggy_test.goR1-R234](diffhunk://#diff-dbd11da5628ff8b1d8949912e598b3f99e647548e35c73be92cc274c176aefcaR1-R234))

### Codebase Simplifications
* Replaced `interface{}` with `any` for improved readability and alignment with modern Go conventions. ([[1]](diffhunk://#diff-ebe0c9061541da82c4de858d4996649ee6d33bf4036cb96200cc3f3ae891a536L56-R70), [[2]](diffhunk://#diff-ebe0c9061541da82c4de858d4996649ee6d33bf4036cb96200cc3f3ae891a536L196-R165), [[3]](diffhunk://#diff-ebe0c9061541da82c4de858d4996649ee6d33bf4036cb96200cc3f3ae891a536L319-R289), [[4]](diffhunk://#diff-ebe0c9061541da82c4de858d4996649ee6d33bf4036cb96200cc3f3ae891a536L420-R390))
* Simplified multi-line comment parsing logic using `strings.CutPrefix`. ([generator/generator.goL583-R555](diffhunk://#diff-ebe0c9061541da82c4de858d4996649ee6d33bf4036cb96200cc3f3ae891a536L583-R555))

### Miscellaneous Updates
* Refactored the generator initialization logic to use a configuration struct (`GeneratorConfig`) for better modularity. (`F8d91541L93R93`)
* Fixed minor formatting issues in the test files. ([generator/example_test.goL4-R4](diffhunk://#diff-c179b569e437424a08257d3c42aeb849715cfd05646cdf8fc900bdf6b7c66b5bL4-R4))


Patch:
diff --git a/example/buggy.go b/example/buggy.go
new file mode 100644
index 0000000..0508573
--- /dev/null
+++ b/example/buggy.go
@@ -0,0 +1,12 @@
+//go:build example
+// +build example
+
+//go:generate ../bin/go-enum  -b example --no-iota
+package example
+
+// ENUM(
+// A = 0
+// B = 2
+// C = 1
+// )
+type Buggy uint
diff --git a/example/buggy_enum.go b/example/buggy_enum.go
new file mode 100644
index 0000000..4a8ca38
--- /dev/null
+++ b/example/buggy_enum.go
@@ -0,0 +1,63 @@
+// Code generated by go-enum DO NOT EDIT.
+// Version: example
+// Revision: example
+// Build Date: example
+// Built By: example
+
+//go:build example
+// +build example
+
+package example
+
+import (
+	"errors"
+	"fmt"
+)
+
+const (
+	// BuggyA is a Buggy of type A.
+	BuggyA Buggy = 0
+	// BuggyB is a Buggy of type B.
+	BuggyB Buggy = 2
+	// BuggyC is a Buggy of type C.
+	BuggyC Buggy = 1
+)
+
+var ErrInvalidBuggy = errors.New("not a valid Buggy")
+
+const _BuggyName = "ABC"
+
+var _BuggyMap = map[Buggy]string{
+	BuggyA: _BuggyName[0:1],
+	BuggyB: _BuggyName[1:2],
+	BuggyC: _BuggyName[2:3],
+}
+
+// String implements the Stringer interface.
+func (x Buggy) String() string {
+	if str, ok := _BuggyMap[x]; ok {
+		return str
+	}
+	return fmt.Sprintf("Buggy(%d)", x)
+}
+
+// IsValid provides a quick way to determine if the typed value is
+// part of the allowed enumerated values
+func (x Buggy) IsValid() bool {
+	_, ok := _BuggyMap[x]
+	return ok
+}
+
+var _BuggyValue = map[string]Buggy{
+	_BuggyName[0:1]: BuggyA,
+	_BuggyName[1:2]: BuggyB,
+	_BuggyName[2:3]: BuggyC,
+}
+
+// ParseBuggy attempts to convert a string to a Buggy.
+func ParseBuggy(name string) (Buggy, error) {
+	if x, ok := _BuggyValue[name]; ok {
+		return x, nil
+	}
+	return Buggy(0), fmt.Errorf("%s is %w", name, ErrInvalidBuggy)
+}
diff --git a/generator/enum.tmpl b/generator/enum.tmpl
index 481ac4a..1ce6dc4 100644
--- a/generator/enum.tmpl
+++ b/generator/enum.tmpl
@@ -22,6 +22,7 @@ const (
 {{- $enumName := .enum.Name -}}
 {{- $enumType := .enum.Type -}}
 {{- $noComments := .nocomments -}}
+{{- $noIota := .noIota -}}
 {{- $vars := dict "lastoffset" "0" -}}
 {{ range $rIndex, $value := .enum.Values }}
 	{{- $lastOffset := pluck "lastoffset" $vars | first }}{{ $offset := offset $rIndex $enumType $value }}
@@ -30,7 +31,9 @@ const (
 	{{- if $value.Comment}}
 	// {{$value.Comment}}
 	{{- end}}
+		{{if $noIota }}{{$value.PrefixedName}} {{$enumName}} = {{directVal $enumType $value}}{{else -}}
     {{$value.PrefixedName}} {{ if eq $rIndex 0 }}{{$enumName}} = iota{{ if ne "0" $offset }} + {{ $offset }}{{end}}{{else if ne $lastOffset $offset }}{{$enumName}} = iota + {{ $offset }}{{end}}{{$_ := set $vars "lastoffset" $offset}}
+		{{- end}}
 {{- end}}
 )
 {{if .names -}}
diff --git a/generator/generator.go b/generator/generator.go
index d526af9..8d91541 100644
--- a/generator/generator.go
+++ b/generator/generator.go
@@ -53,53 +53,21 @@ type EnumValue struct {
 	Name         string
 	PrefixedName string
 	ValueStr     string
-	ValueInt     interface{}
+	ValueInt     any
 	Comment      string
 }
 
 // NewGenerator is a constructor method for creating a new Generator with default
 // templates loaded.
 func NewGenerator(options ...Option) *Generator {
-	g := &Generator{
-		Version:           "-",
-		Revision:          "-",
-		BuildDate:         "-",
-		BuiltBy:           "-",
-		knownTemplates:    make(map[string]*template.Template),
-		t:                 template.New("generator"),
-		fileSet:           token.NewFileSet(),
-		userTemplateNames: make([]string, 0),
-		GeneratorConfig: GeneratorConfig{
-			NoPrefix:         false,
-			ReplacementNames: map[string]string{},
-			JSONPkg:          "encoding/json",
-		},
-	}
+	cfg := NewGeneratorConfig()
 
 	// Apply all options
 	for _, option := range options {
-		option(&g.GeneratorConfig)
+		option(cfg)
 	}
 
-	funcs := sprig.TxtFuncMap()
-
-	funcs["stringify"] = Stringify
-	funcs["mapify"] = Mapify
-	funcs["unmapify"] = Unmapify
-	funcs["namify"] = Namify
-	funcs["offset"] = Offset
-	funcs["quote"] = strconv.Quote
-
-	g.t.Funcs(funcs)
-
-	g.addEmbeddedTemplates()
-	g.updateTemplates()
-
-	// Process template files if any were provided via options
-	// This must happen AFTER embedded templates are added and updated
-	g.processUserTemplates()
-
-	return g
+	return NewGeneratorWithConfig(*cfg)
 }
 
 // NewGeneratorWithConfig is a constructor method for creating a new Generator with
@@ -125,6 +93,7 @@ func NewGeneratorWithConfig(config GeneratorConfig) *Generator {
 	funcs["namify"] = Namify
 	funcs["offset"] = Offset
 	funcs["quote"] = strconv.Quote
+	funcs["directVal"] = DirectValue
 
 	g.t.Funcs(funcs)
 
@@ -193,7 +162,7 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) {
 	pkg := f.Name.Name
 
 	vBuff := bytes.NewBuffer([]byte{})
-	err := g.t.ExecuteTemplate(vBuff, "header", map[string]interface{}{
+	err := g.t.ExecuteTemplate(vBuff, "header", map[string]any{
 		"package":   pkg,
 		"version":   g.Version,
 		"revision":  g.Revision,
@@ -224,12 +193,13 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) {
 		}
 
 		created++
-		data := map[string]interface{}{
+		data := map[string]any{
 			"enum":          enum,
 			"name":          name,
 			"lowercase":     g.LowercaseLookup,
 			"nocase":        g.CaseInsensitive,
 			"nocomments":    g.NoComments,
+			"noIota":        g.NoIota,
 			"marshal":       g.Marshal,
 			"sql":           g.SQL,
 			"sqlint":        g.SQLInt,
@@ -316,7 +286,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) {
 
 	values := strings.Split(strings.TrimSuffix(strings.TrimPrefix(enumDecl, `ENUM(`), `)`), `,`)
 	var (
-		data     interface{}
+		data     any
 		unsigned bool
 	)
 	if strings.HasPrefix(enum.Type, "u") {
@@ -417,7 +387,7 @@ func trimQuotes(q, s string) string {
 	return strings.TrimPrefix(strings.TrimSuffix(strings.TrimSpace(s), q), q)
 }
 
-func increment(d interface{}) interface{} {
+func increment(d any) any {
 	switch v := d.(type) {
 	case uint64:
 		return v + 1
@@ -580,9 +550,9 @@ func parseLinePart(line string) (paramLevel int, trimmed string) {
 func breakCommentIntoLines(comment *ast.Comment) []string {
 	lines := []string{}
 	text := comment.Text
-	if strings.HasPrefix(text, `/*`) {
+	if after, ok := strings.CutPrefix(text, `/*`); ok {
 		// deal with multi line comment
-		multiline := strings.TrimSuffix(strings.TrimPrefix(text, `/*`), `*/`)
+		multiline := strings.TrimSuffix(after, `*/`)
 		lines = append(lines, strings.Split(multiline, "\n")...)
 	} else {
 		lines = append(lines, strings.TrimPrefix(text, `//`))
diff --git a/generator/options.go b/generator/options.go
index 9e49cad..ed2d4fa 100644
--- a/generator/options.go
+++ b/generator/options.go
@@ -3,6 +3,7 @@ package generator
 // GeneratorConfig holds all the configuration options for the Generator
 type GeneratorConfig struct {
 	NoPrefix          bool              `json:"no_prefix"`
+	NoIota            bool              `json:"no_iota"`
 	LowercaseLookup   bool              `json:"lowercase_lookup"`
 	CaseInsensitive   bool              `json:"case_insensitive"`
 	Marshal           bool              `json:"marshal"`
@@ -44,6 +45,13 @@ func WithNoPrefix() Option {
 	}
 }
 
+// WithNoIota is used to generate enum constants with explicit values instead of using iota.
+func WithNoIota() Option {
+	return func(g *GeneratorConfig) {
+		g.NoIota = true
+	}
+}
+
 // WithLowercaseVariant is used to change the enum const values generated to not have the enum on them.
 func WithLowercaseVariant() Option {
 	return func(g *GeneratorConfig) {
diff --git a/generator/template_funcs.go b/generator/template_funcs.go
index 8456666..c4549dd 100644
--- a/generator/template_funcs.go
+++ b/generator/template_funcs.go
@@ -127,3 +127,17 @@ func Offset(index int, enumType string, val EnumValue) (strResult string) {
 		return strconv.FormatInt(val.ValueInt.(int64)-int64(index), 10)
 	}
 }
+
+// DirectValue returns the exact value of the enum, not adjusted for iota at all.
+func DirectValue(enumType string, val EnumValue) (strResult string) {
+	if enumType == "string" {
+		return strconv.Quote(val.ValueStr)
+	}
+	if strings.HasPrefix(enumType, "u") {
+		// Unsigned
+		return strconv.FormatUint(val.ValueInt.(uint64), 10)
+	} else {
+		// Signed
+		return strconv.FormatInt(val.ValueInt.(int64), 10)
+	}
+}
diff --git a/main.go b/main.go
index fbbf51e..f0e5412 100644
--- a/main.go
+++ b/main.go
@@ -22,6 +22,7 @@ var (
 type rootT struct {
 	FileNames         cli.StringSlice
 	NoPrefix          bool
+	NoIota            bool
 	Lowercase         bool
 	NoCase            bool
 	Marshal           bool
@@ -186,6 +187,11 @@ func main() {
 				Usage:       "Changes the default filename suffix of _enum to something else.  `.go` will be appended to the end of the string no matter what, so that `_test.go` cases can be accommodated ",
 				Destination: &argv.OutputSuffix,
 			},
+			&cli.BoolFlag{
+				Name:        "no-iota",
+				Usage:       "Disables the use of iota in generated enums.",
+				Destination: &argv.NoIota,
+			},
 		},
 		Action: func(ctx *cli.Context) error {
 			aliases, err := generator.ParseAliases(argv.Aliases.Value())
@@ -213,6 +219,7 @@ func main() {
 
 				config := generator.GeneratorConfig{
 					NoPrefix:          argv.NoPrefix,
+					NoIota:            argv.NoIota,
 					LowercaseLookup:   argv.Lowercase || argv.NoCase,
 					CaseInsensitive:   argv.NoCase,
 					Marshal:           argv.Marshal,


Test patch:
diff --git a/example/buggy_test.go b/example/buggy_test.go
new file mode 100644
index 0000000..633464b
--- /dev/null
+++ b/example/buggy_test.go
@@ -0,0 +1,234 @@
+//go:build example
+// +build example
+
+package example
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+)
+
+func TestBuggyConstants(t *testing.T) {
+	// Test that constants have correct values
+	assert.Equal(t, Buggy(0), BuggyA, "BuggyA should have value 0")
+	assert.Equal(t, Buggy(2), BuggyB, "BuggyB should have value 2")
+	assert.Equal(t, Buggy(1), BuggyC, "BuggyC should have value 1")
+}
+
+func TestBuggyString(t *testing.T) {
+	tests := []struct {
+		name     string
+		value    Buggy
+		expected string
+	}{
+		{
+			name:     "BuggyA",
+			value:    BuggyA,
+			expected: "A",
+		},
+		{
+			name:     "BuggyB",
+			value:    BuggyB,
+			expected: "B",
+		},
+		{
+			name:     "BuggyC",
+			value:    BuggyC,
+			expected: "C",
+		},
+		{
+			name:     "Invalid value",
+			value:    Buggy(99),
+			expected: "Buggy(99)",
+		},
+		{
+			name:     "Invalid value 3",
+			value:    Buggy(3),
+			expected: "Buggy(3)",
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			assert.Equal(t, tt.expected, tt.value.String())
+		})
+	}
+}
+
+func TestBuggyIsValid(t *testing.T) {
+	tests := []struct {
+		name     string
+		value    Buggy
+		expected bool
+	}{
+		{
+			name:     "BuggyA is valid",
+			value:    BuggyA,
+			expected: true,
+		},
+		{
+			name:     "BuggyB is valid",
+			value:    BuggyB,
+			expected: true,
+		},
+		{
+			name:     "BuggyC is valid",
+			value:    BuggyC,
+			expected: true,
+		},
+		{
+			name:     "Invalid value 99",
+			value:    Buggy(99),
+			expected: false,
+		},
+		{
+			name:     "Invalid value 3",
+			value:    Buggy(3),
+			expected: false,
+		},
+		{
+			name:     "Invalid value 3",
+			value:    Buggy(3),
+			expected: false,
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			assert.Equal(t, tt.expected, tt.value.IsValid())
+		})
+	}
+}
+
+func TestParseBuggy(t *testing.T) {
+	tests := []struct {
+		name          string
+		input         string
+		expected      Buggy
+		errorExpected bool
+	}{
+		{
+			name:          "Parse A",
+			input:         "A",
+			expected:      BuggyA,
+			errorExpected: false,
+		},
+		{
+			name:          "Parse B",
+			input:         "B",
+			expected:      BuggyB,
+			errorExpected: false,
+		},
+		{
+			name:          "Parse C",
+			input:         "C",
+			expected:      BuggyC,
+			errorExpected: false,
+		},
+		{
+			name:          "Parse invalid string",
+			input:         "D",
+			expected:      Buggy(0),
+			errorExpected: true,
+		},
+		{
+			name:          "Parse empty string",
+			input:         "",
+			expected:      Buggy(0),
+			errorExpected: true,
+		},
+		{
+			name:          "Parse lowercase a",
+			input:         "a",
+			expected:      Buggy(0),
+			errorExpected: true,
+		},
+		{
+			name:          "Parse numeric string",
+			input:         "1",
+			expected:      Buggy(0),
+			errorExpected: true,
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			result, err := ParseBuggy(tt.input)
+
+			if tt.errorExpected {
+				require.Error(t, err, "Expected error for input: %s", tt.input)
+				assert.Contains(t, err.Error(), "not a valid Buggy", "Error should contain 'not a valid Buggy'")
+				assert.Equal(t, tt.expected, result, "Result should be zero value on error")
+			} else {
+				require.NoError(t, err, "Unexpected error for input: %s", tt.input)
+				assert.Equal(t, tt.expected, result, "Parsed value should match expected")
+			}
+		})
+	}
+}
+
+func TestBuggyErrorType(t *testing.T) {
+	// Test that ErrInvalidBuggy is properly defined
+	assert.NotNil(t, ErrInvalidBuggy)
+	assert.Equal(t, "not a valid Buggy", ErrInvalidBuggy.Error())
+
+	// Test that ParseBuggy returns an error that wraps ErrInvalidBuggy
+	_, err := ParseBuggy("invalid")
+	require.Error(t, err)
+	assert.ErrorIs(t, err, ErrInvalidBuggy)
+}
+
+func TestBuggyEdgeCases(t *testing.T) {
+	t.Run("Zero value behavior", func(t *testing.T) {
+		var b Buggy
+		// Zero value should be 0, which is BuggyA
+		assert.Equal(t, Buggy(0), b)
+		assert.Equal(t, BuggyA, b)
+		assert.True(t, b.IsValid())
+		assert.Equal(t, "A", b.String())
+	})
+
+	t.Run("Non-sequential values", func(t *testing.T) {
+		// Test that the enum handles non-sequential values correctly
+		// A=0, B=2, C=1 - so value 1 should map to C, not B
+		assert.Equal(t, "C", Buggy(1).String())
+		assert.Equal(t, "B", Buggy(2).String())
+		assert.True(t, Buggy(1).IsValid())
+		assert.True(t, Buggy(2).IsValid())
+	})
+}
+
+func BenchmarkBuggyString(b *testing.B) {
+	values := []Buggy{BuggyA, BuggyB, BuggyC, Buggy(99)}
+
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		for _, v := range values {
+			_ = v.String()
+		}
+	}
+}
+
+func BenchmarkParseBuggy(b *testing.B) {
+	inputs := []string{"A", "B", "C", "invalid"}
+
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		for _, input := range inputs {
+			_, _ = ParseBuggy(input)
+		}
+	}
+}
+
+func BenchmarkBuggyIsValid(b *testing.B) {
+	values := []Buggy{BuggyA, BuggyB, BuggyC, Buggy(99)}
+
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		for _, v := range values {
+			_ = v.IsValid()
+		}
+	}
+}
diff --git a/generator/.snapshots/TestNoIotaExampleFile b/generator/.snapshots/TestNoIotaExampleFile
new file mode 100644
index 0000000..69aeb2e
--- /dev/null
+++ b/generator/.snapshots/TestNoIotaExampleFile
@@ -0,0 +1,1504 @@
+([]string) (len=1502) {
+  (string) (len=41) "// Code generated by go-enum DO NOT EDIT.",
+  (string) (len=13) "// Version: -",
+  (string) (len=14) "// Revision: -",
+  (string) (len=16) "// Build Date: -",
+  (string) (len=14) "// Built By: -",
+  (string) "",
+  (string) (len=17) "package generator",
+  (string) "",
+  (string) (len=8) "import (",
+  (string) (len=9) "\t\"errors\"",
+  (string) (len=6) "\t\"fmt\"",
+  (string) (len=10) "\t\"strings\"",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=38) "\t// AnimalCat is a Animal of type Cat.",
+  (string) (len=21) "\tAnimalCat Animal = 0",
+  (string) (len=38) "\t// AnimalDog is a Animal of type Dog.",
+  (string) (len=21) "\tAnimalDog Animal = 1",
+  (string) (len=40) "\t// AnimalFish is a Animal of type Fish.",
+  (string) (len=22) "\tAnimalFish Animal = 2",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=55) "var ErrInvalidAnimal = errors.New(\"not a valid Animal\")",
+  (string) "",
+  (string) (len=32) "const _AnimalName = \"CatDogFish\"",
+  (string) "",
+  (string) (len=35) "var _AnimalMap = map[Animal]string{",
+  (string) (len=30) "\tAnimalCat:  _AnimalName[0:3],",
+  (string) (len=30) "\tAnimalDog:  _AnimalName[3:6],",
+  (string) (len=31) "\tAnimalFish: _AnimalName[6:10],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=33) "func (x Animal) String() string {",
+  (string) (len=34) "\tif str, ok := _AnimalMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=32) "func (x Animal) IsValid() bool {",
+  (string) (len=23) "\t_, ok := _AnimalMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=37) "var _AnimalValue = map[string]Animal{",
+  (string) (len=47) "\t_AnimalName[0:3]:                   AnimalCat,",
+  (string) (len=47) "\tstrings.ToLower(_AnimalName[0:3]):  AnimalCat,",
+  (string) (len=47) "\t_AnimalName[3:6]:                   AnimalDog,",
+  (string) (len=47) "\tstrings.ToLower(_AnimalName[3:6]):  AnimalDog,",
+  (string) (len=48) "\t_AnimalName[6:10]:                  AnimalFish,",
+  (string) (len=48) "\tstrings.ToLower(_AnimalName[6:10]): AnimalFish,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.",
+  (string) (len=47) "func ParseAnimal(name string) (Animal, error) {",
+  (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=30) "\ttmp, err := ParseAnimal(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=55) "func (x *Animal) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=40) "func (x *Animal) Set(val string) error {",
+  (string) (len=27) "\tv, err := ParseAnimal(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=36) "func (x *Animal) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=32) "func (x *Animal) Type() string {",
+  (string) (len=16) "\treturn \"Animal\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=50) "\t// CasesTest_lower is a Cases of type Test_lower.",
+  (string) (len=26) "\tCasesTest_lower Cases = 0",
+  (string) (len=54) "\t// CasesTest_capital is a Cases of type Test_capital.",
+  (string) (len=28) "\tCasesTest_capital Cases = 1",
+  (string) (len=72) "\t// CasesAnotherLowerCaseStart is a Cases of type AnotherLowerCaseStart.",
+  (string) (len=37) "\tCasesAnotherLowerCaseStart Cases = 2",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=53) "var ErrInvalidCases = errors.New(\"not a valid Cases\")",
+  (string) "",
+  (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"",
+  (string) "",
+  (string) (len=33) "var _CasesMap = map[Cases]string{",
+  (string) (len=46) "\tCasesTest_lower:            _CasesName[0:10],",
+  (string) (len=47) "\tCasesTest_capital:          _CasesName[10:22],",
+  (string) (len=47) "\tCasesAnotherLowerCaseStart: _CasesName[22:43],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=32) "func (x Cases) String() string {",
+  (string) (len=33) "\tif str, ok := _CasesMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=31) "func (x Cases) IsValid() bool {",
+  (string) (len=22) "\t_, ok := _CasesMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=35) "var _CasesValue = map[string]Cases{",
+  (string) (len=53) "\t_CasesName[0:10]:                   CasesTest_lower,",
+  (string) (len=53) "\tstrings.ToLower(_CasesName[0:10]):  CasesTest_lower,",
+  (string) (len=55) "\t_CasesName[10:22]:                  CasesTest_capital,",
+  (string) (len=55) "\tstrings.ToLower(_CasesName[10:22]): CasesTest_capital,",
+  (string) (len=64) "\t_CasesName[22:43]:                  CasesAnotherLowerCaseStart,",
+  (string) (len=64) "\tstrings.ToLower(_CasesName[22:43]): CasesAnotherLowerCaseStart,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=54) "// ParseCases attempts to convert a string to a Cases.",
+  (string) (len=45) "func ParseCases(name string) (Cases, error) {",
+  (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=29) "\ttmp, err := ParseCases(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=54) "func (x *Cases) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=39) "func (x *Cases) Set(val string) error {",
+  (string) (len=26) "\tv, err := ParseCases(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=35) "func (x *Cases) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=31) "func (x *Cases) Type() string {",
+  (string) (len=15) "\treturn \"Cases\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=40) "\t// ColorBlack is a Color of type Black.",
+  (string) (len=21) "\tColorBlack Color = 0",
+  (string) (len=40) "\t// ColorWhite is a Color of type White.",
+  (string) (len=21) "\tColorWhite Color = 1",
+  (string) (len=36) "\t// ColorRed is a Color of type Red.",
+  (string) (len=19) "\tColorRed Color = 2",
+  (string) (len=40) "\t// ColorGreen is a Color of type Green.",
+  (string) (len=21) "\tColorGreen Color = 3",
+  (string) (len=38) "\t// ColorBlue is a Color of type Blue.",
+  (string) (len=21) "\tColorBlue Color = 33",
+  (string) (len=38) "\t// ColorGrey is a Color of type Grey.",
+  (string) (len=21) "\tColorGrey Color = 34",
+  (string) (len=42) "\t// ColorYellow is a Color of type Yellow.",
+  (string) (len=23) "\tColorYellow Color = 35",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=53) "var ErrInvalidColor = errors.New(\"not a valid Color\")",
+  (string) "",
+  (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"",
+  (string) "",
+  (string) (len=33) "var _ColorMap = map[Color]string{",
+  (string) (len=30) "\tColorBlack:  _ColorName[0:5],",
+  (string) (len=31) "\tColorWhite:  _ColorName[5:10],",
+  (string) (len=32) "\tColorRed:    _ColorName[10:13],",
+  (string) (len=32) "\tColorGreen:  _ColorName[13:18],",
+  (string) (len=32) "\tColorBlue:   _ColorName[18:22],",
+  (string) (len=32) "\tColorGrey:   _ColorName[22:26],",
+  (string) (len=32) "\tColorYellow: _ColorName[26:32],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=32) "func (x Color) String() string {",
+  (string) (len=33) "\tif str, ok := _ColorMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=31) "func (x Color) IsValid() bool {",
+  (string) (len=22) "\t_, ok := _ColorMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=35) "var _ColorValue = map[string]Color{",
+  (string) (len=48) "\t_ColorName[0:5]:                    ColorBlack,",
+  (string) (len=48) "\tstrings.ToLower(_ColorName[0:5]):   ColorBlack,",
+  (string) (len=48) "\t_ColorName[5:10]:                   ColorWhite,",
+  (string) (len=48) "\tstrings.ToLower(_ColorName[5:10]):  ColorWhite,",
+  (string) (len=46) "\t_ColorName[10:13]:                  ColorRed,",
+  (string) (len=46) "\tstrings.ToLower(_ColorName[10:13]): ColorRed,",
+  (string) (len=48) "\t_ColorName[13:18]:                  ColorGreen,",
+  (string) (len=48) "\tstrings.ToLower(_ColorName[13:18]): ColorGreen,",
+  (string) (len=47) "\t_ColorName[18:22]:                  ColorBlue,",
+  (string) (len=47) "\tstrings.ToLower(_ColorName[18:22]): ColorBlue,",
+  (string) (len=47) "\t_ColorName[22:26]:                  ColorGrey,",
+  (string) (len=47) "\tstrings.ToLower(_ColorName[22:26]): ColorGrey,",
+  (string) (len=49) "\t_ColorName[26:32]:                  ColorYellow,",
+  (string) (len=49) "\tstrings.ToLower(_ColorName[26:32]): ColorYellow,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=54) "// ParseColor attempts to convert a string to a Color.",
+  (string) (len=45) "func ParseColor(name string) (Color, error) {",
+  (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=29) "\ttmp, err := ParseColor(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=54) "func (x *Color) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=39) "func (x *Color) Set(val string) error {",
+  (string) (len=26) "\tv, err := ParseColor(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=35) "func (x *Color) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=31) "func (x *Color) Type() string {",
+  (string) (len=15) "\treturn \"Color\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=62) "\t// ColorWithCommentBlack is a ColorWithComment of type Black.",
+  (string) (len=43) "\tColorWithCommentBlack ColorWithComment = 0",
+  (string) (len=62) "\t// ColorWithCommentWhite is a ColorWithComment of type White.",
+  (string) (len=43) "\tColorWithCommentWhite ColorWithComment = 1",
+  (string) (len=58) "\t// ColorWithCommentRed is a ColorWithComment of type Red.",
+  (string) (len=41) "\tColorWithCommentRed ColorWithComment = 2",
+  (string) (len=62) "\t// ColorWithCommentGreen is a ColorWithComment of type Green.",
+  (string) (len=43) "\tColorWithCommentGreen ColorWithComment = 3",
+  (string) (len=60) "\t// ColorWithCommentBlue is a ColorWithComment of type Blue.",
+  (string) (len=24) "\t// Blue starts with 33.",
+  (string) (len=43) "\tColorWithCommentBlue ColorWithComment = 33",
+  (string) (len=60) "\t// ColorWithCommentGrey is a ColorWithComment of type Grey.",
+  (string) (len=43) "\tColorWithCommentGrey ColorWithComment = 34",
+  (string) (len=64) "\t// ColorWithCommentYellow is a ColorWithComment of type Yellow.",
+  (string) (len=45) "\tColorWithCommentYellow ColorWithComment = 35",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=75) "var ErrInvalidColorWithComment = errors.New(\"not a valid ColorWithComment\")",
+  (string) "",
+  (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"",
+  (string) "",
+  (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{",
+  (string) (len=52) "\tColorWithCommentBlack:  _ColorWithCommentName[0:5],",
+  (string) (len=53) "\tColorWithCommentWhite:  _ColorWithCommentName[5:10],",
+  (string) (len=54) "\tColorWithCommentRed:    _ColorWithCommentName[10:13],",
+  (string) (len=54) "\tColorWithCommentGreen:  _ColorWithCommentName[13:18],",
+  (string) (len=54) "\tColorWithCommentBlue:   _ColorWithCommentName[18:22],",
+  (string) (len=54) "\tColorWithCommentGrey:   _ColorWithCommentName[22:26],",
+  (string) (len=54) "\tColorWithCommentYellow: _ColorWithCommentName[26:32],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=43) "func (x ColorWithComment) String() string {",
+  (string) (len=44) "\tif str, ok := _ColorWithCommentMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=42) "func (x ColorWithComment) IsValid() bool {",
+  (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{",
+  (string) (len=70) "\t_ColorWithCommentName[0:5]:                    ColorWithCommentBlack,",
+  (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[0:5]):   ColorWithCommentBlack,",
+  (string) (len=70) "\t_ColorWithCommentName[5:10]:                   ColorWithCommentWhite,",
+  (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[5:10]):  ColorWithCommentWhite,",
+  (string) (len=68) "\t_ColorWithCommentName[10:13]:                  ColorWithCommentRed,",
+  (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[10:13]): ColorWithCommentRed,",
+  (string) (len=70) "\t_ColorWithCommentName[13:18]:                  ColorWithCommentGreen,",
+  (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[13:18]): ColorWithCommentGreen,",
+  (string) (len=69) "\t_ColorWithCommentName[18:22]:                  ColorWithCommentBlue,",
+  (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[18:22]): ColorWithCommentBlue,",
+  (string) (len=69) "\t_ColorWithCommentName[22:26]:                  ColorWithCommentGrey,",
+  (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[22:26]): ColorWithCommentGrey,",
+  (string) (len=71) "\t_ColorWithCommentName[26:32]:                  ColorWithCommentYellow,",
+  (string) (len=71) "\tstrings.ToLower(_ColorWithCommentName[26:32]): ColorWithCommentYellow,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.",
+  (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {",
+  (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=40) "\ttmp, err := ParseColorWithComment(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=65) "func (x *ColorWithComment) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=50) "func (x *ColorWithComment) Set(val string) error {",
+  (string) (len=37) "\tv, err := ParseColorWithComment(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=46) "func (x *ColorWithComment) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=42) "func (x *ColorWithComment) Type() string {",
+  (string) (len=26) "\treturn \"ColorWithComment\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=64) "\t// ColorWithComment2Black is a ColorWithComment2 of type Black.",
+  (string) (len=45) "\tColorWithComment2Black ColorWithComment2 = 0",
+  (string) (len=64) "\t// ColorWithComment2White is a ColorWithComment2 of type White.",
+  (string) (len=45) "\tColorWithComment2White ColorWithComment2 = 1",
+  (string) (len=60) "\t// ColorWithComment2Red is a ColorWithComment2 of type Red.",
+  (string) (len=43) "\tColorWithComment2Red ColorWithComment2 = 2",
+  (string) (len=64) "\t// ColorWithComment2Green is a ColorWithComment2 of type Green.",
+  (string) (len=45) "\tColorWithComment2Green ColorWithComment2 = 3",
+  (string) (len=62) "\t// ColorWithComment2Blue is a ColorWithComment2 of type Blue.",
+  (string) (len=23) "\t// Blue starts with 33",
+  (string) (len=45) "\tColorWithComment2Blue ColorWithComment2 = 33",
+  (string) (len=62) "\t// ColorWithComment2Grey is a ColorWithComment2 of type Grey.",
+  (string) (len=45) "\tColorWithComment2Grey ColorWithComment2 = 34",
+  (string) (len=66) "\t// ColorWithComment2Yellow is a ColorWithComment2 of type Yellow.",
+  (string) (len=47) "\tColorWithComment2Yellow ColorWithComment2 = 35",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=77) "var ErrInvalidColorWithComment2 = errors.New(\"not a valid ColorWithComment2\")",
+  (string) "",
+  (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"",
+  (string) "",
+  (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{",
+  (string) (len=54) "\tColorWithComment2Black:  _ColorWithComment2Name[0:5],",
+  (string) (len=55) "\tColorWithComment2White:  _ColorWithComment2Name[5:10],",
+  (string) (len=56) "\tColorWithComment2Red:    _ColorWithComment2Name[10:13],",
+  (string) (len=56) "\tColorWithComment2Green:  _ColorWithComment2Name[13:18],",
+  (string) (len=56) "\tColorWithComment2Blue:   _ColorWithComment2Name[18:22],",
+  (string) (len=56) "\tColorWithComment2Grey:   _ColorWithComment2Name[22:26],",
+  (string) (len=56) "\tColorWithComment2Yellow: _ColorWithComment2Name[26:32],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=44) "func (x ColorWithComment2) String() string {",
+  (string) (len=45) "\tif str, ok := _ColorWithComment2Map[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=43) "func (x ColorWithComment2) IsValid() bool {",
+  (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{",
+  (string) (len=72) "\t_ColorWithComment2Name[0:5]:                    ColorWithComment2Black,",
+  (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[0:5]):   ColorWithComment2Black,",
+  (string) (len=72) "\t_ColorWithComment2Name[5:10]:                   ColorWithComment2White,",
+  (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[5:10]):  ColorWithComment2White,",
+  (string) (len=70) "\t_ColorWithComment2Name[10:13]:                  ColorWithComment2Red,",
+  (string) (len=70) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): ColorWithComment2Red,",
+  (string) (len=72) "\t_ColorWithComment2Name[13:18]:                  ColorWithComment2Green,",
+  (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): ColorWithComment2Green,",
+  (string) (len=71) "\t_ColorWithComment2Name[18:22]:                  ColorWithComment2Blue,",
+  (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): ColorWithComment2Blue,",
+  (string) (len=71) "\t_ColorWithComment2Name[22:26]:                  ColorWithComment2Grey,",
+  (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): ColorWithComment2Grey,",
+  (string) (len=73) "\t_ColorWithComment2Name[26:32]:                  ColorWithComment2Yellow,",
+  (string) (len=73) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): ColorWithComment2Yellow,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.",
+  (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {",
+  (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=66) "func (x *ColorWithComment2) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=51) "func (x *ColorWithComment2) Set(val string) error {",
+  (string) (len=38) "\tv, err := ParseColorWithComment2(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=47) "func (x *ColorWithComment2) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=43) "func (x *ColorWithComment2) Type() string {",
+  (string) (len=27) "\treturn \"ColorWithComment2\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=64) "\t// ColorWithComment3Black is a ColorWithComment3 of type Black.",
+  (string) (len=45) "\tColorWithComment3Black ColorWithComment3 = 0",
+  (string) (len=64) "\t// ColorWithComment3White is a ColorWithComment3 of type White.",
+  (string) (len=45) "\tColorWithComment3White ColorWithComment3 = 1",
+  (string) (len=60) "\t// ColorWithComment3Red is a ColorWithComment3 of type Red.",
+  (string) (len=43) "\tColorWithComment3Red ColorWithComment3 = 2",
+  (string) (len=64) "\t// ColorWithComment3Green is a ColorWithComment3 of type Green.",
+  (string) (len=24) "\t// Green starts with 33",
+  (string) (len=46) "\tColorWithComment3Green ColorWithComment3 = 33",
+  (string) (len=62) "\t// ColorWithComment3Blue is a ColorWithComment3 of type Blue.",
+  (string) (len=45) "\tColorWithComment3Blue ColorWithComment3 = 34",
+  (string) (len=62) "\t// ColorWithComment3Grey is a ColorWithComment3 of type Grey.",
+  (string) (len=45) "\tColorWithComment3Grey ColorWithComment3 = 35",
+  (string) (len=66) "\t// ColorWithComment3Yellow is a ColorWithComment3 of type Yellow.",
+  (string) (len=47) "\tColorWithComment3Yellow ColorWithComment3 = 36",
+  (string) (len=73) "\t// ColorWithComment3BlueGreen is a ColorWithComment3 of type Blue-Green.",
+  (string) (len=22) "\t// blue-green comment",
+  (string) (len=50) "\tColorWithComment3BlueGreen ColorWithComment3 = 37",
+  (string) (len=73) "\t// ColorWithComment3RedOrange is a ColorWithComment3 of type Red-Orange.",
+  (string) (len=50) "\tColorWithComment3RedOrange ColorWithComment3 = 38",
+  (string) (len=82) "\t// ColorWithComment3RedOrangeBlue is a ColorWithComment3 of type Red-Orange-Blue.",
+  (string) (len=54) "\tColorWithComment3RedOrangeBlue ColorWithComment3 = 39",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=77) "var ErrInvalidColorWithComment3 = errors.New(\"not a valid ColorWithComment3\")",
+  (string) "",
+  (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"",
+  (string) "",
+  (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{",
+  (string) (len=61) "\tColorWithComment3Black:         _ColorWithComment3Name[0:5],",
+  (string) (len=62) "\tColorWithComment3White:         _ColorWithComment3Name[5:10],",
+  (string) (len=63) "\tColorWithComment3Red:           _ColorWithComment3Name[10:13],",
+  (string) (len=63) "\tColorWithComment3Green:         _ColorWithComment3Name[13:18],",
+  (string) (len=63) "\tColorWithComment3Blue:          _ColorWithComment3Name[18:22],",
+  (string) (len=63) "\tColorWithComment3Grey:          _ColorWithComment3Name[22:26],",
+  (string) (len=63) "\tColorWithComment3Yellow:        _ColorWithComment3Name[26:32],",
+  (string) (len=63) "\tColorWithComment3BlueGreen:     _ColorWithComment3Name[32:42],",
+  (string) (len=63) "\tColorWithComment3RedOrange:     _ColorWithComment3Name[42:52],",
+  (string) (len=63) "\tColorWithComment3RedOrangeBlue: _ColorWithComment3Name[52:67],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=44) "func (x ColorWithComment3) String() string {",
+  (string) (len=45) "\tif str, ok := _ColorWithComment3Map[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=43) "func (x ColorWithComment3) IsValid() bool {",
+  (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{",
+  (string) (len=72) "\t_ColorWithComment3Name[0:5]:                    ColorWithComment3Black,",
+  (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[0:5]):   ColorWithComment3Black,",
+  (string) (len=72) "\t_ColorWithComment3Name[5:10]:                   ColorWithComment3White,",
+  (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[5:10]):  ColorWithComment3White,",
+  (string) (len=70) "\t_ColorWithComment3Name[10:13]:                  ColorWithComment3Red,",
+  (string) (len=70) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): ColorWithComment3Red,",
+  (string) (len=72) "\t_ColorWithComment3Name[13:18]:                  ColorWithComment3Green,",
+  (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): ColorWithComment3Green,",
+  (string) (len=71) "\t_ColorWithComment3Name[18:22]:                  ColorWithComment3Blue,",
+  (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): ColorWithComment3Blue,",
+  (string) (len=71) "\t_ColorWithComment3Name[22:26]:                  ColorWithComment3Grey,",
+  (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): ColorWithComment3Grey,",
+  (string) (len=73) "\t_ColorWithComment3Name[26:32]:                  ColorWithComment3Yellow,",
+  (string) (len=73) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): ColorWithComment3Yellow,",
+  (string) (len=76) "\t_ColorWithComment3Name[32:42]:                  ColorWithComment3BlueGreen,",
+  (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): ColorWithComment3BlueGreen,",
+  (string) (len=76) "\t_ColorWithComment3Name[42:52]:                  ColorWithComment3RedOrange,",
+  (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): ColorWithComment3RedOrange,",
+  (string) (len=80) "\t_ColorWithComment3Name[52:67]:                  ColorWithComment3RedOrangeBlue,",
+  (string) (len=80) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): ColorWithComment3RedOrangeBlue,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.",
+  (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {",
+  (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=66) "func (x *ColorWithComment3) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=51) "func (x *ColorWithComment3) Set(val string) error {",
+  (string) (len=38) "\tv, err := ParseColorWithComment3(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=47) "func (x *ColorWithComment3) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=43) "func (x *ColorWithComment3) Type() string {",
+  (string) (len=27) "\treturn \"ColorWithComment3\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=18) "\t// Skipped value.",
+  (string) (len=15) "\t// Placeholder",
+  (string) (len=24) "\t_ ColorWithComment4 = 0",
+  (string) (len=64) "\t// ColorWithComment4Black is a ColorWithComment4 of type Black.",
+  (string) (len=45) "\tColorWithComment4Black ColorWithComment4 = 1",
+  (string) (len=64) "\t// ColorWithComment4White is a ColorWithComment4 of type White.",
+  (string) (len=45) "\tColorWithComment4White ColorWithComment4 = 2",
+  (string) (len=60) "\t// ColorWithComment4Red is a ColorWithComment4 of type Red.",
+  (string) (len=43) "\tColorWithComment4Red ColorWithComment4 = 3",
+  (string) (len=64) "\t// ColorWithComment4Green is a ColorWithComment4 of type Green.",
+  (string) (len=24) "\t// Green starts with 33",
+  (string) (len=46) "\tColorWithComment4Green ColorWithComment4 = 33",
+  (string) (len=62) "\t// ColorWithComment4Blue is a ColorWithComment4 of type Blue.",
+  (string) (len=45) "\tColorWithComment4Blue ColorWithComment4 = 34",
+  (string) (len=62) "\t// ColorWithComment4Grey is a ColorWithComment4 of type Grey.",
+  (string) (len=45) "\tColorWithComment4Grey ColorWithComment4 = 35",
+  (string) (len=66) "\t// ColorWithComment4Yellow is a ColorWithComment4 of type Yellow.",
+  (string) (len=110) "\t// Where did all the (somewhat) bad fish go? (something else that goes in parentheses at the end of the line)",
+  (string) (len=47) "\tColorWithComment4Yellow ColorWithComment4 = 36",
+  (string) (len=73) "\t// ColorWithComment4BlueGreen is a ColorWithComment4 of type Blue-Green.",
+  (string) (len=22) "\t// blue-green comment",
+  (string) (len=50) "\tColorWithComment4BlueGreen ColorWithComment4 = 37",
+  (string) (len=73) "\t// ColorWithComment4RedOrange is a ColorWithComment4 of type Red-Orange.",
+  (string) (len=20) "\t// has a , in it!?!",
+  (string) (len=50) "\tColorWithComment4RedOrange ColorWithComment4 = 38",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=77) "var ErrInvalidColorWithComment4 = errors.New(\"not a valid ColorWithComment4\")",
+  (string) "",
+  (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"",
+  (string) "",
+  (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{",
+  (string) (len=57) "\tColorWithComment4Black:     _ColorWithComment4Name[0:5],",
+  (string) (len=58) "\tColorWithComment4White:     _ColorWithComment4Name[5:10],",
+  (string) (len=59) "\tColorWithComment4Red:       _ColorWithComment4Name[10:13],",
+  (string) (len=59) "\tColorWithComment4Green:     _ColorWithComment4Name[13:18],",
+  (string) (len=59) "\tColorWithComment4Blue:      _ColorWithComment4Name[18:22],",
+  (string) (len=59) "\tColorWithComment4Grey:      _ColorWithComment4Name[22:26],",
+  (string) (len=59) "\tColorWithComment4Yellow:    _ColorWithComment4Name[26:32],",
+  (string) (len=59) "\tColorWithComment4BlueGreen: _ColorWithComment4Name[32:42],",
+  (string) (len=59) "\tColorWithComment4RedOrange: _ColorWithComment4Name[42:52],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=44) "func (x ColorWithComment4) String() string {",
+  (string) (len=45) "\tif str, ok := _ColorWithComment4Map[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=43) "func (x ColorWithComment4) IsValid() bool {",
+  (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{",
+  (string) (len=72) "\t_ColorWithComment4Name[0:5]:                    ColorWithComment4Black,",
+  (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[0:5]):   ColorWithComment4Black,",
+  (string) (len=72) "\t_ColorWithComment4Name[5:10]:                   ColorWithComment4White,",
+  (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[5:10]):  ColorWithComment4White,",
+  (string) (len=70) "\t_ColorWithComment4Name[10:13]:                  ColorWithComment4Red,",
+  (string) (len=70) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): ColorWithComment4Red,",
+  (string) (len=72) "\t_ColorWithComment4Name[13:18]:                  ColorWithComment4Green,",
+  (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): ColorWithComment4Green,",
+  (string) (len=71) "\t_ColorWithComment4Name[18:22]:                  ColorWithComment4Blue,",
+  (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): ColorWithComment4Blue,",
+  (string) (len=71) "\t_ColorWithComment4Name[22:26]:                  ColorWithComment4Grey,",
+  (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): ColorWithComment4Grey,",
+  (string) (len=73) "\t_ColorWithComment4Name[26:32]:                  ColorWithComment4Yellow,",
+  (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): ColorWithComment4Yellow,",
+  (string) (len=76) "\t_ColorWithComment4Name[32:42]:                  ColorWithComment4BlueGreen,",
+  (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): ColorWithComment4BlueGreen,",
+  (string) (len=76) "\t_ColorWithComment4Name[42:52]:                  ColorWithComment4RedOrange,",
+  (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): ColorWithComment4RedOrange,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.",
+  (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {",
+  (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=66) "func (x *ColorWithComment4) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=51) "func (x *ColorWithComment4) Set(val string) error {",
+  (string) (len=38) "\tv, err := ParseColorWithComment4(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=47) "func (x *ColorWithComment4) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=43) "func (x *ColorWithComment4) Type() string {",
+  (string) (len=27) "\treturn \"ColorWithComment4\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=52) "\t// Enum64bitUnknown is a Enum64bit of type Unknown.",
+  (string) (len=31) "\tEnum64bitUnknown Enum64bit = 0",
+  (string) (len=48) "\t// Enum64bitE2P15 is a Enum64bit of type E2P15.",
+  (string) (len=33) "\tEnum64bitE2P15 Enum64bit = 32768",
+  (string) (len=48) "\t// Enum64bitE2P16 is a Enum64bit of type E2P16.",
+  (string) (len=33) "\tEnum64bitE2P16 Enum64bit = 65536",
+  (string) (len=48) "\t// Enum64bitE2P17 is a Enum64bit of type E2P17.",
+  (string) (len=34) "\tEnum64bitE2P17 Enum64bit = 131072",
+  (string) (len=48) "\t// Enum64bitE2P18 is a Enum64bit of type E2P18.",
+  (string) (len=34) "\tEnum64bitE2P18 Enum64bit = 262144",
+  (string) (len=48) "\t// Enum64bitE2P19 is a Enum64bit of type E2P19.",
+  (string) (len=34) "\tEnum64bitE2P19 Enum64bit = 524288",
+  (string) (len=48) "\t// Enum64bitE2P20 is a Enum64bit of type E2P20.",
+  (string) (len=35) "\tEnum64bitE2P20 Enum64bit = 1048576",
+  (string) (len=48) "\t// Enum64bitE2P21 is a Enum64bit of type E2P21.",
+  (string) (len=35) "\tEnum64bitE2P21 Enum64bit = 2097152",
+  (string) (len=48) "\t// Enum64bitE2P22 is a Enum64bit of type E2P22.",
+  (string) (len=36) "\tEnum64bitE2P22 Enum64bit = 33554432",
+  (string) (len=48) "\t// Enum64bitE2P23 is a Enum64bit of type E2P23.",
+  (string) (len=36) "\tEnum64bitE2P23 Enum64bit = 67108864",
+  (string) (len=48) "\t// Enum64bitE2P28 is a Enum64bit of type E2P28.",
+  (string) (len=37) "\tEnum64bitE2P28 Enum64bit = 536870912",
+  (string) (len=48) "\t// Enum64bitE2P30 is a Enum64bit of type E2P30.",
+  (string) (len=38) "\tEnum64bitE2P30 Enum64bit = 1073741824",
+  (string) (len=48) "\t// Enum64bitE2P31 is a Enum64bit of type E2P31.",
+  (string) (len=38) "\tEnum64bitE2P31 Enum64bit = 2147483648",
+  (string) (len=48) "\t// Enum64bitE2P32 is a Enum64bit of type E2P32.",
+  (string) (len=38) "\tEnum64bitE2P32 Enum64bit = 4294967296",
+  (string) (len=48) "\t// Enum64bitE2P33 is a Enum64bit of type E2P33.",
+  (string) (len=38) "\tEnum64bitE2P33 Enum64bit = 8454967296",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=61) "var ErrInvalidEnum64bit = errors.New(\"not a valid Enum64bit\")",
+  (string) "",
+  (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"",
+  (string) "",
+  (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{",
+  (string) (len=39) "\tEnum64bitUnknown: _Enum64bitName[0:7],",
+  (string) (len=40) "\tEnum64bitE2P15:   _Enum64bitName[7:12],",
+  (string) (len=41) "\tEnum64bitE2P16:   _Enum64bitName[12:17],",
+  (string) (len=41) "\tEnum64bitE2P17:   _Enum64bitName[17:22],",
+  (string) (len=41) "\tEnum64bitE2P18:   _Enum64bitName[22:27],",
+  (string) (len=41) "\tEnum64bitE2P19:   _Enum64bitName[27:32],",
+  (string) (len=41) "\tEnum64bitE2P20:   _Enum64bitName[32:37],",
+  (string) (len=41) "\tEnum64bitE2P21:   _Enum64bitName[37:42],",
+  (string) (len=41) "\tEnum64bitE2P22:   _Enum64bitName[42:47],",
+  (string) (len=41) "\tEnum64bitE2P23:   _Enum64bitName[47:52],",
+  (string) (len=41) "\tEnum64bitE2P28:   _Enum64bitName[52:57],",
+  (string) (len=41) "\tEnum64bitE2P30:   _Enum64bitName[57:62],",
+  (string) (len=41) "\tEnum64bitE2P31:   _Enum64bitName[62:67],",
+  (string) (len=41) "\tEnum64bitE2P32:   _Enum64bitName[67:72],",
+  (string) (len=41) "\tEnum64bitE2P33:   _Enum64bitName[72:77],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=36) "func (x Enum64bit) String() string {",
+  (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=35) "func (x Enum64bit) IsValid() bool {",
+  (string) (len=26) "\t_, ok := _Enum64bitMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{",
+  (string) (len=58) "\t_Enum64bitName[0:7]:                    Enum64bitUnknown,",
+  (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]):   Enum64bitUnknown,",
+  (string) (len=56) "\t_Enum64bitName[7:12]:                   Enum64bitE2P15,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[7:12]):  Enum64bitE2P15,",
+  (string) (len=56) "\t_Enum64bitName[12:17]:                  Enum64bitE2P16,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[12:17]): Enum64bitE2P16,",
+  (string) (len=56) "\t_Enum64bitName[17:22]:                  Enum64bitE2P17,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[17:22]): Enum64bitE2P17,",
+  (string) (len=56) "\t_Enum64bitName[22:27]:                  Enum64bitE2P18,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[22:27]): Enum64bitE2P18,",
+  (string) (len=56) "\t_Enum64bitName[27:32]:                  Enum64bitE2P19,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[27:32]): Enum64bitE2P19,",
+  (string) (len=56) "\t_Enum64bitName[32:37]:                  Enum64bitE2P20,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[32:37]): Enum64bitE2P20,",
+  (string) (len=56) "\t_Enum64bitName[37:42]:                  Enum64bitE2P21,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[37:42]): Enum64bitE2P21,",
+  (string) (len=56) "\t_Enum64bitName[42:47]:                  Enum64bitE2P22,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[42:47]): Enum64bitE2P22,",
+  (string) (len=56) "\t_Enum64bitName[47:52]:                  Enum64bitE2P23,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[47:52]): Enum64bitE2P23,",
+  (string) (len=56) "\t_Enum64bitName[52:57]:                  Enum64bitE2P28,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[52:57]): Enum64bitE2P28,",
+  (string) (len=56) "\t_Enum64bitName[57:62]:                  Enum64bitE2P30,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[57:62]): Enum64bitE2P30,",
+  (string) (len=56) "\t_Enum64bitName[62:67]:                  Enum64bitE2P31,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[62:67]): Enum64bitE2P31,",
+  (string) (len=56) "\t_Enum64bitName[67:72]:                  Enum64bitE2P32,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[67:72]): Enum64bitE2P32,",
+  (string) (len=56) "\t_Enum64bitName[72:77]:                  Enum64bitE2P33,",
+  (string) (len=56) "\tstrings.ToLower(_Enum64bitName[72:77]): Enum64bitE2P33,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.",
+  (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {",
+  (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=33) "\ttmp, err := ParseEnum64bit(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=58) "func (x *Enum64bit) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=43) "func (x *Enum64bit) Set(val string) error {",
+  (string) (len=30) "\tv, err := ParseEnum64bit(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=39) "func (x *Enum64bit) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=35) "func (x *Enum64bit) Type() string {",
+  (string) (len=19) "\treturn \"Enum64bit\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=42) "\t// ModelToyota is a Model of type Toyota.",
+  (string) (len=22) "\tModelToyota Model = 0",
+  (string) (len=18) "\t// Skipped value.",
+  (string) (len=12) "\t_ Model = 1",
+  (string) (len=40) "\t// ModelChevy is a Model of type Chevy.",
+  (string) (len=21) "\tModelChevy Model = 2",
+  (string) (len=18) "\t// Skipped value.",
+  (string) (len=12) "\t_ Model = 3",
+  (string) (len=38) "\t// ModelFord is a Model of type Ford.",
+  (string) (len=20) "\tModelFord Model = 4",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=53) "var ErrInvalidModel = errors.New(\"not a valid Model\")",
+  (string) "",
+  (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"",
+  (string) "",
+  (string) (len=33) "var _ModelMap = map[Model]string{",
+  (string) (len=30) "\tModelToyota: _ModelName[0:6],",
+  (string) (len=31) "\tModelChevy:  _ModelName[6:11],",
+  (string) (len=32) "\tModelFord:   _ModelName[11:15],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=32) "func (x Model) String() string {",
+  (string) (len=33) "\tif str, ok := _ModelMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=31) "func (x Model) IsValid() bool {",
+  (string) (len=22) "\t_, ok := _ModelMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=35) "var _ModelValue = map[string]Model{",
+  (string) (len=49) "\t_ModelName[0:6]:                    ModelToyota,",
+  (string) (len=49) "\tstrings.ToLower(_ModelName[0:6]):   ModelToyota,",
+  (string) (len=48) "\t_ModelName[6:11]:                   ModelChevy,",
+  (string) (len=48) "\tstrings.ToLower(_ModelName[6:11]):  ModelChevy,",
+  (string) (len=47) "\t_ModelName[11:15]:                  ModelFord,",
+  (string) (len=47) "\tstrings.ToLower(_ModelName[11:15]): ModelFord,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=54) "// ParseModel attempts to convert a string to a Model.",
+  (string) (len=45) "func ParseModel(name string) (Model, error) {",
+  (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=29) "\ttmp, err := ParseModel(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=54) "func (x *Model) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=39) "func (x *Model) Set(val string) error {",
+  (string) (len=26) "\tv, err := ParseModel(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=35) "func (x *Model) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=31) "func (x *Model) Type() string {",
+  (string) (len=15) "\treturn \"Model\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=60) "\t// NonASCIIПродам is a NonASCII of type Продам.",
+  (string) (len=37) "\tNonASCIIПродам NonASCII = 1114",
+  (string) (len=48) "\t// NonASCII車庫 is a NonASCII of type 車庫.",
+  (string) (len=30) "\tNonASCII車庫 NonASCII = 300",
+  (string) (len=52) "\t// NonASCIIԷժան is a NonASCII of type Էժան.",
+  (string) (len=30) "\tNonASCIIԷժան NonASCII = 1",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=59) "var ErrInvalidNonASCII = errors.New(\"not a valid NonASCII\")",
+  (string) "",
+  (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"",
+  (string) "",
+  (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{",
+  (string) (len=43) "\tNonASCIIПродам: _NonASCIIName[0:12],",
+  (string) (len=42) "\tNonASCII車庫:     _NonASCIIName[12:18],",
+  (string) (len=42) "\tNonASCIIԷժան:   _NonASCIIName[18:26],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=35) "func (x NonASCII) String() string {",
+  (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=34) "func (x NonASCII) IsValid() bool {",
+  (string) (len=25) "\t_, ok := _NonASCIIMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{",
+  (string) (len=61) "\t_NonASCIIName[0:12]:                   NonASCIIПродам,",
+  (string) (len=61) "\tstrings.ToLower(_NonASCIIName[0:12]):  NonASCIIПродам,",
+  (string) (len=55) "\t_NonASCIIName[12:18]:                  NonASCII車庫,",
+  (string) (len=55) "\tstrings.ToLower(_NonASCIIName[12:18]): NonASCII車庫,",
+  (string) (len=57) "\t_NonASCIIName[18:26]:                  NonASCIIԷժան,",
+  (string) (len=57) "\tstrings.ToLower(_NonASCIIName[18:26]): NonASCIIԷժան,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.",
+  (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {",
+  (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=32) "\ttmp, err := ParseNonASCII(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=57) "func (x *NonASCII) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=42) "func (x *NonASCII) Set(val string) error {",
+  (string) (len=29) "\tv, err := ParseNonASCII(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=38) "func (x *NonASCII) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=34) "func (x *NonASCII) Type() string {",
+  (string) (len=18) "\treturn \"NonASCII\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=61) "\t// SanitizingTestHyphen is a Sanitizing of type Test-Hyphen.",
+  (string) (len=36) "\tSanitizingTestHyphen Sanitizing = 0",
+  (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.",
+  (string) (len=37) "\tSanitizingHyphenStart Sanitizing = 1",
+  (string) (len=72) "\t// Sanitizing_UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.",
+  (string) (len=42) "\tSanitizing_UnderscoreFirst Sanitizing = 2",
+  (string) (len=64) "\t// Sanitizing0NumberFirst is a Sanitizing of type 0NumberFirst.",
+  (string) (len=38) "\tSanitizing0NumberFirst Sanitizing = 3",
+  (string) (len=60) "\t// Sanitizing123456789A is a Sanitizing of type 123456789A.",
+  (string) (len=36) "\tSanitizing123456789A Sanitizing = 4",
+  (string) (len=61) "\t// Sanitizing123123Asdf is a Sanitizing of type 123123-Asdf.",
+  (string) (len=36) "\tSanitizing123123Asdf Sanitizing = 5",
+  (string) (len=66) "\t// SanitizingEndingHyphen is a Sanitizing of type Ending-Hyphen-.",
+  (string) (len=38) "\tSanitizingEndingHyphen Sanitizing = 6",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=63) "var ErrInvalidSanitizing = errors.New(\"not a valid Sanitizing\")",
+  (string) "",
+  (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"",
+  (string) "",
+  (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{",
+  (string) (len=51) "\tSanitizingTestHyphen:       _SanitizingName[0:11],",
+  (string) (len=52) "\tSanitizingHyphenStart:      _SanitizingName[11:23],",
+  (string) (len=52) "\tSanitizing_UnderscoreFirst: _SanitizingName[23:39],",
+  (string) (len=52) "\tSanitizing0NumberFirst:     _SanitizingName[39:51],",
+  (string) (len=52) "\tSanitizing123456789A:       _SanitizingName[51:61],",
+  (string) (len=52) "\tSanitizing123123Asdf:       _SanitizingName[61:72],",
+  (string) (len=52) "\tSanitizingEndingHyphen:     _SanitizingName[72:86],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=37) "func (x Sanitizing) String() string {",
+  (string) (len=38) "\tif str, ok := _SanitizingMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=36) "func (x Sanitizing) IsValid() bool {",
+  (string) (len=27) "\t_, ok := _SanitizingMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{",
+  (string) (len=63) "\t_SanitizingName[0:11]:                   SanitizingTestHyphen,",
+  (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]):  SanitizingTestHyphen,",
+  (string) (len=64) "\t_SanitizingName[11:23]:                  SanitizingHyphenStart,",
+  (string) (len=64) "\tstrings.ToLower(_SanitizingName[11:23]): SanitizingHyphenStart,",
+  (string) (len=69) "\t_SanitizingName[23:39]:                  Sanitizing_UnderscoreFirst,",
+  (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_UnderscoreFirst,",
+  (string) (len=65) "\t_SanitizingName[39:51]:                  Sanitizing0NumberFirst,",
+  (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0NumberFirst,",
+  (string) (len=63) "\t_SanitizingName[51:61]:                  Sanitizing123456789A,",
+  (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789A,",
+  (string) (len=63) "\t_SanitizingName[61:72]:                  Sanitizing123123Asdf,",
+  (string) (len=63) "\tstrings.ToLower(_SanitizingName[61:72]): Sanitizing123123Asdf,",
+  (string) (len=65) "\t_SanitizingName[72:86]:                  SanitizingEndingHyphen,",
+  (string) (len=65) "\tstrings.ToLower(_SanitizingName[72:86]): SanitizingEndingHyphen,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.",
+  (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {",
+  (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=34) "\ttmp, err := ParseSanitizing(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=59) "func (x *Sanitizing) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=44) "func (x *Sanitizing) Set(val string) error {",
+  (string) (len=31) "\tv, err := ParseSanitizing(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=40) "func (x *Sanitizing) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=36) "func (x *Sanitizing) Type() string {",
+  (string) (len=20) "\treturn \"Sanitizing\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=36) "\t// SodaCoke is a Soda of type Coke.",
+  (string) (len=18) "\tSodaCoke Soda = 0",
+  (string) (len=38) "\t// SodaPepsi is a Soda of type Pepsi.",
+  (string) (len=19) "\tSodaPepsi Soda = 1",
+  (string) (len=40) "\t// SodaMtnDew is a Soda of type MtnDew.",
+  (string) (len=20) "\tSodaMtnDew Soda = 2",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=51) "var ErrInvalidSoda = errors.New(\"not a valid Soda\")",
+  (string) "",
+  (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"",
+  (string) "",
+  (string) (len=31) "var _SodaMap = map[Soda]string{",
+  (string) (len=28) "\tSodaCoke:   _SodaName[0:4],",
+  (string) (len=28) "\tSodaPepsi:  _SodaName[4:9],",
+  (string) (len=29) "\tSodaMtnDew: _SodaName[9:15],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=31) "func (x Soda) String() string {",
+  (string) (len=32) "\tif str, ok := _SodaMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=30) "func (x Soda) IsValid() bool {",
+  (string) (len=21) "\t_, ok := _SodaMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=33) "var _SodaValue = map[string]Soda{",
+  (string) (len=44) "\t_SodaName[0:4]:                   SodaCoke,",
+  (string) (len=44) "\tstrings.ToLower(_SodaName[0:4]):  SodaCoke,",
+  (string) (len=45) "\t_SodaName[4:9]:                   SodaPepsi,",
+  (string) (len=45) "\tstrings.ToLower(_SodaName[4:9]):  SodaPepsi,",
+  (string) (len=46) "\t_SodaName[9:15]:                  SodaMtnDew,",
+  (string) (len=46) "\tstrings.ToLower(_SodaName[9:15]): SodaMtnDew,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.",
+  (string) (len=43) "func ParseSoda(name string) (Soda, error) {",
+  (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=28) "\ttmp, err := ParseSoda(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=53) "func (x *Soda) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=38) "func (x *Soda) Set(val string) error {",
+  (string) (len=25) "\tv, err := ParseSoda(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=34) "func (x *Soda) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=30) "func (x *Soda) Type() string {",
+  (string) (len=14) "\treturn \"Soda\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=68) "\t// StartNotZeroStartWithNum is a StartNotZero of type StartWithNum.",
+  (string) (len=43) "\tStartNotZeroStartWithNum StartNotZero = 23",
+  (string) (len=58) "\t// StartNotZeroNextNum is a StartNotZero of type NextNum.",
+  (string) (len=38) "\tStartNotZeroNextNum StartNotZero = 24",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=67) "var ErrInvalidStartNotZero = errors.New(\"not a valid StartNotZero\")",
+  (string) "",
+  (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"",
+  (string) "",
+  (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{",
+  (string) (len=51) "\tStartNotZeroStartWithNum: _StartNotZeroName[0:12],",
+  (string) (len=52) "\tStartNotZeroNextNum:      _StartNotZeroName[12:19],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=39) "func (x StartNotZero) String() string {",
+  (string) (len=40) "\tif str, ok := _StartNotZeroMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=38) "func (x StartNotZero) IsValid() bool {",
+  (string) (len=29) "\t_, ok := _StartNotZeroMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{",
+  (string) (len=69) "\t_StartNotZeroName[0:12]:                   StartNotZeroStartWithNum,",
+  (string) (len=69) "\tstrings.ToLower(_StartNotZeroName[0:12]):  StartNotZeroStartWithNum,",
+  (string) (len=64) "\t_StartNotZeroName[12:19]:                  StartNotZeroNextNum,",
+  (string) (len=64) "\tstrings.ToLower(_StartNotZeroName[12:19]): StartNotZeroNextNum,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.",
+  (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {",
+  (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=36) "\ttmp, err := ParseStartNotZero(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=61) "func (x *StartNotZero) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=46) "func (x *StartNotZero) Set(val string) error {",
+  (string) (len=33) "\tv, err := ParseStartNotZero(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=42) "func (x *StartNotZero) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=38) "func (x *StartNotZero) Type() string {",
+  (string) (len=22) "\treturn \"StartNotZero\"",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=52) "\t// StringEnumRandom is a StringEnum of type random.",
+  (string) (len=39) "\tStringEnumRandom StringEnum = \"random\"",
+  (string) (len=52) "\t// StringEnumValues is a StringEnum of type values.",
+  (string) (len=39) "\tStringEnumValues StringEnum = \"values\"",
+  (string) (len=48) "\t// StringEnumHere is a StringEnum of type here.",
+  (string) (len=35) "\tStringEnumHere StringEnum = \"here\"",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=63) "var ErrInvalidStringEnum = errors.New(\"not a valid StringEnum\")",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=37) "func (x StringEnum) String() string {",
+  (string) (len=17) "\treturn string(x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=36) "func (x StringEnum) IsValid() bool {",
+  (string) (len=37) "\t_, err := ParseStringEnum(string(x))",
+  (string) (len=18) "\treturn err == nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=45) "var _StringEnumValue = map[string]StringEnum{",
+  (string) (len=28) "\t\"random\": StringEnumRandom,",
+  (string) (len=28) "\t\"values\": StringEnumValues,",
+  (string) (len=26) "\t\"here\":   StringEnumHere,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.",
+  (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {",
+  (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {",
+  (string) (len=30) "\treturn []byte(string(x)), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {",
+  (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=59) "func (x *StringEnum) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=44) "func (x *StringEnum) Set(val string) error {",
+  (string) (len=31) "\tv, err := ParseStringEnum(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=40) "func (x *StringEnum) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=36) "func (x *StringEnum) Type() string {",
+  (string) (len=20) "\treturn \"StringEnum\"",
+  (string) (len=1) "}",
+  (string) ""
+}
diff --git a/generator/.snapshots/TestNoIotaOnlyExampleFile b/generator/.snapshots/TestNoIotaOnlyExampleFile
new file mode 100644
index 0000000..e2d405e
--- /dev/null
+++ b/generator/.snapshots/TestNoIotaOnlyExampleFile
@@ -0,0 +1,108 @@
+([]string) (len=106) {
+  (string) (len=41) "// Code generated by go-enum DO NOT EDIT.",
+  (string) (len=13) "// Version: -",
+  (string) (len=14) "// Revision: -",
+  (string) (len=16) "// Build Date: -",
+  (string) (len=14) "// Built By: -",
+  (string) "",
+  (string) (len=17) "package generator",
+  (string) "",
+  (string) (len=8) "import (",
+  (string) (len=9) "\t\"errors\"",
+  (string) (len=6) "\t\"fmt\"",
+  (string) (len=10) "\t\"strings\"",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=7) "const (",
+  (string) (len=32) "\t// BuggyA is a Buggy of type A.",
+  (string) (len=17) "\tBuggyA Buggy = 0",
+  (string) (len=32) "\t// BuggyB is a Buggy of type B.",
+  (string) (len=17) "\tBuggyB Buggy = 2",
+  (string) (len=32) "\t// BuggyC is a Buggy of type C.",
+  (string) (len=17) "\tBuggyC Buggy = 1",
+  (string) (len=1) ")",
+  (string) "",
+  (string) (len=53) "var ErrInvalidBuggy = errors.New(\"not a valid Buggy\")",
+  (string) "",
+  (string) (len=24) "const _BuggyName = \"ABC\"",
+  (string) "",
+  (string) (len=33) "var _BuggyMap = map[Buggy]string{",
+  (string) (len=25) "\tBuggyA: _BuggyName[0:1],",
+  (string) (len=25) "\tBuggyB: _BuggyName[1:2],",
+  (string) (len=25) "\tBuggyC: _BuggyName[2:3],",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=44) "// String implements the Stringer interface.",
+  (string) (len=32) "func (x Buggy) String() string {",
+  (string) (len=33) "\tif str, ok := _BuggyMap[x]; ok {",
+  (string) (len=12) "\t\treturn str",
+  (string) (len=2) "\t}",
+  (string) (len=35) "\treturn fmt.Sprintf(\"Buggy(%d)\", x)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=66) "// IsValid provides a quick way to determine if the typed value is",
+  (string) (len=40) "// part of the allowed enumerated values",
+  (string) (len=31) "func (x Buggy) IsValid() bool {",
+  (string) (len=22) "\t_, ok := _BuggyMap[x]",
+  (string) (len=10) "\treturn ok",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=35) "var _BuggyValue = map[string]Buggy{",
+  (string) (len=42) "\t_BuggyName[0:1]:                  BuggyA,",
+  (string) (len=42) "\tstrings.ToLower(_BuggyName[0:1]): BuggyA,",
+  (string) (len=42) "\t_BuggyName[1:2]:                  BuggyB,",
+  (string) (len=42) "\tstrings.ToLower(_BuggyName[1:2]): BuggyB,",
+  (string) (len=42) "\t_BuggyName[2:3]:                  BuggyC,",
+  (string) (len=42) "\tstrings.ToLower(_BuggyName[2:3]): BuggyC,",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=54) "// ParseBuggy attempts to convert a string to a Buggy.",
+  (string) (len=45) "func ParseBuggy(name string) (Buggy, error) {",
+  (string) (len=36) "\tif x, ok := _BuggyValue[name]; ok {",
+  (string) (len=15) "\t\treturn x, nil",
+  (string) (len=2) "\t}",
+  (string) (len=63) "\treturn Buggy(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidBuggy)",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=53) "// MarshalText implements the text marshaller method.",
+  (string) (len=46) "func (x Buggy) MarshalText() ([]byte, error) {",
+  (string) (len=31) "\treturn []byte(x.String()), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
+  (string) (len=50) "func (x *Buggy) UnmarshalText(text []byte) error {",
+  (string) (len=21) "\tname := string(text)",
+  (string) (len=29) "\ttmp, err := ParseBuggy(name)",
+  (string) (len=16) "\tif err != nil {",
+  (string) (len=12) "\t\treturn err",
+  (string) (len=2) "\t}",
+  (string) (len=9) "\t*x = tmp",
+  (string) (len=11) "\treturn nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=74) "// AppendText appends the textual representation of itself to the end of b",
+  (string) (len=74) "// (allocating a larger slice if necessary) and returns the updated slice.",
+  (string) (len=2) "//",
+  (string) (len=77) "// Implementations must not retain b, nor mutate any bytes within b[:len(b)].",
+  (string) (len=54) "func (x *Buggy) AppendText(b []byte) ([]byte, error) {",
+  (string) (len=37) "\treturn append(b, x.String()...), nil",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=55) "// Set implements the Golang flag.Value interface func.",
+  (string) (len=39) "func (x *Buggy) Set(val string) error {",
+  (string) (len=26) "\tv, err := ParseBuggy(val)",
+  (string) (len=7) "\t*x = v",
+  (string) (len=11) "\treturn err",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=56) "// Get implements the Golang flag.Getter interface func.",
+  (string) (len=35) "func (x *Buggy) Get() interface{} {",
+  (string) (len=10) "\treturn *x",
+  (string) (len=1) "}",
+  (string) "",
+  (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
+  (string) (len=31) "func (x *Buggy) Type() string {",
+  (string) (len=15) "\treturn \"Buggy\"",
+  (string) (len=1) "}",
+  (string) ""
+}
diff --git a/generator/example_no_iota_test.go b/generator/example_no_iota_test.go
new file mode 100644
index 0000000..2a6c248
--- /dev/null
+++ b/generator/example_no_iota_test.go
@@ -0,0 +1,8 @@
+package generator
+
+// ENUM(
+// A = 0
+// B = 2
+// C = 1
+// )
+type Buggy uint
diff --git a/generator/example_test.go b/generator/example_test.go
index c5433d9..f59ced8 100644
--- a/generator/example_test.go
+++ b/generator/example_test.go
@@ -1,8 +1,7 @@
 package generator
 
 // X is doc'ed
-type X struct {
-}
+type X struct{}
 
 // Color is an enumeration of colors that are allowed.
 // ENUM(
diff --git a/generator/generator_test.go b/generator/generator_test.go
index b4e85c1..b702342 100644
--- a/generator/generator_test.go
+++ b/generator/generator_test.go
@@ -13,7 +13,8 @@ import (
 )
 
 const (
-	testExample = `example_test.go`
+	testExample       = `example_test.go`
+	testExampleNoIota = `example_no_iota_test.go`
 )
 
 // TestNoStructInputFile
@@ -167,6 +168,46 @@ func TestNoPrefixExampleFile(t *testing.T) {
 	}
 }
 
+func TestNoIotaExampleFile(t *testing.T) {
+	g := NewGenerator(
+		WithMarshal(),
+		WithLowercaseVariant(),
+		WithNoIota(),
+		WithFlag(),
+		WithoutSnakeToCamel(),
+	)
+	// Parse the file given in arguments
+	imported, err := g.GenerateFromFile(testExample)
+	require.Nil(t, err, "Error generating formatted code")
+
+	outputLines := strings.Split(string(imported), "\n")
+	cupaloy.SnapshotT(t, outputLines)
+
+	if false {
+		fmt.Println(string(imported))
+	}
+}
+
+func TestNoIotaOnlyExampleFile(t *testing.T) {
+	g := NewGenerator(
+		WithMarshal(),
+		WithLowercaseVariant(),
+		WithNoIota(),
+		WithFlag(),
+		WithoutSnakeToCamel(),
+	)
+	// Parse the file given in arguments
+	imported, err := g.GenerateFromFile(testExampleNoIota)
+	require.Nil(t, err, "Error generating formatted code")
+
+	outputLines := strings.Split(string(imported), "\n")
+	cupaloy.SnapshotT(t, outputLines)
+
+	if false {
+		fmt.Println(string(imported))
+	}
+}
+
 // TestExampleFile
 func TestReplacePrefixExampleFile(t *testing.T) {
 	g := NewGenerator(