all: update go directive to 1.18

Done with:

go get go@1.18
go mod tidy
go fix ./...

Using go1.21.3.

Also update code generators to use only the new go:build lines,
not the old +build ones.

For golang/go#60268.

Change-Id: I832981d939ab0aad5c941555a6a4cd005958a189
Reviewed-on: https://go-review.googlesource.com/c/text/+/534242
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/cases/gen.go b/cases/gen.go
index 2e1d95c..6676cd4 100644
--- a/cases/gen.go
+++ b/cases/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // This program generates the trie for casing operations. The Unicode casing
 // algorithm requires the lookup of various properties and mappings for each
diff --git a/cases/gen_trieval.go b/cases/gen_trieval.go
index 14dd33b..51b0527 100644
--- a/cases/gen_trieval.go
+++ b/cases/gen_trieval.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/cases/icu.go b/cases/icu.go
index 2dc84b3..db7c237 100644
--- a/cases/icu.go
+++ b/cases/icu.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build icu
-// +build icu
 
 package cases
 
diff --git a/cases/icu_test.go b/cases/icu_test.go
index f3ed838..6d97035 100644
--- a/cases/icu_test.go
+++ b/cases/icu_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build icu
-// +build icu
 
 package cases
 
diff --git a/cases/tables10.0.0.go b/cases/tables10.0.0.go
index ca99231..bd28ae1 100644
--- a/cases/tables10.0.0.go
+++ b/cases/tables10.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package cases
 
diff --git a/cases/tables10.0.0_test.go b/cases/tables10.0.0_test.go
index 779eaf5..869c60d 100644
--- a/cases/tables10.0.0_test.go
+++ b/cases/tables10.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package cases
 
diff --git a/cases/tables11.0.0.go b/cases/tables11.0.0.go
index b1106b4..ce00ce3 100644
--- a/cases/tables11.0.0.go
+++ b/cases/tables11.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package cases
 
diff --git a/cases/tables11.0.0_test.go b/cases/tables11.0.0_test.go
index bc8fc54..fc04889 100644
--- a/cases/tables11.0.0_test.go
+++ b/cases/tables11.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package cases
 
diff --git a/cases/tables12.0.0.go b/cases/tables12.0.0.go
index ae7dc24..84d841b 100644
--- a/cases/tables12.0.0.go
+++ b/cases/tables12.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package cases
 
diff --git a/cases/tables12.0.0_test.go b/cases/tables12.0.0_test.go
index 04f3b6b..7ba7393 100644
--- a/cases/tables12.0.0_test.go
+++ b/cases/tables12.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package cases
 
diff --git a/cases/tables13.0.0.go b/cases/tables13.0.0.go
index 68d2981..6187e6b 100644
--- a/cases/tables13.0.0.go
+++ b/cases/tables13.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package cases
 
diff --git a/cases/tables13.0.0_test.go b/cases/tables13.0.0_test.go
index 37333e4..97955d5 100644
--- a/cases/tables13.0.0_test.go
+++ b/cases/tables13.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package cases
 
diff --git a/cases/tables15.0.0.go b/cases/tables15.0.0.go
index e431b99..aee0f31 100644
--- a/cases/tables15.0.0.go
+++ b/cases/tables15.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package cases
 
diff --git a/cases/tables15.0.0_test.go b/cases/tables15.0.0_test.go
index f7dbeca..ad654fd 100644
--- a/cases/tables15.0.0_test.go
+++ b/cases/tables15.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package cases
 
diff --git a/cases/tables9.0.0.go b/cases/tables9.0.0.go
index 636d5d1..3aeb7be 100644
--- a/cases/tables9.0.0.go
+++ b/cases/tables9.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package cases
 
diff --git a/cases/tables9.0.0_test.go b/cases/tables9.0.0_test.go
index ac804f4..fcf5f40 100644
--- a/cases/tables9.0.0_test.go
+++ b/cases/tables9.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package cases
 
diff --git a/cmd/gotext/examples/rewrite/printer.go b/cmd/gotext/examples/rewrite/printer.go
index 309d195..761eb84 100644
--- a/cmd/gotext/examples/rewrite/printer.go
+++ b/cmd/gotext/examples/rewrite/printer.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/collate/maketables.go b/collate/maketables.go
index d1fb439..2ee54db 100644
--- a/collate/maketables.go
+++ b/collate/maketables.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // Collation table generator.
 // Data read from the web.
@@ -38,7 +37,7 @@
 		"test existing tables; can be used to compare web data with package data.")
 	short = flag.Bool("short", false, `Use "short" alternatives, when available.`)
 	draft = flag.Bool("draft", false, `Use draft versions, when available.`)
