From b7fb4ade5e85ff86c8d694a9bccb13d8a318dcf5 Mon Sep 17 00:00:00 2001
From: Kubilay Kahveci <kahvecikubilay@gmail.com>
Date: Wed, 24 Oct 2018 21:06:55 +0100
Subject: [PATCH] Generate tests

---
 ...ter-same-line-gen-rs-private-getter-alt.js | 124 ++++++++++++++
 ...s-after-same-line-gen-rs-private-getter.js | 124 ++++++++++++++
 ...ter-same-line-gen-rs-private-method-alt.js | 123 ++++++++++++++
 ...s-after-same-line-gen-rs-private-method.js | 123 ++++++++++++++
 ...ter-same-line-gen-rs-private-setter-alt.js | 123 ++++++++++++++
 ...s-after-same-line-gen-rs-private-setter.js | 123 ++++++++++++++
 ...-same-line-method-rs-private-getter-alt.js | 124 ++++++++++++++
 ...fter-same-line-method-rs-private-getter.js | 124 ++++++++++++++
 ...-same-line-method-rs-private-method-alt.js | 123 ++++++++++++++
 ...fter-same-line-method-rs-private-method.js | 123 ++++++++++++++
 ...-same-line-method-rs-private-setter-alt.js | 123 ++++++++++++++
 ...fter-same-line-method-rs-private-setter.js | 123 ++++++++++++++
 ...-static-async-gen-rs-private-getter-alt.js | 138 +++++++++++++++
 ...line-static-async-gen-rs-private-getter.js | 138 +++++++++++++++
 ...-static-async-gen-rs-private-method-alt.js | 137 +++++++++++++++
 ...line-static-async-gen-rs-private-method.js | 137 +++++++++++++++
 ...-static-async-gen-rs-private-setter-alt.js | 137 +++++++++++++++
 ...line-static-async-gen-rs-private-setter.js | 137 +++++++++++++++
 ...atic-async-method-rs-private-getter-alt.js | 137 +++++++++++++++
 ...e-static-async-method-rs-private-getter.js | 137 +++++++++++++++
 ...atic-async-method-rs-private-method-alt.js | 136 +++++++++++++++
 ...e-static-async-method-rs-private-method.js | 136 +++++++++++++++
 ...atic-async-method-rs-private-setter-alt.js | 136 +++++++++++++++
 ...e-static-async-method-rs-private-setter.js | 136 +++++++++++++++
 ...e-line-static-gen-rs-private-getter-alt.js | 124 ++++++++++++++
 ...-same-line-static-gen-rs-private-getter.js | 124 ++++++++++++++
 ...e-line-static-gen-rs-private-method-alt.js | 123 ++++++++++++++
 ...-same-line-static-gen-rs-private-method.js | 123 ++++++++++++++
 ...e-line-static-gen-rs-private-setter-alt.js | 123 ++++++++++++++
 ...-same-line-static-gen-rs-private-setter.js | 123 ++++++++++++++
 ...ine-static-method-rs-private-getter-alt.js | 124 ++++++++++++++
 ...me-line-static-method-rs-private-getter.js | 124 ++++++++++++++
 ...ine-static-method-rs-private-method-alt.js | 123 ++++++++++++++
 ...me-line-static-method-rs-private-method.js | 123 ++++++++++++++
 ...ine-static-method-rs-private-setter-alt.js | 123 ++++++++++++++
 ...me-line-static-method-rs-private-setter.js | 123 ++++++++++++++
 ...tiple-definitions-rs-private-getter-alt.js | 160 ++++++++++++++++++
 ...-multiple-definitions-rs-private-getter.js | 160 ++++++++++++++++++
 ...tiple-definitions-rs-private-method-alt.js | 159 +++++++++++++++++
 ...-multiple-definitions-rs-private-method.js | 159 +++++++++++++++++
 ...tiple-definitions-rs-private-setter-alt.js | 159 +++++++++++++++++
 ...-multiple-definitions-rs-private-setter.js | 159 +++++++++++++++++
 ...acked-definitions-rs-private-getter-alt.js | 138 +++++++++++++++
 ...e-stacked-definitions-rs-private-getter.js | 138 +++++++++++++++
 ...acked-definitions-rs-private-method-alt.js | 137 +++++++++++++++
 ...e-stacked-definitions-rs-private-method.js | 137 +++++++++++++++
 ...acked-definitions-rs-private-setter-alt.js | 137 +++++++++++++++
 ...e-stacked-definitions-rs-private-setter.js | 137 +++++++++++++++
 ...no-sc-line-method-rs-private-getter-alt.js | 125 ++++++++++++++
 ...new-no-sc-line-method-rs-private-getter.js | 125 ++++++++++++++
 ...no-sc-line-method-rs-private-method-alt.js | 124 ++++++++++++++
 ...new-no-sc-line-method-rs-private-method.js | 124 ++++++++++++++
 ...no-sc-line-method-rs-private-setter-alt.js | 124 ++++++++++++++
 ...new-no-sc-line-method-rs-private-setter.js | 124 ++++++++++++++
 ...s-new-sc-line-gen-rs-private-getter-alt.js | 125 ++++++++++++++
 ...ields-new-sc-line-gen-rs-private-getter.js | 125 ++++++++++++++
 ...s-new-sc-line-gen-rs-private-method-alt.js | 124 ++++++++++++++
 ...ields-new-sc-line-gen-rs-private-method.js | 124 ++++++++++++++
 ...s-new-sc-line-gen-rs-private-setter-alt.js | 124 ++++++++++++++
 ...ields-new-sc-line-gen-rs-private-setter.js | 124 ++++++++++++++
 ...ew-sc-line-method-rs-private-getter-alt.js | 125 ++++++++++++++
 ...ds-new-sc-line-method-rs-private-getter.js | 125 ++++++++++++++
 ...ew-sc-line-method-rs-private-method-alt.js | 124 ++++++++++++++
 ...ds-new-sc-line-method-rs-private-method.js | 124 ++++++++++++++
 ...ew-sc-line-method-rs-private-setter-alt.js | 124 ++++++++++++++
 ...ds-new-sc-line-method-rs-private-setter.js | 124 ++++++++++++++
 ...gular-definitions-rs-private-getter-alt.js | 113 +++++++++++++
 ...s-regular-definitions-rs-private-getter.js | 113 +++++++++++++
 ...gular-definitions-rs-private-method-alt.js | 112 ++++++++++++
 ...s-regular-definitions-rs-private-method.js | 112 ++++++++++++
 ...gular-definitions-rs-private-setter-alt.js | 112 ++++++++++++
 ...s-regular-definitions-rs-private-setter.js | 112 ++++++++++++
 ...me-line-async-gen-rs-private-getter-alt.js | 138 +++++++++++++++
 ...s-same-line-async-gen-rs-private-getter.js | 138 +++++++++++++++
 ...me-line-async-gen-rs-private-method-alt.js | 137 +++++++++++++++
 ...s-same-line-async-gen-rs-private-method.js | 137 +++++++++++++++
 ...me-line-async-gen-rs-private-setter-alt.js | 137 +++++++++++++++
 ...s-same-line-async-gen-rs-private-setter.js | 137 +++++++++++++++
 ...line-async-method-rs-private-getter-alt.js | 137 +++++++++++++++
 ...ame-line-async-method-rs-private-getter.js | 137 +++++++++++++++
 ...line-async-method-rs-private-method-alt.js | 136 +++++++++++++++
 ...ame-line-async-method-rs-private-method.js | 136 +++++++++++++++
 ...line-async-method-rs-private-setter-alt.js | 136 +++++++++++++++
 ...ame-line-async-method-rs-private-setter.js | 136 +++++++++++++++
 ...lds-same-line-gen-rs-private-getter-alt.js | 124 ++++++++++++++
 .../fields-same-line-gen-rs-private-getter.js | 124 ++++++++++++++
 ...lds-same-line-gen-rs-private-method-alt.js | 123 ++++++++++++++
 .../fields-same-line-gen-rs-private-method.js | 123 ++++++++++++++
 ...lds-same-line-gen-rs-private-setter-alt.js | 123 ++++++++++++++
 .../fields-same-line-gen-rs-private-setter.js | 123 ++++++++++++++
 ...-same-line-method-rs-private-getter-alt.js | 124 ++++++++++++++
 ...elds-same-line-method-rs-private-getter.js | 124 ++++++++++++++
 ...-same-line-method-rs-private-method-alt.js | 123 ++++++++++++++
 ...elds-same-line-method-rs-private-method.js | 123 ++++++++++++++
 ...-same-line-method-rs-private-setter-alt.js | 123 ++++++++++++++
 ...elds-same-line-method-rs-private-setter.js | 123 ++++++++++++++
 ...lds-wrapped-in-sc-rs-private-getter-alt.js | 115 +++++++++++++
 .../fields-wrapped-in-sc-rs-private-getter.js | 115 +++++++++++++
 ...lds-wrapped-in-sc-rs-private-method-alt.js | 114 +++++++++++++
 .../fields-wrapped-in-sc-rs-private-method.js | 114 +++++++++++++
 ...lds-wrapped-in-sc-rs-private-setter-alt.js | 114 +++++++++++++
 .../fields-wrapped-in-sc-rs-private-setter.js | 114 +++++++++++++
 ...ter-same-line-gen-rs-private-getter-alt.js | 124 ++++++++++++++
 ...s-after-same-line-gen-rs-private-getter.js | 124 ++++++++++++++
 ...ter-same-line-gen-rs-private-method-alt.js | 123 ++++++++++++++
 ...s-after-same-line-gen-rs-private-method.js | 123 ++++++++++++++
 ...ter-same-line-gen-rs-private-setter-alt.js | 123 ++++++++++++++
 ...s-after-same-line-gen-rs-private-setter.js | 123 ++++++++++++++
 ...-same-line-method-rs-private-getter-alt.js | 124 ++++++++++++++
 ...fter-same-line-method-rs-private-getter.js | 124 ++++++++++++++
 ...-same-line-method-rs-private-method-alt.js | 123 ++++++++++++++
 ...fter-same-line-method-rs-private-method.js | 123 ++++++++++++++
 ...-same-line-method-rs-private-setter-alt.js | 123 ++++++++++++++
 ...fter-same-line-method-rs-private-setter.js | 123 ++++++++++++++
 ...-static-async-gen-rs-private-getter-alt.js | 138 +++++++++++++++
 ...line-static-async-gen-rs-private-getter.js | 138 +++++++++++++++
 ...-static-async-gen-rs-private-method-alt.js | 137 +++++++++++++++
 ...line-static-async-gen-rs-private-method.js | 137 +++++++++++++++
 ...-static-async-gen-rs-private-setter-alt.js | 137 +++++++++++++++
 ...line-static-async-gen-rs-private-setter.js | 137 +++++++++++++++
 ...atic-async-method-rs-private-getter-alt.js | 137 +++++++++++++++
 ...e-static-async-method-rs-private-getter.js | 137 +++++++++++++++
 ...atic-async-method-rs-private-method-alt.js | 136 +++++++++++++++
 ...e-static-async-method-rs-private-method.js | 136 +++++++++++++++
 ...atic-async-method-rs-private-setter-alt.js | 136 +++++++++++++++
 ...e-static-async-method-rs-private-setter.js | 136 +++++++++++++++
 ...e-line-static-gen-rs-private-getter-alt.js | 124 ++++++++++++++
 ...-same-line-static-gen-rs-private-getter.js | 124 ++++++++++++++
 ...e-line-static-gen-rs-private-method-alt.js | 123 ++++++++++++++
 ...-same-line-static-gen-rs-private-method.js | 123 ++++++++++++++
 ...e-line-static-gen-rs-private-setter-alt.js | 123 ++++++++++++++
 ...-same-line-static-gen-rs-private-setter.js | 123 ++++++++++++++
 ...ine-static-method-rs-private-getter-alt.js | 124 ++++++++++++++
 ...me-line-static-method-rs-private-getter.js | 124 ++++++++++++++
 ...ine-static-method-rs-private-method-alt.js | 123 ++++++++++++++
 ...me-line-static-method-rs-private-method.js | 123 ++++++++++++++
 ...ine-static-method-rs-private-setter-alt.js | 123 ++++++++++++++
 ...me-line-static-method-rs-private-setter.js | 123 ++++++++++++++
 ...tiple-definitions-rs-private-getter-alt.js | 160 ++++++++++++++++++
 ...-multiple-definitions-rs-private-getter.js | 160 ++++++++++++++++++
 ...tiple-definitions-rs-private-method-alt.js | 159 +++++++++++++++++
 ...-multiple-definitions-rs-private-method.js | 159 +++++++++++++++++
 ...tiple-definitions-rs-private-setter-alt.js | 159 +++++++++++++++++
 ...-multiple-definitions-rs-private-setter.js | 159 +++++++++++++++++
 ...acked-definitions-rs-private-getter-alt.js | 138 +++++++++++++++
 ...e-stacked-definitions-rs-private-getter.js | 138 +++++++++++++++
 ...acked-definitions-rs-private-method-alt.js | 137 +++++++++++++++
 ...e-stacked-definitions-rs-private-method.js | 137 +++++++++++++++
 ...acked-definitions-rs-private-setter-alt.js | 137 +++++++++++++++
 ...e-stacked-definitions-rs-private-setter.js | 137 +++++++++++++++
 ...no-sc-line-method-rs-private-getter-alt.js | 125 ++++++++++++++
 ...new-no-sc-line-method-rs-private-getter.js | 125 ++++++++++++++
 ...no-sc-line-method-rs-private-method-alt.js | 124 ++++++++++++++
 ...new-no-sc-line-method-rs-private-method.js | 124 ++++++++++++++
 ...no-sc-line-method-rs-private-setter-alt.js | 124 ++++++++++++++
 ...new-no-sc-line-method-rs-private-setter.js | 124 ++++++++++++++
 ...s-new-sc-line-gen-rs-private-getter-alt.js | 125 ++++++++++++++
 ...ields-new-sc-line-gen-rs-private-getter.js | 125 ++++++++++++++
 ...s-new-sc-line-gen-rs-private-method-alt.js | 124 ++++++++++++++
 ...ields-new-sc-line-gen-rs-private-method.js | 124 ++++++++++++++
 ...s-new-sc-line-gen-rs-private-setter-alt.js | 124 ++++++++++++++
 ...ields-new-sc-line-gen-rs-private-setter.js | 124 ++++++++++++++
 ...ew-sc-line-method-rs-private-getter-alt.js | 125 ++++++++++++++
 ...ds-new-sc-line-method-rs-private-getter.js | 125 ++++++++++++++
 ...ew-sc-line-method-rs-private-method-alt.js | 124 ++++++++++++++
 ...ds-new-sc-line-method-rs-private-method.js | 124 ++++++++++++++
 ...ew-sc-line-method-rs-private-setter-alt.js | 124 ++++++++++++++
 ...ds-new-sc-line-method-rs-private-setter.js | 124 ++++++++++++++
 ...gular-definitions-rs-private-getter-alt.js | 113 +++++++++++++
 ...s-regular-definitions-rs-private-getter.js | 113 +++++++++++++
 ...gular-definitions-rs-private-method-alt.js | 112 ++++++++++++
 ...s-regular-definitions-rs-private-method.js | 112 ++++++++++++
 ...gular-definitions-rs-private-setter-alt.js | 112 ++++++++++++
 ...s-regular-definitions-rs-private-setter.js | 112 ++++++++++++
 ...me-line-async-gen-rs-private-getter-alt.js | 138 +++++++++++++++
 ...s-same-line-async-gen-rs-private-getter.js | 138 +++++++++++++++
 ...me-line-async-gen-rs-private-method-alt.js | 137 +++++++++++++++
 ...s-same-line-async-gen-rs-private-method.js | 137 +++++++++++++++
 ...me-line-async-gen-rs-private-setter-alt.js | 137 +++++++++++++++
 ...s-same-line-async-gen-rs-private-setter.js | 137 +++++++++++++++
 ...line-async-method-rs-private-getter-alt.js | 137 +++++++++++++++
 ...ame-line-async-method-rs-private-getter.js | 137 +++++++++++++++
 ...line-async-method-rs-private-method-alt.js | 136 +++++++++++++++
 ...ame-line-async-method-rs-private-method.js | 136 +++++++++++++++
 ...line-async-method-rs-private-setter-alt.js | 136 +++++++++++++++
 ...ame-line-async-method-rs-private-setter.js | 136 +++++++++++++++
 ...lds-same-line-gen-rs-private-getter-alt.js | 124 ++++++++++++++
 .../fields-same-line-gen-rs-private-getter.js | 124 ++++++++++++++
 ...lds-same-line-gen-rs-private-method-alt.js | 123 ++++++++++++++
 .../fields-same-line-gen-rs-private-method.js | 123 ++++++++++++++
 ...lds-same-line-gen-rs-private-setter-alt.js | 123 ++++++++++++++
 .../fields-same-line-gen-rs-private-setter.js | 123 ++++++++++++++
 ...-same-line-method-rs-private-getter-alt.js | 124 ++++++++++++++
 ...elds-same-line-method-rs-private-getter.js | 124 ++++++++++++++
 ...-same-line-method-rs-private-method-alt.js | 123 ++++++++++++++
 ...elds-same-line-method-rs-private-method.js | 123 ++++++++++++++
 ...-same-line-method-rs-private-setter-alt.js | 123 ++++++++++++++
 ...elds-same-line-method-rs-private-setter.js | 123 ++++++++++++++
 ...lds-wrapped-in-sc-rs-private-getter-alt.js | 115 +++++++++++++
 .../fields-wrapped-in-sc-rs-private-getter.js | 115 +++++++++++++
 ...lds-wrapped-in-sc-rs-private-method-alt.js | 114 +++++++++++++
 .../fields-wrapped-in-sc-rs-private-method.js | 114 +++++++++++++
 ...lds-wrapped-in-sc-rs-private-setter-alt.js | 114 +++++++++++++
 .../fields-wrapped-in-sc-rs-private-setter.js | 114 +++++++++++++
 204 files changed, 26204 insertions(+)
 create mode 100644 test/language/expressions/class/fields-after-same-line-gen-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-gen-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-gen-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-gen-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-gen-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-gen-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-method-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-method-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-method-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-method-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-method-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-method-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-gen-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-gen-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-gen-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-gen-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-gen-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-gen-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-method-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-method-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-method-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-method-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-method-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-after-same-line-static-method-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-multiple-definitions-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-multiple-definitions-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-multiple-definitions-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-multiple-definitions-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-multiple-definitions-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-multiple-definitions-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-new-no-sc-line-method-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-new-no-sc-line-method-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-new-no-sc-line-method-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-new-no-sc-line-method-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-new-no-sc-line-method-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-new-no-sc-line-method-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-gen-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-gen-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-gen-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-gen-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-gen-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-gen-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-method-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-method-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-method-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-method-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-method-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-new-sc-line-method-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-regular-definitions-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-regular-definitions-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-regular-definitions-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-regular-definitions-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-regular-definitions-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-regular-definitions-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-gen-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-gen-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-gen-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-gen-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-gen-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-gen-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-method-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-method-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-method-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-method-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-method-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-async-method-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-same-line-gen-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-gen-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-same-line-gen-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-gen-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-same-line-gen-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-gen-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-same-line-method-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-method-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-same-line-method-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-method-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-same-line-method-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-same-line-method-rs-private-setter.js
 create mode 100644 test/language/expressions/class/fields-wrapped-in-sc-rs-private-getter-alt.js
 create mode 100644 test/language/expressions/class/fields-wrapped-in-sc-rs-private-getter.js
 create mode 100644 test/language/expressions/class/fields-wrapped-in-sc-rs-private-method-alt.js
 create mode 100644 test/language/expressions/class/fields-wrapped-in-sc-rs-private-method.js
 create mode 100644 test/language/expressions/class/fields-wrapped-in-sc-rs-private-setter-alt.js
 create mode 100644 test/language/expressions/class/fields-wrapped-in-sc-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-gen-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-gen-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-gen-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-gen-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-after-same-line-gen-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-gen-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-method-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-method-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-method-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-method-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-after-same-line-method-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-method-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-method-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-method-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-method-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-method-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-method-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-async-method-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-gen-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-gen-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-gen-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-gen-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-gen-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-gen-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-method-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-method-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-method-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-method-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-method-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-after-same-line-static-method-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-multiple-definitions-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-multiple-definitions-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-multiple-definitions-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-multiple-definitions-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-multiple-definitions-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-multiple-definitions-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-multiple-stacked-definitions-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-multiple-stacked-definitions-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-multiple-stacked-definitions-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-multiple-stacked-definitions-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-multiple-stacked-definitions-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-multiple-stacked-definitions-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-new-no-sc-line-method-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-new-no-sc-line-method-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-new-no-sc-line-method-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-new-no-sc-line-method-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-new-no-sc-line-method-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-new-no-sc-line-method-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-gen-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-gen-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-gen-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-gen-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-gen-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-gen-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-method-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-method-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-method-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-method-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-method-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-new-sc-line-method-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-regular-definitions-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-regular-definitions-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-regular-definitions-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-regular-definitions-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-regular-definitions-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-regular-definitions-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-same-line-async-gen-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-async-gen-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-same-line-async-gen-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-async-gen-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-same-line-async-gen-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-async-gen-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-same-line-async-method-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-async-method-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-same-line-async-method-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-async-method-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-same-line-async-method-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-async-method-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-same-line-gen-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-gen-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-same-line-gen-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-gen-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-same-line-gen-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-gen-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-same-line-method-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-method-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-same-line-method-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-method-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-same-line-method-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-same-line-method-rs-private-setter.js
 create mode 100644 test/language/statements/class/fields-wrapped-in-sc-rs-private-getter-alt.js
 create mode 100644 test/language/statements/class/fields-wrapped-in-sc-rs-private-getter.js
 create mode 100644 test/language/statements/class/fields-wrapped-in-sc-rs-private-method-alt.js
 create mode 100644 test/language/statements/class/fields-wrapped-in-sc-rs-private-method.js
 create mode 100644 test/language/statements/class/fields-wrapped-in-sc-rs-private-setter-alt.js
 create mode 100644 test/language/statements/class/fields-wrapped-in-sc-rs-private-setter.js