-	tags  = flag.String("tags", "", "build tags to be included after +build directive")
+	tags  = flag.String("tags", "", "build tags to be included after go:build directive")
 	pkg   = flag.String("package", "collate",
 		"the name of the package in which the generated file is to be included")
 
diff --git a/collate/tools/colcmp/darwin.go b/collate/tools/colcmp/darwin.go
index 1be3267..8b36934 100644
--- a/collate/tools/colcmp/darwin.go
+++ b/collate/tools/colcmp/darwin.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build darwin
-// +build darwin
 
 package main
 
diff --git a/collate/tools/colcmp/icu.go b/collate/tools/colcmp/icu.go
index b816acf..a996e13 100644
--- a/collate/tools/colcmp/icu.go
+++ b/collate/tools/colcmp/icu.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build icu
-// +build icu
 
 package main
 
diff --git a/currency/gen.go b/currency/gen.go
index 4a2c855..477ad08 100644
--- a/currency/gen.go
+++ b/currency/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // Generator for currency-related data.
 
diff --git a/currency/gen_common.go b/currency/gen_common.go
index e483bed..d9e56ec 100644
--- a/currency/gen_common.go
+++ b/currency/gen_common.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/date/gen.go b/date/gen.go
index b58b9f7..30f6a41 100644
--- a/date/gen.go
+++ b/date/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/encoding/charmap/maketables.go b/encoding/charmap/maketables.go
index 70bf360..002665f 100644
--- a/encoding/charmap/maketables.go
+++ b/encoding/charmap/maketables.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/encoding/htmlindex/gen.go b/encoding/htmlindex/gen.go
index d47f8db..1fe0fe1 100644
--- a/encoding/htmlindex/gen.go
+++ b/encoding/htmlindex/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/encoding/ianaindex/gen.go b/encoding/ianaindex/gen.go
index 61d2366..6ab425b 100644
--- a/encoding/ianaindex/gen.go
+++ b/encoding/ianaindex/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/encoding/internal/identifier/gen.go b/encoding/internal/identifier/gen.go
index 039cb27..b30be18 100644
--- a/encoding/internal/identifier/gen.go
+++ b/encoding/internal/identifier/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/encoding/japanese/maketables.go b/encoding/japanese/maketables.go
index 3066a39..feed2a2 100644
--- a/encoding/japanese/maketables.go
+++ b/encoding/japanese/maketables.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/encoding/korean/maketables.go b/encoding/korean/maketables.go
index 9552286..1394b75 100644
--- a/encoding/korean/maketables.go
+++ b/encoding/korean/maketables.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/encoding/simplifiedchinese/maketables.go b/encoding/simplifiedchinese/maketables.go
index 44988bf..10e4941 100644
--- a/encoding/simplifiedchinese/maketables.go
+++ b/encoding/simplifiedchinese/maketables.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/encoding/traditionalchinese/maketables.go b/encoding/traditionalchinese/maketables.go
index 33f7905..88b2668 100644
--- a/encoding/traditionalchinese/maketables.go
+++ b/encoding/traditionalchinese/maketables.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/feature/plural/gen.go b/feature/plural/gen.go
index 5f8f375..c861d61 100644
--- a/feature/plural/gen.go
+++ b/feature/plural/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/feature/plural/gen_common.go b/feature/plural/gen_common.go
index bd92a4d..a442a7e 100644
--- a/feature/plural/gen_common.go
+++ b/feature/plural/gen_common.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/gen.go b/gen.go
index 566a303..a67e7f9 100644
--- a/gen.go
+++ b/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // gen runs go generate on Unicode- and CLDR-related package in the text
 // repositories, taking into account dependencies and versions.
@@ -256,7 +255,7 @@
 			return nil
 		}
 		b, err := os.ReadFile(file)
-		if err != nil || bytes.Contains(b, []byte("\n// +build ignore")) {
+		if err != nil || bytes.Contains(b, []byte("\n//go:build ignore")) {
 			return err
 		}
 		// Fix paths.
diff --git a/go.mod b/go.mod
index 8915bd1..ff064ec 100644
--- a/go.mod
+++ b/go.mod
@@ -1,10 +1,10 @@
 module golang.org/x/text
 
+go 1.18
+
 require golang.org/x/tools v0.6.0 // tagx:ignore
 
 require (
 	golang.org/x/mod v0.8.0 // indirect; tagx:ignore
 	golang.org/x/sys v0.5.0 // indirect; tagx:ignore
 )
-
-go 1.17
diff --git a/go.sum b/go.sum
index f92ec45..44d387e 100644
--- a/go.sum
+++ b/go.sum
@@ -1,34 +1,7 @@
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
 golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/internal/export/idna/conformance_test.go b/internal/export/idna/conformance_test.go
index 3e0e875..8ced0e7 100644
--- a/internal/export/idna/conformance_test.go
+++ b/internal/export/idna/conformance_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.10
-// +build go1.10
 
 package idna
 
diff --git a/internal/export/idna/gen.go b/internal/export/idna/gen.go
index 5a03f2c..c038db6 100644
--- a/internal/export/idna/gen.go
+++ b/internal/export/idna/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // This program generates the trie for idna operations. The Unicode casing
 // algorithm requires the lookup of various properties and mappings for each
diff --git a/internal/export/idna/gen10.0.0_test.go b/internal/export/idna/gen10.0.0_test.go
index 0ac9497..c5ace90 100644
--- a/internal/export/idna/gen10.0.0_test.go
+++ b/internal/export/idna/gen10.0.0_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.10
-// +build go1.10
 
 package idna
 
diff --git a/internal/export/idna/gen9.0.0_test.go b/internal/export/idna/gen9.0.0_test.go
index 47b9ef9..92bf136 100644
--- a/internal/export/idna/gen9.0.0_test.go
+++ b/internal/export/idna/gen9.0.0_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.10
-// +build !go1.10
 
 package idna
 
diff --git a/internal/export/idna/gen_common.go b/internal/export/idna/gen_common.go
index 8d87ba2..0ea680b 100644
--- a/internal/export/idna/gen_common.go
+++ b/internal/export/idna/gen_common.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/internal/export/idna/gen_trieval.go b/internal/export/idna/gen_trieval.go
index 501bfab..78cfee1 100644
--- a/internal/export/idna/gen_trieval.go
+++ b/internal/export/idna/gen_trieval.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/internal/export/idna/go118.go b/internal/export/idna/go118.go
index 941a7aa..7fd4392 100644
--- a/internal/export/idna/go118.go
+++ b/internal/export/idna/go118.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.18
-// +build go1.18
 
 package idna
 
diff --git a/internal/export/idna/idna10.0.0.go b/internal/export/idna/idna10.0.0.go
index 0e7571d..bda6ca2 100644
--- a/internal/export/idna/idna10.0.0.go
+++ b/internal/export/idna/idna10.0.0.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.10
-// +build go1.10
 
 //go:generate go run gen.go gen_trieval.go gen_common.go
 
diff --git a/internal/export/idna/idna10.0.0_test.go b/internal/export/idna/idna10.0.0_test.go
index c3365bc..8a018e0 100644
--- a/internal/export/idna/idna10.0.0_test.go
+++ b/internal/export/idna/idna10.0.0_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.10
-// +build go1.10
 
 package idna
 
diff --git a/internal/export/idna/idna9.0.0.go b/internal/export/idna/idna9.0.0.go
index f217b1a..8220fd6 100644
--- a/internal/export/idna/idna9.0.0.go
+++ b/internal/export/idna/idna9.0.0.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.10
-// +build !go1.10
 
 //go:generate go run gen.go gen_trieval.go gen_common.go
 
diff --git a/internal/export/idna/idna9.0.0_test.go b/internal/export/idna/idna9.0.0_test.go
index 91a1e90..d3d102f 100644
--- a/internal/export/idna/idna9.0.0_test.go
+++ b/internal/export/idna/idna9.0.0_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.10
-// +build !go1.10
 
 package idna
 
diff --git a/internal/export/idna/pre_go118.go b/internal/export/idna/pre_go118.go
index ab3fa2e..aa10dfb 100644
--- a/internal/export/idna/pre_go118.go
+++ b/internal/export/idna/pre_go118.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.18
-// +build !go1.18
 
 package idna
 
diff --git a/internal/export/idna/tables10.0.0.go b/internal/export/idna/tables10.0.0.go
index d1d62ef..c6c2bf1 100644
--- a/internal/export/idna/tables10.0.0.go
+++ b/internal/export/idna/tables10.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package idna
 
diff --git a/internal/export/idna/tables11.0.0.go b/internal/export/idna/tables11.0.0.go
index 167efba..7678939 100644
--- a/internal/export/idna/tables11.0.0.go
+++ b/internal/export/idna/tables11.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package idna
 
diff --git a/internal/export/idna/tables12.0.0.go b/internal/export/idna/tables12.0.0.go
index ab40f7b..0600cd2 100644
--- a/internal/export/idna/tables12.0.0.go
+++ b/internal/export/idna/tables12.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package idna
 
diff --git a/internal/export/idna/tables13.0.0.go b/internal/export/idna/tables13.0.0.go
index 66701ea..2fb768e 100644
--- a/internal/export/idna/tables13.0.0.go
+++ b/internal/export/idna/tables13.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package idna
 
diff --git a/internal/export/idna/tables15.0.0.go b/internal/export/idna/tables15.0.0.go
index 4003377..5ff05fe 100644
--- a/internal/export/idna/tables15.0.0.go
+++ b/internal/export/idna/tables15.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package idna
 
diff --git a/internal/export/idna/tables9.0.0.go b/internal/export/idna/tables9.0.0.go
index 4074b53..0f25e84 100644
--- a/internal/export/idna/tables9.0.0.go
+++ b/internal/export/idna/tables9.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package idna
 
diff --git a/internal/export/idna/trie12.0.0.go b/internal/export/idna/trie12.0.0.go
index 2fcebcf..07058ed 100644
--- a/internal/export/idna/trie12.0.0.go
+++ b/internal/export/idna/trie12.0.0.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.16
-// +build !go1.16
 
 package idna
 
diff --git a/internal/export/idna/trie13.0.0.go b/internal/export/idna/trie13.0.0.go
index 4a52c8b..1acfc17 100644
--- a/internal/export/idna/trie13.0.0.go
+++ b/internal/export/idna/trie13.0.0.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.16
-// +build go1.16
 
 package idna
 
diff --git a/internal/export/unicode/gen.go b/internal/export/unicode/gen.go
index 9e4114f..4e8295c 100644
--- a/internal/export/unicode/gen.go
+++ b/internal/export/unicode/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // Unicode table generator.
 // Data read from the web.
diff --git a/internal/gen/gen.go b/internal/gen/gen.go
index faa7092..78bfef6 100644
--- a/internal/gen/gen.go
+++ b/internal/gen/gen.go
@@ -277,11 +277,9 @@
 	return fmt.Sprint(prefix, "%s", suffix)
 }
 