diff --git a/test/language/expressions/class/fields-after-same-line-gen-rs-private-getter-alt.js b/test/language/expressions/class/fields-after-same-line-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..0846bdb5c6
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-gen-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-gen-rs-private-getter.js b/test/language/expressions/class/fields-after-same-line-gen-rs-private-getter.js
new file mode 100644
index 0000000000..47b1200ed7
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-gen-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-gen-rs-private-method-alt.js b/test/language/expressions/class/fields-after-same-line-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..8347b20c4b
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-gen-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-gen-rs-private-method.js b/test/language/expressions/class/fields-after-same-line-gen-rs-private-method.js
new file mode 100644
index 0000000000..0e32af45e4
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-gen-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-gen-rs-private-setter-alt.js b/test/language/expressions/class/fields-after-same-line-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..8fcb77823b
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-gen-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-gen-rs-private-setter.js b/test/language/expressions/class/fields-after-same-line-gen-rs-private-setter.js
new file mode 100644
index 0000000000..464368ceae
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-gen-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-method-rs-private-getter-alt.js b/test/language/expressions/class/fields-after-same-line-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..5d9d266bd7
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-method-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-method-rs-private-getter.js b/test/language/expressions/class/fields-after-same-line-method-rs-private-getter.js
new file mode 100644
index 0000000000..a1f3e84183
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-method-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-after-same-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-method-rs-private-method-alt.js b/test/language/expressions/class/fields-after-same-line-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..d58cd1cf23
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-method-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-method-rs-private-method.js b/test/language/expressions/class/fields-after-same-line-method-rs-private-method.js
new file mode 100644
index 0000000000..d5592fff50
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-method-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-after-same-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-method-rs-private-setter-alt.js b/test/language/expressions/class/fields-after-same-line-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..11974677fa
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-method-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-method-rs-private-setter.js b/test/language/expressions/class/fields-after-same-line-method-rs-private-setter.js
new file mode 100644
index 0000000000..4094da7f8a
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-method-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-after-same-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-getter-alt.js b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..15e9586070
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-getter-alt.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-getter.js b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-getter.js
new file mode 100644
index 0000000000..59d094014b
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-getter.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-method-alt.js b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..a1fc6596d9
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-method-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-method.js b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-method.js
new file mode 100644
index 0000000000..0e24eb6054
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-method.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-setter-alt.js b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..2beff91928
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-setter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-setter.js b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-setter.js
new file mode 100644
index 0000000000..006b883bc6
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-gen-rs-private-setter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-getter-alt.js b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..83c0c99a71
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-getter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-getter.js b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-getter.js
new file mode 100644
index 0000000000..a0d83b9d6f
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-getter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-method-alt.js b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..7ce270d2b3
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-method-alt.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-method.js b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-method.js
new file mode 100644
index 0000000000..888f6b77f7
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-method.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-setter-alt.js b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..6fa1f360ce
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-setter-alt.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-setter.js b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-setter.js
new file mode 100644
index 0000000000..eadeec5eda
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-async-method-rs-private-setter.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-getter-alt.js b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..7ef213e45d
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-getter.js b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-getter.js
new file mode 100644
index 0000000000..30e9788b7e
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-method-alt.js b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..bae9b9dd78
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-method.js b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-method.js
new file mode 100644
index 0000000000..cc93cd18c6
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-setter-alt.js b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..0744df631f
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-setter.js b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-setter.js
new file mode 100644
index 0000000000..3b8e2ebc13
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-gen-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-method-rs-private-getter-alt.js b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..134f927ac9
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-method-rs-private-getter.js b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-getter.js
new file mode 100644
index 0000000000..5625f6b2b8
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-method-rs-private-method-alt.js b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..3011e4e5ed
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-method-rs-private-method.js b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-method.js
new file mode 100644
index 0000000000..28bfe73b7d
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-method-rs-private-setter-alt.js b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..8b2ea2f81f
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-after-same-line-static-method-rs-private-setter.js b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-setter.js
new file mode 100644
index 0000000000..a68ead7096
--- /dev/null
+++ b/test/language/expressions/class/fields-after-same-line-static-method-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-definitions-rs-private-getter-alt.js b/test/language/expressions/class/fields-multiple-definitions-rs-private-getter-alt.js
new file mode 100644
index 0000000000..d5f4370340
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-definitions-rs-private-getter-alt.js
@@ -0,0 +1,160 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-multiple-definitions.template
+/*---
+description: Valid PrivateName as private getter (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-definitions-rs-private-getter.js b/test/language/expressions/class/fields-multiple-definitions-rs-private-getter.js
new file mode 100644
index 0000000000..2010c8f637
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-definitions-rs-private-getter.js
@@ -0,0 +1,160 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-multiple-definitions.template
+/*---
+description: Valid PrivateName as private getter (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-definitions-rs-private-method-alt.js b/test/language/expressions/class/fields-multiple-definitions-rs-private-method-alt.js
new file mode 100644
index 0000000000..2bc07d2afe
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-definitions-rs-private-method-alt.js
@@ -0,0 +1,159 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-multiple-definitions.template
+/*---
+description: Valid PrivateName as private method (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-definitions-rs-private-method.js b/test/language/expressions/class/fields-multiple-definitions-rs-private-method.js
new file mode 100644
index 0000000000..94a720e162
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-definitions-rs-private-method.js
@@ -0,0 +1,159 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-multiple-definitions.template
+/*---
+description: Valid PrivateName as private method (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-definitions-rs-private-setter-alt.js b/test/language/expressions/class/fields-multiple-definitions-rs-private-setter-alt.js
new file mode 100644
index 0000000000..a9cae825d5
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-definitions-rs-private-setter-alt.js
@@ -0,0 +1,159 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-multiple-definitions.template
+/*---
+description: Valid PrivateName as private setter (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-definitions-rs-private-setter.js b/test/language/expressions/class/fields-multiple-definitions-rs-private-setter.js
new file mode 100644
index 0000000000..087c5ae5eb
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-definitions-rs-private-setter.js
@@ -0,0 +1,159 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-multiple-definitions.template
+/*---
+description: Valid PrivateName as private setter (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-getter-alt.js b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-getter-alt.js
new file mode 100644
index 0000000000..5e5006847c
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-getter-alt.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private getter (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-getter.js b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-getter.js
new file mode 100644
index 0000000000..f34f0d638b
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-getter.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private getter (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-method-alt.js b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-method-alt.js
new file mode 100644
index 0000000000..94e053b8e2
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-method-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private method (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-method.js b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-method.js
new file mode 100644
index 0000000000..0938322d88
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-method.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private method (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-setter-alt.js b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-setter-alt.js
new file mode 100644
index 0000000000..89c936e121
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-setter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private setter (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-setter.js b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-setter.js
new file mode 100644
index 0000000000..2819687272
--- /dev/null
+++ b/test/language/expressions/class/fields-multiple-stacked-definitions-rs-private-setter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private setter (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-getter-alt.js b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..5f5ee6c001
--- /dev/null
+++ b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-getter-alt.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-getter.js b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-getter.js
new file mode 100644
index 0000000000..a7468b52bd
--- /dev/null
+++ b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-getter.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-method-alt.js b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..36c2b69c30
--- /dev/null
+++ b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-method-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-method.js b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-method.js
new file mode 100644
index 0000000000..17258d04f2
--- /dev/null
+++ b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-method.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-setter-alt.js b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..36e75cb189
--- /dev/null
+++ b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-setter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-setter.js b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-setter.js
new file mode 100644
index 0000000000..e2e1faea64
--- /dev/null
+++ b/test/language/expressions/class/fields-new-no-sc-line-method-rs-private-setter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-gen-rs-private-getter-alt.js b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..930e003816
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-getter-alt.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-gen-rs-private-getter.js b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-getter.js
new file mode 100644
index 0000000000..d9ca66bbc1
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-getter.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-gen-rs-private-method-alt.js b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..3cb147b83e
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-method-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-gen-rs-private-method.js b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-method.js
new file mode 100644
index 0000000000..ba3f2cc1fe
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-method.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-gen-rs-private-setter-alt.js b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..57d08c5838
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-setter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-gen-rs-private-setter.js b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-setter.js
new file mode 100644
index 0000000000..43bcafef96
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-gen-rs-private-setter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-method-rs-private-getter-alt.js b/test/language/expressions/class/fields-new-sc-line-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..9cf149fa92
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-method-rs-private-getter-alt.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-method-rs-private-getter.js b/test/language/expressions/class/fields-new-sc-line-method-rs-private-getter.js
new file mode 100644
index 0000000000..18eb997b34
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-method-rs-private-getter.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-method-rs-private-method-alt.js b/test/language/expressions/class/fields-new-sc-line-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..d8cfbe7358
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-method-rs-private-method-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-method-rs-private-method.js b/test/language/expressions/class/fields-new-sc-line-method-rs-private-method.js
new file mode 100644
index 0000000000..d75edbee0f
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-method-rs-private-method.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-method-rs-private-setter-alt.js b/test/language/expressions/class/fields-new-sc-line-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..7e1e57f8cd
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-method-rs-private-setter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-new-sc-line-method-rs-private-setter.js b/test/language/expressions/class/fields-new-sc-line-method-rs-private-setter.js
new file mode 100644
index 0000000000..ac0a83881e
--- /dev/null
+++ b/test/language/expressions/class/fields-new-sc-line-method-rs-private-setter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-regular-definitions-rs-private-getter-alt.js b/test/language/expressions/class/fields-regular-definitions-rs-private-getter-alt.js
new file mode 100644
index 0000000000..74fca1d8c6
--- /dev/null
+++ b/test/language/expressions/class/fields-regular-definitions-rs-private-getter-alt.js
@@ -0,0 +1,113 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-regular-definitions.template
+/*---
+description: Valid PrivateName as private getter (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-regular-definitions-rs-private-getter.js b/test/language/expressions/class/fields-regular-definitions-rs-private-getter.js
new file mode 100644
index 0000000000..00be66f642
--- /dev/null
+++ b/test/language/expressions/class/fields-regular-definitions-rs-private-getter.js
@@ -0,0 +1,113 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-regular-definitions.template
+/*---
+description: Valid PrivateName as private getter (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-regular-definitions-rs-private-method-alt.js b/test/language/expressions/class/fields-regular-definitions-rs-private-method-alt.js
new file mode 100644
index 0000000000..f501aa8eec
--- /dev/null
+++ b/test/language/expressions/class/fields-regular-definitions-rs-private-method-alt.js
@@ -0,0 +1,112 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-regular-definitions.template
+/*---
+description: Valid PrivateName as private method (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-regular-definitions-rs-private-method.js b/test/language/expressions/class/fields-regular-definitions-rs-private-method.js
new file mode 100644
index 0000000000..09c6846e18
--- /dev/null
+++ b/test/language/expressions/class/fields-regular-definitions-rs-private-method.js
@@ -0,0 +1,112 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-regular-definitions.template
+/*---
+description: Valid PrivateName as private method (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-regular-definitions-rs-private-setter-alt.js b/test/language/expressions/class/fields-regular-definitions-rs-private-setter-alt.js
new file mode 100644
index 0000000000..e80cf18fa1
--- /dev/null
+++ b/test/language/expressions/class/fields-regular-definitions-rs-private-setter-alt.js
@@ -0,0 +1,112 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-regular-definitions.template
+/*---
+description: Valid PrivateName as private setter (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-regular-definitions-rs-private-setter.js b/test/language/expressions/class/fields-regular-definitions-rs-private-setter.js
new file mode 100644
index 0000000000..543638ef46
--- /dev/null
+++ b/test/language/expressions/class/fields-regular-definitions-rs-private-setter.js
@@ -0,0 +1,112 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-regular-definitions.template
+/*---
+description: Valid PrivateName as private setter (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-async-gen-rs-private-getter-alt.js b/test/language/expressions/class/fields-same-line-async-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..c05828bafe
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-gen-rs-private-getter-alt.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-gen-rs-private-getter.js b/test/language/expressions/class/fields-same-line-async-gen-rs-private-getter.js
new file mode 100644
index 0000000000..c2a37e211f
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-gen-rs-private-getter.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-gen-rs-private-method-alt.js b/test/language/expressions/class/fields-same-line-async-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..791743177c
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-gen-rs-private-method-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-gen-rs-private-method.js b/test/language/expressions/class/fields-same-line-async-gen-rs-private-method.js
new file mode 100644
index 0000000000..f1ab8b04ca
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-gen-rs-private-method.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-gen-rs-private-setter-alt.js b/test/language/expressions/class/fields-same-line-async-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..48e082f7e3
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-gen-rs-private-setter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-gen-rs-private-setter.js b/test/language/expressions/class/fields-same-line-async-gen-rs-private-setter.js
new file mode 100644
index 0000000000..4a10cba9e7
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-gen-rs-private-setter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-method-rs-private-getter-alt.js b/test/language/expressions/class/fields-same-line-async-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..5237e5a0a6
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-method-rs-private-getter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-method-rs-private-getter.js b/test/language/expressions/class/fields-same-line-async-method-rs-private-getter.js
new file mode 100644
index 0000000000..0f9886f7f4
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-method-rs-private-getter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-method-rs-private-method-alt.js b/test/language/expressions/class/fields-same-line-async-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..9c7fcddbec
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-method-rs-private-method-alt.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-method-rs-private-method.js b/test/language/expressions/class/fields-same-line-async-method-rs-private-method.js
new file mode 100644
index 0000000000..b3d14fec4a
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-method-rs-private-method.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-method-rs-private-setter-alt.js b/test/language/expressions/class/fields-same-line-async-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..bd985fb5d7
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-method-rs-private-setter-alt.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-async-method-rs-private-setter.js b/test/language/expressions/class/fields-same-line-async-method-rs-private-setter.js
new file mode 100644
index 0000000000..5e627015dd
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-async-method-rs-private-setter.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/expressions/class/fields-same-line-gen-rs-private-getter-alt.js b/test/language/expressions/class/fields-same-line-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..24c4512713
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-gen-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-same-line-generator.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-gen-rs-private-getter.js b/test/language/expressions/class/fields-same-line-gen-rs-private-getter.js
new file mode 100644
index 0000000000..b95d0ce7ae
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-gen-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-same-line-generator.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-gen-rs-private-method-alt.js b/test/language/expressions/class/fields-same-line-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..09d63692e7
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-gen-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-same-line-generator.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-gen-rs-private-method.js b/test/language/expressions/class/fields-same-line-gen-rs-private-method.js
new file mode 100644
index 0000000000..95cf2f7118
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-gen-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-same-line-generator.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-gen-rs-private-setter-alt.js b/test/language/expressions/class/fields-same-line-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..df30d90644
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-gen-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-same-line-generator.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-gen-rs-private-setter.js b/test/language/expressions/class/fields-same-line-gen-rs-private-setter.js
new file mode 100644
index 0000000000..707e73f9e8
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-gen-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-same-line-generator.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-method-rs-private-getter-alt.js b/test/language/expressions/class/fields-same-line-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..0709d7c3bc
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-method-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-same-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-method-rs-private-getter.js b/test/language/expressions/class/fields-same-line-method-rs-private-getter.js
new file mode 100644
index 0000000000..30e69a1667
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-method-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-same-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-method-rs-private-method-alt.js b/test/language/expressions/class/fields-same-line-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..d80370febf
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-method-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-same-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-method-rs-private-method.js b/test/language/expressions/class/fields-same-line-method-rs-private-method.js
new file mode 100644
index 0000000000..27f1e03e34
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-method-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-same-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-method-rs-private-setter-alt.js b/test/language/expressions/class/fields-same-line-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..83b8cc8d0b
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-method-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-same-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-same-line-method-rs-private-setter.js b/test/language/expressions/class/fields-same-line-method-rs-private-setter.js
new file mode 100644
index 0000000000..43c3a88f78
--- /dev/null
+++ b/test/language/expressions/class/fields-same-line-method-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-same-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-wrapped-in-sc-rs-private-getter-alt.js b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-getter-alt.js
new file mode 100644
index 0000000000..943dee7486
--- /dev/null
+++ b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-getter-alt.js
@@ -0,0 +1,115 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-expr-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private getter (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-wrapped-in-sc-rs-private-getter.js b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-getter.js
new file mode 100644
index 0000000000..91b135d6e9
--- /dev/null
+++ b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-getter.js
@@ -0,0 +1,115 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-expr-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private getter (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-wrapped-in-sc-rs-private-method-alt.js b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-method-alt.js
new file mode 100644
index 0000000000..cbd4d82a29
--- /dev/null
+++ b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-method-alt.js
@@ -0,0 +1,114 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-expr-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private method (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-wrapped-in-sc-rs-private-method.js b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-method.js
new file mode 100644
index 0000000000..6e28689dc2
--- /dev/null
+++ b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-method.js
@@ -0,0 +1,114 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-expr-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private method (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/expressions/class/fields-wrapped-in-sc-rs-private-setter-alt.js b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-setter-alt.js
new file mode 100644
index 0000000000..323f696333
--- /dev/null
+++ b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-setter-alt.js
@@ -0,0 +1,114 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-expr-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private setter (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/expressions/class/fields-wrapped-in-sc-rs-private-setter.js b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-setter.js
new file mode 100644
index 0000000000..fbb7650440
--- /dev/null
+++ b/test/language/expressions/class/fields-wrapped-in-sc-rs-private-setter.js
@@ -0,0 +1,114 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-expr-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private setter (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+var C = class {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-gen-rs-private-getter-alt.js b/test/language/statements/class/fields-after-same-line-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..e5dc54a22a
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-gen-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-gen-rs-private-getter.js b/test/language/statements/class/fields-after-same-line-gen-rs-private-getter.js
new file mode 100644
index 0000000000..c924141568
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-gen-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-gen-rs-private-method-alt.js b/test/language/statements/class/fields-after-same-line-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..05b6d74c39
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-gen-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-gen-rs-private-method.js b/test/language/statements/class/fields-after-same-line-gen-rs-private-method.js
new file mode 100644
index 0000000000..569cf8f240
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-gen-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-gen-rs-private-setter-alt.js b/test/language/statements/class/fields-after-same-line-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..a96aef8bf0
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-gen-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-gen-rs-private-setter.js b/test/language/statements/class/fields-after-same-line-gen-rs-private-setter.js
new file mode 100644
index 0000000000..2e01f8de02
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-gen-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-after-same-line-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-method-rs-private-getter-alt.js b/test/language/statements/class/fields-after-same-line-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..ccaaecaa4a
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-method-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-method-rs-private-getter.js b/test/language/statements/class/fields-after-same-line-method-rs-private-getter.js
new file mode 100644
index 0000000000..8944f129ad
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-method-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-after-same-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-method-rs-private-method-alt.js b/test/language/statements/class/fields-after-same-line-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..3a5f94b4e5
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-method-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-method-rs-private-method.js b/test/language/statements/class/fields-after-same-line-method-rs-private-method.js
new file mode 100644
index 0000000000..d209c4647b
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-method-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-after-same-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-method-rs-private-setter-alt.js b/test/language/statements/class/fields-after-same-line-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..931ce95e0f
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-method-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-method-rs-private-setter.js b/test/language/statements/class/fields-after-same-line-method-rs-private-setter.js
new file mode 100644
index 0000000000..473da4c8ae
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-method-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-after-same-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-getter-alt.js b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..f1c13718e3
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-getter-alt.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-getter.js b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-getter.js
new file mode 100644
index 0000000000..b7e69c7ef5
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-getter.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-method-alt.js b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..c585e6f6e0
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-method-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-method.js b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-method.js
new file mode 100644
index 0000000000..88ad9123bc
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-method.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-setter-alt.js b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..f52454d55a
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-setter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-setter.js b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-setter.js
new file mode 100644
index 0000000000..0e060f7660
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-gen-rs-private-setter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-getter-alt.js b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..6d92345a98
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-getter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-getter.js b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-getter.js
new file mode 100644
index 0000000000..4162d28d15
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-getter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-method-alt.js b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..dada482f3b
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-method-alt.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-method.js b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-method.js
new file mode 100644
index 0000000000..2bc70ee5b6
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-method.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-setter-alt.js b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..e532e1bf30
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-setter-alt.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-setter.js b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-setter.js
new file mode 100644
index 0000000000..26358f2468
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-async-method-rs-private-setter.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-async-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+C.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-after-same-line-static-gen-rs-private-getter-alt.js b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..2d01586943
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-gen-rs-private-getter.js b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-getter.js
new file mode 100644
index 0000000000..e2237608a7
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-gen-rs-private-method-alt.js b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..8891365051
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-gen-rs-private-method.js b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-method.js
new file mode 100644
index 0000000000..3ca4ea00ad
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-gen-rs-private-setter-alt.js b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..bc2c6ed2df
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-gen-rs-private-setter.js b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-setter.js
new file mode 100644
index 0000000000..671bf3bc1e
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-gen-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, generators, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m().next().value, 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-method-rs-private-getter-alt.js b/test/language/statements/class/fields-after-same-line-static-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..8f196f58c1
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-method-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-method-rs-private-getter.js b/test/language/statements/class/fields-after-same-line-static-method-rs-private-getter.js
new file mode 100644
index 0000000000..2d3b3de621
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-method-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-method-rs-private-method-alt.js b/test/language/statements/class/fields-after-same-line-static-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..fc5115482c
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-method-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-method-rs-private-method.js b/test/language/statements/class/fields-after-same-line-static-method-rs-private-method.js
new file mode 100644
index 0000000000..6382c16bca
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-method-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-method-rs-private-setter-alt.js b/test/language/statements/class/fields-after-same-line-static-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..936857598e
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-method-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-after-same-line-static-method-rs-private-setter.js b/test/language/statements/class/fields-after-same-line-static-method-rs-private-setter.js
new file mode 100644
index 0000000000..9811957762
--- /dev/null
+++ b/test/language/statements/class/fields-after-same-line-static-method-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-after-same-line-static-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after a static method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  static m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(C.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "m"), false);
+
+verifyProperty(C, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-definitions-rs-private-getter-alt.js b/test/language/statements/class/fields-multiple-definitions-rs-private-getter-alt.js
new file mode 100644
index 0000000000..0391fd8219
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-definitions-rs-private-getter-alt.js
@@ -0,0 +1,160 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-multiple-definitions.template
+/*---
+description: Valid PrivateName as private getter (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-definitions-rs-private-getter.js b/test/language/statements/class/fields-multiple-definitions-rs-private-getter.js
new file mode 100644
index 0000000000..799837a036
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-definitions-rs-private-getter.js
@@ -0,0 +1,160 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-multiple-definitions.template
+/*---
+description: Valid PrivateName as private getter (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-definitions-rs-private-method-alt.js b/test/language/statements/class/fields-multiple-definitions-rs-private-method-alt.js
new file mode 100644
index 0000000000..9c21a93a8f
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-definitions-rs-private-method-alt.js
@@ -0,0 +1,159 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-multiple-definitions.template
+/*---
+description: Valid PrivateName as private method (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-definitions-rs-private-method.js b/test/language/statements/class/fields-multiple-definitions-rs-private-method.js
new file mode 100644
index 0000000000..75930e440e
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-definitions-rs-private-method.js
@@ -0,0 +1,159 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-multiple-definitions.template
+/*---
+description: Valid PrivateName as private method (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-definitions-rs-private-setter-alt.js b/test/language/statements/class/fields-multiple-definitions-rs-private-setter-alt.js
new file mode 100644
index 0000000000..1c5b707ce7
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-definitions-rs-private-setter-alt.js
@@ -0,0 +1,159 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-multiple-definitions.template
+/*---
+description: Valid PrivateName as private setter (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-definitions-rs-private-setter.js b/test/language/statements/class/fields-multiple-definitions-rs-private-setter.js
new file mode 100644
index 0000000000..4606e23e8f
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-definitions-rs-private-setter.js
@@ -0,0 +1,159 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-multiple-definitions.template
+/*---
+description: Valid PrivateName as private setter (multiple fields definitions)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  foo = "foobar";
+  m() { return 42 }
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+
+  m2() { return 39 }
+  bar = "barbaz";
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.m2(), 39);
+assert.sameValue(Object.hasOwnProperty.call(c, "m2"), false);
+assert.sameValue(c.m2, C.prototype.m2);
+
+verifyProperty(C.prototype, "m2", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-getter-alt.js b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-getter-alt.js
new file mode 100644
index 0000000000..29c7d614b9
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-getter-alt.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private getter (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-getter.js b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-getter.js
new file mode 100644
index 0000000000..b898840682
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-getter.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private getter (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-method-alt.js b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-method-alt.js
new file mode 100644
index 0000000000..d16da2fc15
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-method-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private method (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-method.js b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-method.js
new file mode 100644
index 0000000000..4755e14f7b
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-method.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private method (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-setter-alt.js b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-setter-alt.js
new file mode 100644
index 0000000000..6c7f52f272
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-setter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private setter (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-setter.js b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-setter.js
new file mode 100644
index 0000000000..08b3996599
--- /dev/null
+++ b/test/language/statements/class/fields-multiple-stacked-definitions-rs-private-setter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-multiple-stacked-definitions.template
+/*---
+description: Valid PrivateName as private setter (multiple stacked fields definitions through ASI)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+
+  foo = "foobar"
+  bar = "barbaz";
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.foo, "foobar");
+assert.sameValue(Object.hasOwnProperty.call(C, "foo"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "foo"), false);
+
+verifyProperty(c, "foo", {
+  value: "foobar",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.bar, "barbaz");
+assert.sameValue(Object.hasOwnProperty.call(C, "bar"), false);
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "bar"), false);
+
+verifyProperty(c, "bar", {
+  value: "barbaz",
+  enumerable: true,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-new-no-sc-line-method-rs-private-getter-alt.js b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..dc53142abf
--- /dev/null
+++ b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-getter-alt.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-new-no-sc-line-method-rs-private-getter.js b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-getter.js
new file mode 100644
index 0000000000..5da9a639ab
--- /dev/null
+++ b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-getter.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-new-no-sc-line-method-rs-private-method-alt.js b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..cc543e44b1
--- /dev/null
+++ b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-method-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-new-no-sc-line-method-rs-private-method.js b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-method.js
new file mode 100644
index 0000000000..9a72325cdc
--- /dev/null
+++ b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-method.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-new-no-sc-line-method-rs-private-setter-alt.js b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..bf91cda00c
--- /dev/null
+++ b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-setter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-new-no-sc-line-method-rs-private-setter.js b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-setter.js
new file mode 100644
index 0000000000..1ea793821d
--- /dev/null
+++ b/test/language/statements/class/fields-new-no-sc-line-method-rs-private-setter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-new-no-sc-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line without a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+
+  m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-gen-rs-private-getter-alt.js b/test/language/statements/class/fields-new-sc-line-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..671723a7a9
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-gen-rs-private-getter-alt.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-gen-rs-private-getter.js b/test/language/statements/class/fields-new-sc-line-gen-rs-private-getter.js
new file mode 100644
index 0000000000..e9ac2d0040
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-gen-rs-private-getter.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-gen-rs-private-method-alt.js b/test/language/statements/class/fields-new-sc-line-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..3d0394f205
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-gen-rs-private-method-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-gen-rs-private-method.js b/test/language/statements/class/fields-new-sc-line-gen-rs-private-method.js
new file mode 100644
index 0000000000..20b556e515
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-gen-rs-private-method.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-gen-rs-private-setter-alt.js b/test/language/statements/class/fields-new-sc-line-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..fb8b633d99
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-gen-rs-private-setter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-gen-rs-private-setter.js b/test/language/statements/class/fields-new-sc-line-gen-rs-private-setter.js
new file mode 100644
index 0000000000..7ebdf02667
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-gen-rs-private-setter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-new-sc-line-generator.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  *m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-method-rs-private-getter-alt.js b/test/language/statements/class/fields-new-sc-line-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..961ad4c1f8
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-method-rs-private-getter-alt.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-method-rs-private-getter.js b/test/language/statements/class/fields-new-sc-line-method-rs-private-getter.js
new file mode 100644
index 0000000000..e1649e24f9
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-method-rs-private-getter.js
@@ -0,0 +1,125 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-method-rs-private-method-alt.js b/test/language/statements/class/fields-new-sc-line-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..6aaa3fc3bf
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-method-rs-private-method-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-method-rs-private-method.js b/test/language/statements/class/fields-new-sc-line-method-rs-private-method.js
new file mode 100644
index 0000000000..17d30afd1e
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-method-rs-private-method.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-method-rs-private-setter-alt.js b/test/language/statements/class/fields-new-sc-line-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..f25e931123
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-method-rs-private-setter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-new-sc-line-method-rs-private-setter.js b/test/language/statements/class/fields-new-sc-line-method-rs-private-setter.js
new file mode 100644
index 0000000000..7f20bca02d
--- /dev/null
+++ b/test/language/statements/class/fields-new-sc-line-method-rs-private-setter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-new-sc-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in a new line with a semicolon)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-regular-definitions-rs-private-getter-alt.js b/test/language/statements/class/fields-regular-definitions-rs-private-getter-alt.js
new file mode 100644
index 0000000000..eba669744c
--- /dev/null
+++ b/test/language/statements/class/fields-regular-definitions-rs-private-getter-alt.js
@@ -0,0 +1,113 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-regular-definitions.template
+/*---
+description: Valid PrivateName as private getter (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-regular-definitions-rs-private-getter.js b/test/language/statements/class/fields-regular-definitions-rs-private-getter.js
new file mode 100644
index 0000000000..8c14b434ef
--- /dev/null
+++ b/test/language/statements/class/fields-regular-definitions-rs-private-getter.js
@@ -0,0 +1,113 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-regular-definitions.template
+/*---
+description: Valid PrivateName as private getter (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-regular-definitions-rs-private-method-alt.js b/test/language/statements/class/fields-regular-definitions-rs-private-method-alt.js
new file mode 100644
index 0000000000..e7f999a06b
--- /dev/null
+++ b/test/language/statements/class/fields-regular-definitions-rs-private-method-alt.js
@@ -0,0 +1,112 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-regular-definitions.template
+/*---
+description: Valid PrivateName as private method (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-regular-definitions-rs-private-method.js b/test/language/statements/class/fields-regular-definitions-rs-private-method.js
new file mode 100644
index 0000000000..dede9c4aee
--- /dev/null
+++ b/test/language/statements/class/fields-regular-definitions-rs-private-method.js
@@ -0,0 +1,112 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-regular-definitions.template
+/*---
+description: Valid PrivateName as private method (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-regular-definitions-rs-private-setter-alt.js b/test/language/statements/class/fields-regular-definitions-rs-private-setter-alt.js
new file mode 100644
index 0000000000..1aa395b07e
--- /dev/null
+++ b/test/language/statements/class/fields-regular-definitions-rs-private-setter-alt.js
@@ -0,0 +1,112 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-regular-definitions.template
+/*---
+description: Valid PrivateName as private setter (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-regular-definitions-rs-private-setter.js b/test/language/statements/class/fields-regular-definitions-rs-private-setter.js
new file mode 100644
index 0000000000..017122f081
--- /dev/null
+++ b/test/language/statements/class/fields-regular-definitions-rs-private-setter.js
@@ -0,0 +1,112 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-regular-definitions.template
+/*---
+description: Valid PrivateName as private setter (regular fields defintion)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-async-gen-rs-private-getter-alt.js b/test/language/statements/class/fields-same-line-async-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..f87b8f1611
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-gen-rs-private-getter-alt.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-gen-rs-private-getter.js b/test/language/statements/class/fields-same-line-async-gen-rs-private-getter.js
new file mode 100644
index 0000000000..4db4fbf662
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-gen-rs-private-getter.js
@@ -0,0 +1,138 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private getter (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-gen-rs-private-method-alt.js b/test/language/statements/class/fields-same-line-async-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..3c3a9604b9
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-gen-rs-private-method-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-gen-rs-private-method.js b/test/language/statements/class/fields-same-line-async-gen-rs-private-method.js
new file mode 100644
index 0000000000..cde75ab824
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-gen-rs-private-method.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private method (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-gen-rs-private-setter-alt.js b/test/language/statements/class/fields-same-line-async-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..b955fd192d
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-gen-rs-private-setter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-gen-rs-private-setter.js b/test/language/statements/class/fields-same-line-async-gen-rs-private-setter.js
new file mode 100644
index 0000000000..db94b038da
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-gen-rs-private-setter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-gen.template
+/*---
+description: Valid PrivateName as private setter (field definitions after an async generator in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-iteration]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async *m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().next().then(function(v) {
+  assert.sameValue(v.value, 42);
+  assert.sameValue(v.done, true);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-method-rs-private-getter-alt.js b/test/language/statements/class/fields-same-line-async-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..ab51b4c016
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-method-rs-private-getter-alt.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-method-rs-private-getter.js b/test/language/statements/class/fields-same-line-async-method-rs-private-getter.js
new file mode 100644
index 0000000000..60259c549f
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-method-rs-private-getter.js
@@ -0,0 +1,137 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-method-rs-private-method-alt.js b/test/language/statements/class/fields-same-line-async-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..ee720d3ffb
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-method-rs-private-method-alt.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-method-rs-private-method.js b/test/language/statements/class/fields-same-line-async-method-rs-private-method.js
new file mode 100644
index 0000000000..96f9567aa8
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-method-rs-private-method.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private method (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-method-rs-private-setter-alt.js b/test/language/statements/class/fields-same-line-async-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..1f0b4210af
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-method-rs-private-setter-alt.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.℘(1), 1);
+    assert.sameValue(c.ZW_‌_NJ(1), 1);
+    assert.sameValue(c.ZW_‍_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-async-method-rs-private-setter.js b/test/language/statements/class/fields-same-line-async-method-rs-private-setter.js
new file mode 100644
index 0000000000..e71d120264
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-async-method-rs-private-setter.js
@@ -0,0 +1,136 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-after-same-line-async-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions after an async method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, async-functions]
+flags: [generated, async]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  async m() { return 42; } #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+assert.sameValue(c.m, C.prototype.m);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+}, {restore: true});
+
+c.m().then(function(v) {
+  assert.sameValue(v, 42);
+
+  function assertions() {
+    // Cover $DONE handler for async cases.
+    function $DONE(error) {
+      if (error) {
+        throw new Test262Error('Test262:AsyncTestFailure')
+      }
+    }
+    assert.sameValue(c.$(1), 1);
+    assert.sameValue(c._(1), 1);
+    assert.sameValue(c.\u{6F}(1), 1);
+    assert.sameValue(c.\u2118(1), 1);
+    assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+    assert.sameValue(c.ZW_\u200D_J(1), 1);
+  }
+
+  return Promise.resolve(assertions());
+}, $DONE).then($DONE, $DONE);
diff --git a/test/language/statements/class/fields-same-line-gen-rs-private-getter-alt.js b/test/language/statements/class/fields-same-line-gen-rs-private-getter-alt.js
new file mode 100644
index 0000000000..ff7a4da7cc
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-gen-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-same-line-generator.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-gen-rs-private-getter.js b/test/language/statements/class/fields-same-line-gen-rs-private-getter.js
new file mode 100644
index 0000000000..7ece9717cf
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-gen-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-same-line-generator.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-gen-rs-private-method-alt.js b/test/language/statements/class/fields-same-line-gen-rs-private-method-alt.js
new file mode 100644
index 0000000000..498a91ee2e
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-gen-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-same-line-generator.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-gen-rs-private-method.js b/test/language/statements/class/fields-same-line-gen-rs-private-method.js
new file mode 100644
index 0000000000..dc606a98f5
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-gen-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-same-line-generator.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-gen-rs-private-setter-alt.js b/test/language/statements/class/fields-same-line-gen-rs-private-setter-alt.js
new file mode 100644
index 0000000000..40befb4a95
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-gen-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-same-line-generator.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-gen-rs-private-setter.js b/test/language/statements/class/fields-same-line-gen-rs-private-setter.js
new file mode 100644
index 0000000000..8f6053fdcb
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-gen-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-same-line-generator.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a generator method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public, generators]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+; *m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m().next().value, 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-method-rs-private-getter-alt.js b/test/language/statements/class/fields-same-line-method-rs-private-getter-alt.js
new file mode 100644
index 0000000000..f62b3af233
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-method-rs-private-getter-alt.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-same-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-method-rs-private-getter.js b/test/language/statements/class/fields-same-line-method-rs-private-getter.js
new file mode 100644
index 0000000000..554c1c6690
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-method-rs-private-getter.js
@@ -0,0 +1,124 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-same-line-method.template
+/*---
+description: Valid PrivateName as private getter (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-method-rs-private-method-alt.js b/test/language/statements/class/fields-same-line-method-rs-private-method-alt.js
new file mode 100644
index 0000000000..593d89c2be
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-method-rs-private-method-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-same-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-method-rs-private-method.js b/test/language/statements/class/fields-same-line-method-rs-private-method.js
new file mode 100644
index 0000000000..ca69c3ef33
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-method-rs-private-method.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-same-line-method.template
+/*---
+description: Valid PrivateName as private method (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-method-rs-private-setter-alt.js b/test/language/statements/class/fields-same-line-method-rs-private-setter-alt.js
new file mode 100644
index 0000000000..4a310a8d7a
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-method-rs-private-setter-alt.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-same-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-same-line-method-rs-private-setter.js b/test/language/statements/class/fields-same-line-method-rs-private-setter.js
new file mode 100644
index 0000000000..6e1dd73f13
--- /dev/null
+++ b/test/language/statements/class/fields-same-line-method-rs-private-setter.js
@@ -0,0 +1,123 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-same-line-method.template
+/*---
+description: Valid PrivateName as private setter (field definitions followed by a method in the same line)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+includes: [propertyHelper.js]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  #$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+; m() { return 42; }
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.m(), 42);
+assert.sameValue(c.m, C.prototype.m);
+assert.sameValue(Object.hasOwnProperty.call(c, "m"), false);
+
+verifyProperty(C.prototype, "m", {
+  enumerable: false,
+  configurable: true,
+  writable: true,
+});
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-wrapped-in-sc-rs-private-getter-alt.js b/test/language/statements/class/fields-wrapped-in-sc-rs-private-getter-alt.js
new file mode 100644
index 0000000000..48ca7a2d2f
--- /dev/null
+++ b/test/language/statements/class/fields-wrapped-in-sc-rs-private-getter-alt.js
@@ -0,0 +1,115 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter-alt.case
+// - src/class-elements/productions/cls-decl-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private getter (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #℘() {
+    return this.#℘_;
+  }
+  get #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  get #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-wrapped-in-sc-rs-private-getter.js b/test/language/statements/class/fields-wrapped-in-sc-rs-private-getter.js
new file mode 100644
index 0000000000..ba1be89c95
--- /dev/null
+++ b/test/language/statements/class/fields-wrapped-in-sc-rs-private-getter.js
@@ -0,0 +1,115 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-getter.case
+// - src/class-elements/productions/cls-decl-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private getter (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      get ClassElementName ( ){ FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  get #$() {
+    return this.#$_;
+  }
+  get #_() {
+    return this.#__;
+  }
+  get #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  get #\u2118() {
+    return this.#\u2118_;
+  }
+  get #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  get #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$_ = value;
+    return this.#$;
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_;
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F};
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-wrapped-in-sc-rs-private-method-alt.js b/test/language/statements/class/fields-wrapped-in-sc-rs-private-method-alt.js
new file mode 100644
index 0000000000..8c7a4ad9c8
--- /dev/null
+++ b/test/language/statements/class/fields-wrapped-in-sc-rs-private-method-alt.js
@@ -0,0 +1,114 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method-alt.case
+// - src/class-elements/productions/cls-decl-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private method (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #℘() {
+    return this.#℘_;
+  }
+  #ZW_‌_NJ() {
+    return this.#ZW_‌_NJ_;
+  }
+  #ZW_‍_J() {
+    return this.#ZW_‍_J_;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  ℘(value) {
+    this.#℘_ = value;
+    return this.#℘();
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+    return this.#ZW_‌_NJ();
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+    return this.#ZW_‍_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-wrapped-in-sc-rs-private-method.js b/test/language/statements/class/fields-wrapped-in-sc-rs-private-method.js
new file mode 100644
index 0000000000..193487fd20
--- /dev/null
+++ b/test/language/statements/class/fields-wrapped-in-sc-rs-private-method.js
@@ -0,0 +1,114 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-method.case
+// - src/class-elements/productions/cls-decl-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private method (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ClassElementName ( UniqueFormalParameters ) { FunctionBody }
+      ...
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  #$() {
+    return this.#$_;
+  }
+  #_() {
+    return this.#__;
+  }
+  #\u{6F}() {
+    return this.#\u{6F}_;
+  }
+  #\u2118() {
+    return this.#\u2118_;
+  }
+  #ZW_\u200C_NJ() {
+    return this.#ZW_\u200C_NJ_;
+  }
+  #ZW_\u200D_J() {
+    return this.#ZW_\u200D_J_;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$_ = value;
+    return this.#$();
+  }
+  _(value) {
+    this.#__ = value;
+    return this.#_();
+  }
+  \u{6F}(value) {
+    this.#\u{6F}_ = value;
+    return this.#\u{6F}();
+  }
+  \u2118(value) {
+    this.#\u2118_ = value;
+    return this.#\u2118();
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+    return this.#ZW_\u200C_NJ();
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+    return this.#ZW_\u200D_J();
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
diff --git a/test/language/statements/class/fields-wrapped-in-sc-rs-private-setter-alt.js b/test/language/statements/class/fields-wrapped-in-sc-rs-private-setter-alt.js
new file mode 100644
index 0000000000..6298543d7d
--- /dev/null
+++ b/test/language/statements/class/fields-wrapped-in-sc-rs-private-setter-alt.js
@@ -0,0 +1,114 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter-alt.case
+// - src/class-elements/productions/cls-decl-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private setter (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #℘_; #ZW_‌_NJ_; #ZW_‍_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #℘(value) {
+    this.#℘_ = value;
+  }
+  set #ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ_ = value;
+  }
+  set #ZW_‍_J(value) {
+    this.#ZW_‍_J_ = value;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  ℘(value) {
+    this.#℘ = value;
+    return this.#℘_;
+  }
+  ZW_‌_NJ(value) {
+    this.#ZW_‌_NJ = value;
+    return this.#ZW_‌_NJ_;
+  }
+  ZW_‍_J(value) {
+    this.#ZW_‍_J = value;
+    return this.#ZW_‍_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.℘(1), 1);
+assert.sameValue(c.ZW_‌_NJ(1), 1);
+assert.sameValue(c.ZW_‍_J(1), 1);
diff --git a/test/language/statements/class/fields-wrapped-in-sc-rs-private-setter.js b/test/language/statements/class/fields-wrapped-in-sc-rs-private-setter.js
new file mode 100644
index 0000000000..8005465952
--- /dev/null
+++ b/test/language/statements/class/fields-wrapped-in-sc-rs-private-setter.js
@@ -0,0 +1,114 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/rs-private-setter.case
+// - src/class-elements/productions/cls-decl-wrapped-in-sc.template
+/*---
+description: Valid PrivateName as private setter (fields definition wrapped in semicolons)
+esid: prod-FieldDefinition
+features: [class-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    
+    ClassElement :
+      MethodDefinition
+      ...
+      ;
+
+    MethodDefinition :
+      ...
+      set ClassElementName ( PropertySetParameterList ) { FunctionBody }
+
+    ClassElementName :
+      PropertyName
+      PrivateName
+
+    PrivateName ::
+      # IdentifierName
+
+    IdentifierName ::
+      IdentifierStart
+      IdentifierName IdentifierPart
+
+    IdentifierStart ::
+      UnicodeIDStart
+      $
+      _
+      \ UnicodeEscapeSequence
+
+    IdentifierPart::
+      UnicodeIDContinue
+      $
+      \ UnicodeEscapeSequence
+      <ZWNJ> <ZWJ>
+
+    UnicodeIDStart::
+      any Unicode code point with the Unicode property "ID_Start"
+
+    UnicodeIDContinue::
+      any Unicode code point with the Unicode property "ID_Continue"
+
+    NOTE 3
+    The sets of code points with Unicode properties "ID_Start" and
+    "ID_Continue" include, respectively, the code points with Unicode
+    properties "Other_ID_Start" and "Other_ID_Continue".
+
+---*/
+
+
+class C {
+  ;;;;
+  ;;;;;;#$_; #__; #\u{6F}_; #\u2118_; #ZW_\u200C_NJ_; #ZW_\u200D_J_;
+  set #$(value) {
+    this.#$_ = value;
+  }
+  set #_(value) {
+    this.#__ = value;
+  }
+  set #\u{6F}(value) {
+    this.#\u{6F}_ = value;
+  }
+  set #\u2118(value) {
+    this.#\u2118_ = value;
+  }
+  set #ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ_ = value;
+  }
+  set #ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J_ = value;
+  }
+;;;;;;;
+  ;;;;
+  $(value) {
+    this.#$ = value;
+    return this.#$_;
+  }
+  _(value) {
+    this.#_ = value;
+    return this.#__;
+  }
+  \u{6F}(value) {
+    this.#\u{6F} = value;
+    return this.#\u{6F}_;
+  }
+  \u2118(value) {
+    this.#\u2118 = value;
+    return this.#\u2118_;
+  }
+  ZW_\u200C_NJ(value) {
+    this.#ZW_\u200C_NJ = value;
+    return this.#ZW_\u200C_NJ_;
+  }
+  ZW_\u200D_J(value) {
+    this.#ZW_\u200D_J = value;
+    return this.#ZW_\u200D_J_;
+  }
+
+}
+
+var c = new C();
+
+assert.sameValue(c.$(1), 1);
+assert.sameValue(c._(1), 1);
+assert.sameValue(c.\u{6F}(1), 1);
+assert.sameValue(c.\u2118(1), 1);
+assert.sameValue(c.ZW_\u200C_NJ(1), 1);
+assert.sameValue(c.ZW_\u200D_J(1), 1);
-- 
GitLab