-// tagLines returns the //go:build and // +build lines to add to the file.
+// tagLines returns the //go:build lines to add to the file.
 func tagLines(tags string) string {
-	newTags := strings.ReplaceAll(tags, ",", " && ")
-	return "//go:build " + newTags + "\n" +
-		"// +build " + tags + "\n"
+	return "//go:build " + strings.ReplaceAll(tags, ",", " && ") + "\n"
 }
 
 func updateBuildTags(pattern string) {
@@ -291,7 +289,7 @@
 		if err != nil {
 			continue
 		}
-		b = regexp.MustCompile(`((//go:build|// \+build).*\n)+`).ReplaceAll(b, []byte(tagLines(t.buildTags)))
+		b = regexp.MustCompile(`//go:build.*\n`).ReplaceAll(b, []byte(tagLines(t.buildTags)))
 		err = os.WriteFile(oldFile, b, 0644)
 		if err != nil {
 			log.Fatal(err)
diff --git a/internal/language/compact/gen.go b/internal/language/compact/gen.go
index 400c1f0..c11802a 100644
--- a/internal/language/compact/gen.go
+++ b/internal/language/compact/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // Language tag table generator.
 // Data read from the web.
diff --git a/internal/language/compact/gen_index.go b/internal/language/compact/gen_index.go
index 51c0d2d..f719464 100644
--- a/internal/language/compact/gen_index.go
+++ b/internal/language/compact/gen_index.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/internal/language/compact/gen_parents.go b/internal/language/compact/gen_parents.go
index 1f4a6e8..f8466af 100644
--- a/internal/language/compact/gen_parents.go
+++ b/internal/language/compact/gen_parents.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/internal/language/gen.go b/internal/language/gen.go
index f0ef4b2..28e466f 100644
--- a/internal/language/gen.go
+++ b/internal/language/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // Language tag table generator.
 // Data read from the web.
diff --git a/internal/language/gen_common.go b/internal/language/gen_common.go
index 84dd4de..8d91857 100644
--- a/internal/language/gen_common.go
+++ b/internal/language/gen_common.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/internal/number/gen.go b/internal/number/gen.go
index 5341747..bbb1b9a 100644
--- a/internal/number/gen.go
+++ b/internal/number/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/internal/number/gen_common.go b/internal/number/gen_common.go
index f20ad7f..ec25876 100644
--- a/internal/number/gen_common.go
+++ b/internal/number/gen_common.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/internal/testtext/gc.go b/internal/testtext/gc.go
index a6365f9..93a7b4d 100644
--- a/internal/testtext/gc.go
+++ b/internal/testtext/gc.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !gccgo
-// +build !gccgo
 
 package testtext
 
diff --git a/internal/testtext/gccgo.go b/internal/testtext/gccgo.go
index e880af3..58cc687 100644
--- a/internal/testtext/gccgo.go
+++ b/internal/testtext/gccgo.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build gccgo
-// +build gccgo
 
 package testtext
 
diff --git a/internal/testtext/go1_6.go b/internal/testtext/go1_6.go
index f633e89..d7b4947 100644
--- a/internal/testtext/go1_6.go
+++ b/internal/testtext/go1_6.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.7
-// +build !go1.7
 
 package testtext
 
diff --git a/internal/testtext/go1_7.go b/internal/testtext/go1_7.go
index 228bf42..8153af6 100644
--- a/internal/testtext/go1_7.go
+++ b/internal/testtext/go1_7.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.7
-// +build go1.7
 
 package testtext
 
diff --git a/internal/triegen/data_test.go b/internal/triegen/data_test.go
index a47efac..5e16c09 100644
--- a/internal/triegen/data_test.go
+++ b/internal/triegen/data_test.go
@@ -1,6 +1,5 @@
 // This file is generated with "go test -tags generate". DO NOT EDIT!
 //go:build !generate
-// +build !generate
 
 package triegen_test
 
diff --git a/internal/triegen/gen_test.go b/internal/triegen/gen_test.go
index 6bd137d..a0eb0a2 100644
--- a/internal/triegen/gen_test.go
+++ b/internal/triegen/gen_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build generate
-// +build generate
 
 package triegen_test
 
@@ -51,7 +50,7 @@
 }
 
 const header = `// This file is generated with "go test -tags generate". DO NOT EDIT!
-// +build !generate
+//go:build !generate
 
 package triegen_test
 `
diff --git a/language/display/maketables.go b/language/display/maketables.go
index 25674bb..899baad 100644
--- a/language/display/maketables.go
+++ b/language/display/maketables.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // Generator for display name tables.
 
diff --git a/language/gen.go b/language/gen.go
index 60bdf64..b5fbf36 100644
--- a/language/gen.go
+++ b/language/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // Language tag table generator.
 // Data read from the web.
diff --git a/message/catalog/go19.go b/message/catalog/go19.go
index 4e5e87f..291a4df 100644
--- a/message/catalog/go19.go
+++ b/message/catalog/go19.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.9
-// +build go1.9
 
 package catalog
 
diff --git a/message/catalog/gopre19.go b/message/catalog/gopre19.go
index 9e14685..da44ebb 100644
--- a/message/catalog/gopre19.go
+++ b/message/catalog/gopre19.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.9
-// +build !go1.9
 
 package catalog
 
diff --git a/message/pipeline/go19_test.go b/message/pipeline/go19_test.go
index 10d9eda..62594ea 100644
--- a/message/pipeline/go19_test.go
+++ b/message/pipeline/go19_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.9
-// +build go1.9
 
 package pipeline
 
diff --git a/secure/bidirule/bidirule10.0.0.go b/secure/bidirule/bidirule10.0.0.go
index 8a7392c..784bb88 100644
--- a/secure/bidirule/bidirule10.0.0.go
+++ b/secure/bidirule/bidirule10.0.0.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.10
-// +build go1.10
 
 package bidirule
 
diff --git a/secure/bidirule/bidirule10.0.0_test.go b/secure/bidirule/bidirule10.0.0_test.go
index dd5271c..5716d04 100644
--- a/secure/bidirule/bidirule10.0.0_test.go
+++ b/secure/bidirule/bidirule10.0.0_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.10
-// +build go1.10
 
 package bidirule
 
diff --git a/secure/bidirule/bidirule9.0.0.go b/secure/bidirule/bidirule9.0.0.go
index bb0a920..8e1e943 100644
--- a/secure/bidirule/bidirule9.0.0.go
+++ b/secure/bidirule/bidirule9.0.0.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.10
-// +build !go1.10
 
 package bidirule
 
diff --git a/secure/bidirule/bidirule9.0.0_test.go b/secure/bidirule/bidirule9.0.0_test.go
index e0bd1b4..3f5d6fe 100644
--- a/secure/bidirule/bidirule9.0.0_test.go
+++ b/secure/bidirule/bidirule9.0.0_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.10
-// +build !go1.10
 
 package bidirule
 
diff --git a/secure/precis/benchmark_test.go b/secure/precis/benchmark_test.go
index faed654..4abebd8 100644
--- a/secure/precis/benchmark_test.go
+++ b/secure/precis/benchmark_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.7
-// +build go1.7
 
 package precis
 
diff --git a/secure/precis/enforce10.0.0_test.go b/secure/precis/enforce10.0.0_test.go
index 7dd7bd5..587fecd 100644
--- a/secure/precis/enforce10.0.0_test.go
+++ b/secure/precis/enforce10.0.0_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.10
-// +build go1.10
 
 package precis
 
diff --git a/secure/precis/enforce9.0.0_test.go b/secure/precis/enforce9.0.0_test.go
index 98765cd..097992e 100644
--- a/secure/precis/enforce9.0.0_test.go
+++ b/secure/precis/enforce9.0.0_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build !go1.10
-// +build !go1.10
 
 package precis
 
diff --git a/secure/precis/gen.go b/secure/precis/gen.go
index aa20568..9e18d53 100644
--- a/secure/precis/gen.go
+++ b/secure/precis/gen.go
@@ -6,7 +6,6 @@
 // Data read from the web.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/secure/precis/gen_trieval.go b/secure/precis/gen_trieval.go
index 6fc5d1e..3ba2e06 100644
--- a/secure/precis/gen_trieval.go
+++ b/secure/precis/gen_trieval.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/secure/precis/tables10.0.0.go b/secure/precis/tables10.0.0.go
index 8164749..93cbffa 100644
--- a/secure/precis/tables10.0.0.go
+++ b/secure/precis/tables10.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package precis
 
diff --git a/secure/precis/tables11.0.0.go b/secure/precis/tables11.0.0.go
index a40e55d..6cea210 100644
--- a/secure/precis/tables11.0.0.go
+++ b/secure/precis/tables11.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package precis
 
diff --git a/secure/precis/tables12.0.0.go b/secure/precis/tables12.0.0.go
index 254bbc7..1b506cd 100644
--- a/secure/precis/tables12.0.0.go
+++ b/secure/precis/tables12.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package precis
 
diff --git a/secure/precis/tables13.0.0.go b/secure/precis/tables13.0.0.go
index 7bc1a16..0a467f5 100644
--- a/secure/precis/tables13.0.0.go
+++ b/secure/precis/tables13.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package precis
 
diff --git a/secure/precis/tables15.0.0.go b/secure/precis/tables15.0.0.go
index 48c3227..0628606 100644
--- a/secure/precis/tables15.0.0.go
+++ b/secure/precis/tables15.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package precis
 
diff --git a/secure/precis/tables9.0.0.go b/secure/precis/tables9.0.0.go
index 2292b7c..0a104f7 100644
--- a/secure/precis/tables9.0.0.go
+++ b/secure/precis/tables9.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package precis
 
diff --git a/unicode/bidi/gen.go b/unicode/bidi/gen.go
index ab2b8bf..0236491 100644
--- a/unicode/bidi/gen.go
+++ b/unicode/bidi/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/unicode/bidi/gen_ranges.go b/unicode/bidi/gen_ranges.go
index 10f0989..5106414 100644
--- a/unicode/bidi/gen_ranges.go
+++ b/unicode/bidi/gen_ranges.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/unicode/bidi/gen_trieval.go b/unicode/bidi/gen_trieval.go
index d565b7c..15f313c 100644
--- a/unicode/bidi/gen_trieval.go
+++ b/unicode/bidi/gen_trieval.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/unicode/bidi/tables10.0.0.go b/unicode/bidi/tables10.0.0.go
index 42fa8d7..d2bd711 100644
--- a/unicode/bidi/tables10.0.0.go
+++ b/unicode/bidi/tables10.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package bidi
 
diff --git a/unicode/bidi/tables11.0.0.go b/unicode/bidi/tables11.0.0.go
index 56a0e1e..f76bdca 100644
--- a/unicode/bidi/tables11.0.0.go
+++ b/unicode/bidi/tables11.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package bidi
 
diff --git a/unicode/bidi/tables12.0.0.go b/unicode/bidi/tables12.0.0.go
index baacf32..3aa2c3b 100644
--- a/unicode/bidi/tables12.0.0.go
+++ b/unicode/bidi/tables12.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package bidi
 
diff --git a/unicode/bidi/tables13.0.0.go b/unicode/bidi/tables13.0.0.go
index ffadb7b..a713757 100644
--- a/unicode/bidi/tables13.0.0.go
+++ b/unicode/bidi/tables13.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package bidi
 
diff --git a/unicode/bidi/tables15.0.0.go b/unicode/bidi/tables15.0.0.go
index 92cce58..f15746f 100644
--- a/unicode/bidi/tables15.0.0.go
+++ b/unicode/bidi/tables15.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package bidi
 
diff --git a/unicode/bidi/tables9.0.0.go b/unicode/bidi/tables9.0.0.go
index f517fdb..c164d37 100644
--- a/unicode/bidi/tables9.0.0.go
+++ b/unicode/bidi/tables9.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package bidi
 
diff --git a/unicode/cldr/makexml.go b/unicode/cldr/makexml.go
index 528f2c4..d5166d8 100644
--- a/unicode/cldr/makexml.go
+++ b/unicode/cldr/makexml.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // This tool generates types for the various XML formats of CLDR.
 package main
diff --git a/unicode/norm/data10.0.0_test.go b/unicode/norm/data10.0.0_test.go
index 54ee4d2..9831d75 100644
--- a/unicode/norm/data10.0.0_test.go
+++ b/unicode/norm/data10.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package norm
 
diff --git a/unicode/norm/data11.0.0_test.go b/unicode/norm/data11.0.0_test.go
index 5b0e037..28cc49a 100644
--- a/unicode/norm/data11.0.0_test.go
+++ b/unicode/norm/data11.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package norm
 
diff --git a/unicode/norm/data12.0.0_test.go b/unicode/norm/data12.0.0_test.go
index 48cdbc5..d56a0cb 100644
--- a/unicode/norm/data12.0.0_test.go
+++ b/unicode/norm/data12.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package norm
 
diff --git a/unicode/norm/data13.0.0_test.go b/unicode/norm/data13.0.0_test.go
index c99ddf5..a595b87 100644
--- a/unicode/norm/data13.0.0_test.go
+++ b/unicode/norm/data13.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package norm
 
diff --git a/unicode/norm/data15.0.0_test.go b/unicode/norm/data15.0.0_test.go
index 674e4b0..904f19d 100644
--- a/unicode/norm/data15.0.0_test.go
+++ b/unicode/norm/data15.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package norm
 
diff --git a/unicode/norm/data9.0.0_test.go b/unicode/norm/data9.0.0_test.go
index 77175bc..2faa68f 100644
--- a/unicode/norm/data9.0.0_test.go
+++ b/unicode/norm/data9.0.0_test.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package norm
 
diff --git a/unicode/norm/forminfo_test.go b/unicode/norm/forminfo_test.go
index 96f0970..06aa32d 100644
--- a/unicode/norm/forminfo_test.go
+++ b/unicode/norm/forminfo_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build test
-// +build test
 
 package norm
 
diff --git a/unicode/norm/maketables.go b/unicode/norm/maketables.go
index dd05b6f..76534da 100644
--- a/unicode/norm/maketables.go
+++ b/unicode/norm/maketables.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // Normalization table generator.
 // Data read from the web.
diff --git a/unicode/norm/tables10.0.0.go b/unicode/norm/tables10.0.0.go
index f5a0788..1af161c 100644
--- a/unicode/norm/tables10.0.0.go
+++ b/unicode/norm/tables10.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package norm
 
diff --git a/unicode/norm/tables11.0.0.go b/unicode/norm/tables11.0.0.go
index cb7239c..eb73ecc 100644
--- a/unicode/norm/tables11.0.0.go
+++ b/unicode/norm/tables11.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package norm
 
diff --git a/unicode/norm/tables12.0.0.go b/unicode/norm/tables12.0.0.go
index 11b2733..276cb8d 100644
--- a/unicode/norm/tables12.0.0.go
+++ b/unicode/norm/tables12.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package norm
 
diff --git a/unicode/norm/tables13.0.0.go b/unicode/norm/tables13.0.0.go
index f65785e..0cceffd 100644
--- a/unicode/norm/tables13.0.0.go
+++ b/unicode/norm/tables13.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package norm
 
diff --git a/unicode/norm/tables15.0.0.go b/unicode/norm/tables15.0.0.go
index e1858b8..b0819e4 100644
--- a/unicode/norm/tables15.0.0.go
+++ b/unicode/norm/tables15.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package norm
 
diff --git a/unicode/norm/tables9.0.0.go b/unicode/norm/tables9.0.0.go
index 0175eae..bf65457 100644
--- a/unicode/norm/tables9.0.0.go
+++ b/unicode/norm/tables9.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package norm
 
diff --git a/unicode/norm/triegen.go b/unicode/norm/triegen.go
index cce6435..427491d 100644
--- a/unicode/norm/triegen.go
+++ b/unicode/norm/triegen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // Trie table generator.
 // Used by make*tables tools to generate a go file with trie data structures
diff --git a/unicode/rangetable/gen.go b/unicode/rangetable/gen.go
index fc4eee0..e94fbb3 100644
--- a/unicode/rangetable/gen.go
+++ b/unicode/rangetable/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/unicode/rangetable/tables10.0.0.go b/unicode/rangetable/tables10.0.0.go
index a34fbe2..8ebfadc 100644
--- a/unicode/rangetable/tables10.0.0.go
+++ b/unicode/rangetable/tables10.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package rangetable
 
diff --git a/unicode/rangetable/tables11.0.0.go b/unicode/rangetable/tables11.0.0.go
index 31949f0..ca9e99a 100644
--- a/unicode/rangetable/tables11.0.0.go
+++ b/unicode/rangetable/tables11.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package rangetable
 
diff --git a/unicode/rangetable/tables12.0.0.go b/unicode/rangetable/tables12.0.0.go
index 9d4d724..04bcf7f 100644
--- a/unicode/rangetable/tables12.0.0.go
+++ b/unicode/rangetable/tables12.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package rangetable
 
diff --git a/unicode/rangetable/tables13.0.0.go b/unicode/rangetable/tables13.0.0.go
index 49c3597..4db0146 100644
--- a/unicode/rangetable/tables13.0.0.go
+++ b/unicode/rangetable/tables13.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package rangetable
 
diff --git a/unicode/rangetable/tables15.0.0.go b/unicode/rangetable/tables15.0.0.go
index 0679d0f..dc17784 100644
--- a/unicode/rangetable/tables15.0.0.go
+++ b/unicode/rangetable/tables15.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package rangetable
 
diff --git a/unicode/rangetable/tables9.0.0.go b/unicode/rangetable/tables9.0.0.go
index 32a7ac1..f102c41 100644
--- a/unicode/rangetable/tables9.0.0.go
+++ b/unicode/rangetable/tables9.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package rangetable
 
diff --git a/unicode/runenames/gen.go b/unicode/runenames/gen.go
index 4f4a020..da8fc72 100644
--- a/unicode/runenames/gen.go
+++ b/unicode/runenames/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/unicode/runenames/tables10.0.0.go b/unicode/runenames/tables10.0.0.go
index 9ff9ad9..c4b6c46 100644
--- a/unicode/runenames/tables10.0.0.go
+++ b/unicode/runenames/tables10.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package runenames
 
diff --git a/unicode/runenames/tables11.0.0.go b/unicode/runenames/tables11.0.0.go
index ba17988..321bd87 100644
--- a/unicode/runenames/tables11.0.0.go
+++ b/unicode/runenames/tables11.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package runenames
 
diff --git a/unicode/runenames/tables12.0.0.go b/unicode/runenames/tables12.0.0.go
index 7355a56..09c42b4 100644
--- a/unicode/runenames/tables12.0.0.go
+++ b/unicode/runenames/tables12.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package runenames
 
diff --git a/unicode/runenames/tables13.0.0.go b/unicode/runenames/tables13.0.0.go
index 31503ae..41616db 100644
--- a/unicode/runenames/tables13.0.0.go
+++ b/unicode/runenames/tables13.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package runenames
 
diff --git a/unicode/runenames/tables15.0.0.go b/unicode/runenames/tables15.0.0.go
index 6f5874b..9c06175 100644
--- a/unicode/runenames/tables15.0.0.go
+++ b/unicode/runenames/tables15.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package runenames
 
diff --git a/unicode/runenames/tables9.0.0.go b/unicode/runenames/tables9.0.0.go
index 0e8d955..2a77188 100644
--- a/unicode/runenames/tables9.0.0.go
+++ b/unicode/runenames/tables9.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package runenames
 
diff --git a/width/gen.go b/width/gen.go
index 36e4156..39b2c8d 100644
--- a/width/gen.go
+++ b/width/gen.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 // This program generates the trie for width operations. The generated table
 // includes width category information as well as the normalization mappings.
diff --git a/width/gen_common.go b/width/gen_common.go
index 24c49ff..da3a1f0 100644
--- a/width/gen_common.go
+++ b/width/gen_common.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/width/gen_trieval.go b/width/gen_trieval.go
index cf1a3b2..4f88ca6 100644
--- a/width/gen_trieval.go
+++ b/width/gen_trieval.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build ignore
-// +build ignore
 
 package main
 
diff --git a/width/tables10.0.0.go b/width/tables10.0.0.go
index cd9d91c..07c1cb1 100644
--- a/width/tables10.0.0.go
+++ b/width/tables10.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.10 && !go1.13
-// +build go1.10,!go1.13
 
 package width
 
diff --git a/width/tables11.0.0.go b/width/tables11.0.0.go
index 327eaef..89288b3 100644
--- a/width/tables11.0.0.go
+++ b/width/tables11.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.13 && !go1.14
-// +build go1.13,!go1.14
 
 package width
 
diff --git a/width/tables12.0.0.go b/width/tables12.0.0.go
index 5c14ade..755ee91 100644
--- a/width/tables12.0.0.go
+++ b/width/tables12.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.14 && !go1.16
-// +build go1.14,!go1.16
 
 package width
 
diff --git a/width/tables13.0.0.go b/width/tables13.0.0.go
index b1fcb52..40c169e 100644
--- a/width/tables13.0.0.go
+++ b/width/tables13.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.16 && !go1.21
-// +build go1.16,!go1.21
 
 package width
 
diff --git a/width/tables15.0.0.go b/width/tables15.0.0.go
index 4b91e33..2b85289 100644
--- a/width/tables15.0.0.go
+++ b/width/tables15.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build go1.21
-// +build go1.21
 
 package width
 
diff --git a/width/tables9.0.0.go b/width/tables9.0.0.go
index 6781f3d..d981330 100644
--- a/width/tables9.0.0.go
+++ b/width/tables9.0.0.go
@@ -1,7 +1,6 @@
 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 //go:build !go1.10
-// +build !go1.10
 
 package width