diff --git a/test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/async-gen-meth-args-trailing-comma-multiple.js
similarity index 83%
rename from test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-multiple.js
rename to test/language/arguments-object/async-gen-meth-args-trailing-comma-multiple.js
index 656e979764e551be55a1dc790dc7f0723e551a99..be05746612460e1179b996e396fdbf763aca4776 100644
--- a/test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/async-gen-meth-args-trailing-comma-multiple.js
@@ -23,9 +23,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 var callCount = 0;
diff --git a/test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/async-gen-meth-args-trailing-comma-null.js
similarity index 83%
rename from test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-null.js
rename to test/language/arguments-object/async-gen-meth-args-trailing-comma-null.js
index 0bdc228f9bfd86df049b9055513dd42972d107bc..ca865707cd5586615bce1eb655ef40eb36f5dea5 100644
--- a/test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-null.js
+++ b/test/language/arguments-object/async-gen-meth-args-trailing-comma-null.js
@@ -23,9 +23,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 var callCount = 0;
diff --git a/test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/async-gen-meth-args-trailing-comma-single-args.js
similarity index 83%
rename from test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-single-args.js
rename to test/language/arguments-object/async-gen-meth-args-trailing-comma-single-args.js
index 905ca395fe177d015347543e9cab9cef2d99e74c..5e924c97498404a43b6145fec5f3d47286d97876 100644
--- a/test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/async-gen-meth-args-trailing-comma-single-args.js
@@ -23,9 +23,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 var callCount = 0;
diff --git a/test/language/arguments-object/async-gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/async-gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..844bd1bf023906fba07a57d67447fd84a70b191f
--- /dev/null
+++ b/test/language/arguments-object/async-gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/async-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (async generator method)
+esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
+features: [async-iteration]
+flags: [generated, async]
+info: |
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+var callCount = 0;
+var obj = {
+  async *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+};
+
+// Stores a reference `ref` for case evaluation
+var ref = obj.method;
+
+ref(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'generator method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/async-gen-meth-args-trailing-comma-undefined.js
similarity index 83%
rename from test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-undefined.js
rename to test/language/arguments-object/async-gen-meth-args-trailing-comma-undefined.js
index b9fc31fcbe9ebe648e8fb9ee5739cc4e135a2ea6..0a4a31c33e224b197efe0d21d23dc38741643cbf 100644
--- a/test/language/expressions/object/method-definition/async-gen-meth-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/async-gen-meth-args-trailing-comma-undefined.js
@@ -23,9 +23,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 var callCount = 0;
diff --git a/test/language/expressions/async-generator/named-args-trailing-comma-multiple.js b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-multiple.js
similarity index 80%
rename from test/language/expressions/async-generator/named-args-trailing-comma-multiple.js
rename to test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-multiple.js
index 00dc217d68198966cabbdb43c73187ec656a94f9..dec759604b5c191c72f94626a0b69b48d8555f52 100644
--- a/test/language/expressions/async-generator/named-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-multiple.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/async-generator/named-args-trailing-comma-null.js b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-null.js
similarity index 80%
rename from test/language/expressions/async-generator/named-args-trailing-comma-null.js
rename to test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-null.js
index f6f8ad42cac9a22292d610b607bc0d662628284e..e8bf7ccf8ce3f78c28e7cc684114d3446d6ba45a 100644
--- a/test/language/expressions/async-generator/named-args-trailing-comma-null.js
+++ b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-null.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/async-generator/named-args-trailing-comma-single-args.js b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-single-args.js
similarity index 80%
rename from test/language/expressions/async-generator/named-args-trailing-comma-single-args.js
rename to test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-single-args.js
index 9fd49fb9c219becf19fd27cabcfac2bed9f6f201..65acaa2555ecf094b07e3dd1f4e48ea3fc7f0403 100644
--- a/test/language/expressions/async-generator/named-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-single-args.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-spread-operator.js b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..778e5af647646fbcdad9f03405a82a2ebd4742df
--- /dev/null
+++ b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-spread-operator.js
@@ -0,0 +1,52 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/async-gen-named-func-expr.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (async generator named function expression)
+esid: sec-asyncgenerator-definitions-evaluation
+features: [async-iteration]
+flags: [generated, async]
+info: |
+    AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier
+        ( FormalParameters ) { AsyncGeneratorBody }
+
+        [...]
+        7. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
+           AsyncGeneratorBody, funcEnv, strict).
+        [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+// Stores a reference `ref` for case evaluation
+var ref;
+ref = async function* g() {
+  assert.sameValue(arguments.length, 4);
+  assert.sameValue(arguments[0], 42);
+  assert.sameValue(arguments[1], 1);
+  assert.sameValue(arguments[2], 2);
+  assert.sameValue(arguments[3], 3);
+  callCount = callCount + 1;
+};
+
+ref(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'generator function invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/expressions/async-generator/named-args-trailing-comma-undefined.js b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-undefined.js
similarity index 80%
rename from test/language/expressions/async-generator/named-args-trailing-comma-undefined.js
rename to test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-undefined.js
index 349642e230fe63780379ccd1b9af8426fa5fe4eb..1663c9cf96e4f69dda54269d21be712ed375afc8 100644
--- a/test/language/expressions/async-generator/named-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-undefined.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/statements/async-generator/args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-multiple.js
similarity index 80%
rename from test/language/statements/async-generator/args-trailing-comma-multiple.js
rename to test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-multiple.js
index 3fa5bf10c18c9fa2f7ba6b3c9c7094c437fe7248..0c5639d302aa88a8236992eba606ce0228630157 100644
--- a/test/language/statements/async-generator/args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-multiple.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/statements/async-generator/args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-null.js
similarity index 80%
rename from test/language/statements/async-generator/args-trailing-comma-null.js
rename to test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-null.js
index e909f6fd29f61c48991b4beb3b866177b9e12a05..b185793749fef3f3fa6b4ab86eeb3288527fc47e 100644
--- a/test/language/statements/async-generator/args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-null.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/statements/async-generator/args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-single-args.js
similarity index 79%
rename from test/language/statements/async-generator/args-trailing-comma-single-args.js
rename to test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-single-args.js
index d66c25ded3e886c9263af3a28af75006eb56fe35..639972cc317f8de963b0613648b5b37d3a7eb660 100644
--- a/test/language/statements/async-generator/args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-single-args.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..d08e957e1d194c17c5a9a08a79f059728f9e3fc2
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-spread-operator.js
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/async-gen-func-decl.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (async generator function declaration)
+esid: sec-asyncgenerator-definitions-instantiatefunctionobject
+features: [async-iteration]
+flags: [generated, async]
+info: |
+    AsyncGeneratorDeclaration : async [no LineTerminator here] function * BindingIdentifier
+        ( FormalParameters ) { AsyncGeneratorBody }
+
+        [...]
+        3. Let F be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters, AsyncGeneratorBody,
+            scope, strict).
+        [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+// Stores a reference `ref` for case evaluation
+async function* ref() {
+  assert.sameValue(arguments.length, 4);
+  assert.sameValue(arguments[0], 42);
+  assert.sameValue(arguments[1], 1);
+  assert.sameValue(arguments[2], 2);
+  assert.sameValue(arguments[3], 3);
+  callCount = callCount + 1;
+}
+
+ref(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'generator function invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/statements/async-generator/args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-undefined.js
similarity index 80%
rename from test/language/statements/async-generator/args-trailing-comma-undefined.js
rename to test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-undefined.js
index 087c872f786fabc1952e99f331503a0eaadc4c7e..c47802160d7b197928537a26252a7a36381bc5ea 100644
--- a/test/language/statements/async-generator/args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-undefined.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/statements/class/async-gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-multiple.js
similarity index 88%
rename from test/language/statements/class/async-gen-meth-args-trailing-comma-multiple.js
rename to test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-multiple.js
index 9ee31b06bfd767f49605f529e386168fbb26b404..d56da3e3ab96aa6448e097b92edad0bcc5360412 100644
--- a/test/language/statements/class/async-gen-meth-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-multiple.js
@@ -41,9 +41,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 var callCount = 0;
diff --git a/test/language/statements/class/async-gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-null.js
similarity index 87%
rename from test/language/statements/class/async-gen-meth-args-trailing-comma-null.js
rename to test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-null.js
index 33833dcd7383014c0855fb2170e12a5188113f9c..6ad1eece4d0c6441d05a1dcf47a701ec29bf9c41 100644
--- a/test/language/statements/class/async-gen-meth-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-null.js
@@ -41,9 +41,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 var callCount = 0;
diff --git a/test/language/statements/class/async-gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-single-args.js
similarity index 87%
rename from test/language/statements/class/async-gen-meth-args-trailing-comma-single-args.js
rename to test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-single-args.js
index b3e6e0f98d836212874d93b1addbcea5d2dc70b6..570239a20f60f6e3647d961242f6cd66a478ade3 100644
--- a/test/language/statements/class/async-gen-meth-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-single-args.js
@@ -41,9 +41,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 var callCount = 0;
diff --git a/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..88f47fe20b97be1b674307a3366dd064a2175f03
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-async-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class expression method)
+esid: sec-class-definitions-runtime-semantics-evaluation
+features: [async-iteration]
+flags: [generated, async]
+info: |
+    ClassDeclaration : class BindingIdentifier ClassTail
+
+    1. Let className be StringValue of BindingIdentifier.
+    2. Let value be the result of ClassDefinitionEvaluation of ClassTail with
+       argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+var callCount = 0;
+class C {
+  async *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+}
+
+// Stores a reference `ref` for case evaluation
+var ref = C.prototype.method;
+
+ref(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/statements/class/async-gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-undefined.js
similarity index 88%
rename from test/language/statements/class/async-gen-meth-args-trailing-comma-undefined.js
rename to test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-undefined.js
index 9b9c4a3c3afc2d1ef3851c013b3d2ece65eb7a9c..3b4961173ccb2e7fd0b2a02fab875199120d2193 100644
--- a/test/language/statements/class/async-gen-meth-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-undefined.js
@@ -41,9 +41,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 var callCount = 0;
diff --git a/test/language/statements/class/async-gen-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-multiple.js
similarity index 88%
rename from test/language/statements/class/async-gen-meth-static-args-trailing-comma-multiple.js
rename to test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-multiple.js
index fbbe19913ca118cf17c18b00b8d91b82192dd646..33cdf03bf580fd839758ff0ca785e84e74d27c4b 100644
--- a/test/language/statements/class/async-gen-meth-static-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-multiple.js
@@ -41,9 +41,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/statements/class/async-gen-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-null.js
similarity index 87%
rename from test/language/statements/class/async-gen-meth-static-args-trailing-comma-null.js
rename to test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-null.js
index d91abd06bc25fe17482970d8ec1e3b752f996a7c..379f9b264d773ceb228783f1d2d8d2d3b6a0b0cd 100644
--- a/test/language/statements/class/async-gen-meth-static-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-null.js
@@ -41,9 +41,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/statements/class/async-gen-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-single-args.js
similarity index 87%
rename from test/language/statements/class/async-gen-meth-static-args-trailing-comma-single-args.js
rename to test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-single-args.js
index 1e583efe986f3ec52f4322e8551e60a97a472a81..f55fff88a871677efef71178be156276ae5d6e10 100644
--- a/test/language/statements/class/async-gen-meth-static-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-single-args.js
@@ -41,9 +41,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..142be7e3503f96734f7b1b296f1ac9cdeb26b59e
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,78 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-async-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class expression generator method)
+esid: sec-runtime-semantics-bindingclassdeclarationevaluation
+features: [async-iteration]
+flags: [generated, async]
+info: |
+    ClassDeclaration : class BindingIdentifier ClassTail
+
+    1. Let className be StringValue of BindingIdentifier.
+    2. Let value be the result of ClassDefinitionEvaluation of ClassTail with
+       argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+        b. Else,
+           Let status be the result of performing PropertyDefinitionEvaluation for
+           m with arguments F and false.
+    [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  static async *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+}
+
+// Stores a reference `ref` for case evaluation
+var ref = C.method;
+
+ref(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/statements/class/async-gen-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-undefined.js
similarity index 88%
rename from test/language/statements/class/async-gen-meth-static-args-trailing-comma-undefined.js
rename to test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-undefined.js
index d3938284ea0abd3224d95924a596b95210c9612e..13f8e74847dcaaa7dfd5f09cf1196cac3c62e8f0 100644
--- a/test/language/statements/class/async-gen-meth-static-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-undefined.js
@@ -41,9 +41,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..13f5254232dfad2fc3cfcfd02ccee6a7c84c0c17
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-multiple.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-decl-async-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (static class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassDeclaration : class BindingIdentifier ClassTail
+
+    1. Let className be StringValue of BindingIdentifier.
+    2. Let value be the result of ClassDefinitionEvaluation of ClassTail with
+       argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+var callCount = 0;
+class C {
+  async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, 'TC39',).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..ba6a16f760dab8e2d8c9dc7a385950048ef705b9
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-null.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-decl-async-private-gen-meth.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (static class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassDeclaration : class BindingIdentifier ClassTail
+
+    1. Let className be StringValue of BindingIdentifier.
+    2. Let value be the result of ClassDefinitionEvaluation of ClassTail with
+       argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+var callCount = 0;
+class C {
+  async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, null,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..24056047cd9524f4bcdddcfd931eafd9241fb264
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-single-args.js
@@ -0,0 +1,73 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-decl-async-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (static class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassDeclaration : class BindingIdentifier ClassTail
+
+    1. Let className be StringValue of BindingIdentifier.
+    2. Let value be the result of ClassDefinitionEvaluation of ClassTail with
+       argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+var callCount = 0;
+class C {
+  async * #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..d13153726ad077d4730a371c861ead3c2131d3e8
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,78 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-async-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassDeclaration : class BindingIdentifier ClassTail
+
+    1. Let className be StringValue of BindingIdentifier.
+    2. Let value be the result of ClassDefinitionEvaluation of ClassTail with
+       argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+var callCount = 0;
+class C {
+  async * #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..b1d278fb834da73e3397c7bfce5b93bd3581483a
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-undefined.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-decl-async-private-gen-meth.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (static class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassDeclaration : class BindingIdentifier ClassTail
+
+    1. Let className be StringValue of BindingIdentifier.
+    2. Let value be the result of ClassDefinitionEvaluation of ClassTail with
+       argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+var callCount = 0;
+class C {
+  async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, undefined,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..fe1fb91631f5e7f8298f603b280ead77fe69e2ca
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-multiple.js
@@ -0,0 +1,55 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-decl-async-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    Arguments :
+      ( )
+      ( ArgumentList )
+      ( ArgumentList , )
+
+    ArgumentList :
+      AssignmentExpression
+      ... AssignmentExpression
+      ArgumentList , AssignmentExpression
+      ArgumentList , ... AssignmentExpression
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+      return this.#method;
+  }
+}
+
+C.method(42, 'TC39',).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..820d5f8c9495c368bead22c7de91bfdb74f3e736
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-null.js
@@ -0,0 +1,55 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-decl-async-private-gen-meth-static.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    Arguments :
+      ( )
+      ( ArgumentList )
+      ( ArgumentList , )
+
+    ArgumentList :
+      AssignmentExpression
+      ... AssignmentExpression
+      ArgumentList , AssignmentExpression
+      ArgumentList , ... AssignmentExpression
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+      return this.#method;
+  }
+}
+
+C.method(42, null,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..6b1dd042b647f0ac33d85baba459dbbaa8f3d379
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-single-args.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-decl-async-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    Arguments :
+      ( )
+      ( ArgumentList )
+      ( ArgumentList , )
+
+    ArgumentList :
+      AssignmentExpression
+      ... AssignmentExpression
+      ArgumentList , AssignmentExpression
+      ArgumentList , ... AssignmentExpression
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static async * #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+      return this.#method;
+  }
+}
+
+C.method(42,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..96e160c8e6feec1b76a1e96c44477be5444a0168
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-async-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    Arguments :
+      ( )
+      ( ArgumentList )
+      ( ArgumentList , )
+
+    ArgumentList :
+      AssignmentExpression
+      ... AssignmentExpression
+      ArgumentList , AssignmentExpression
+      ArgumentList , ... AssignmentExpression
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  static async * #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+      return this.#method;
+  }
+}
+
+C.method(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..0bdd947fa340a0a8233ebd38f2c94e689d159f47
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-undefined.js
@@ -0,0 +1,55 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-decl-async-private-gen-meth-static.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    Arguments :
+      ( )
+      ( ArgumentList )
+      ( ArgumentList , )
+
+    ArgumentList :
+      AssignmentExpression
+      ... AssignmentExpression
+      ArgumentList , AssignmentExpression
+      ArgumentList , ... AssignmentExpression
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+      return this.#method;
+  }
+}
+
+C.method(42, undefined,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-multiple.js
index 40b7ba03880684b806c3889efac3b74116ff468f..9e8a6588acf2ea3a8f1f68e5d1742f42d5e60912 100644
--- a/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-multiple.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-null.js
index 10418ef7914e2cd064018a51737b32cd3507a7c3..0eaa49ab2cb694b3a4f9a6c171b5c4a200419f3f 100644
--- a/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-null.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-single-args.js
index 0b8bd096f74baedffc7a63ddef85fa8a468f846d..e7dc8eb9f76b4806c1b0230e24e16c586d23b052 100644
--- a/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-single-args.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..3cced1b4d258a5afecaa20483df8593b0a299615
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class declaration generator method)
+esid: sec-arguments-exotic-objects
+features: [generators]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+}
+
+C.prototype.method(42, ...[1], ...arr,).next();
+
+// Stores a reference `ref` for case evaluation
+var ref = C.prototype.method;
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-undefined.js
index 7d870499a0b02ae0fe7fc4447c71f6220f166d0f..bc2059b237fe0e2d966acced68a4f3a7ab4414fe 100644
--- a/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-undefined.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-multiple.js
index d1596fe2c9fba297eb4e009ec9905008b1f9c45c..ba48dcf86f9b9cfc6828f56070ba3aa566891715 100644
--- a/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-multiple.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-null.js
index c8f32457bb3dcd8f9e7358c75007ec8b51d4bb5e..28bb31bb1bca2438621e5caf901b2d3c5501510c 100644
--- a/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-null.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-single-args.js
index ec4204c8c2c2ea0ece9fec3650dfd2aaba9a0301..fc97367fdd66912233756ff182358eb3b4be204a 100644
--- a/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-single-args.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..a81986055afc395d603cc15b047e47a79c568892
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class declaration generator method)
+esid: sec-arguments-exotic-objects
+features: [generators]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  static *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+}
+
+C.method(42, ...[1], ...arr,).next();
+
+// Stores a reference `ref` for case evaluation
+var ref = C.method;
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-undefined.js
index 5a6faf828435da09507c5eccfa63e44c313b39c0..37db035f50363fd7d52d8803c7465572db5e3285 100644
--- a/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-undefined.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-multiple.js
index 2fd2c18f5209cd6ed5e754430cbfb6b0d4b243a0..7aed4d5b3960a387c71aec8ac396eeb71de7d2e0 100644
--- a/test/language/arguments-object/cls-decl-meth-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-multiple.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-null.js
index f8ad3d0387d810c731e5087450f323dc03c93c34..864f1095b3c58c51f230b95b4c1569685b680674 100644
--- a/test/language/arguments-object/cls-decl-meth-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-null.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-single-args.js
index 8c5c84e307856f791f58f6ca9fa0cab8ac51e70f..2d35ffbf0f7a83a20e2f6a182c967f046bfcc363 100644
--- a/test/language/arguments-object/cls-decl-meth-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-single-args.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..b46143174c6faaa1a8904fec50301c4f65edd67e
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class declaration method)
+esid: sec-arguments-exotic-objects
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+}
+
+C.prototype.method(42, ...[1], ...arr,);
+
+// Stores a reference `ref` for case evaluation
+var ref = C.prototype.method;
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-undefined.js
index 2369485c9633a99bf7c4f0b4a8d6474084a942bf..dfc0bf67245286a78556eb0dcd8dc79c7b68c06c 100644
--- a/test/language/arguments-object/cls-decl-meth-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-decl-meth-args-trailing-comma-undefined.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-multiple.js
index 41eb07215d40f7d233c1aa59625886f3b396eeea..d66a236c73c7f3ee84c42a8b5135b56132a4b485 100644
--- a/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-multiple.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-null.js
index d33ef1805f892f738a1bf2e0c5af92dd9dd255d5..c27573ddab9d1e153f945e967e2cf9f6b998a8fc 100644
--- a/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-null.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-single-args.js
index dca6c135ce4c4c2a47362f0c0604c58c8892fb40..c23e46c92ab5ba1d322b2a32d319b8b7c2789a36 100644
--- a/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-single-args.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..3fa249696efb162d178916d6b17fafa0c339e614
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class declaration method)
+esid: sec-arguments-exotic-objects
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  static method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+}
+
+C.method(42, ...[1], ...arr,);
+
+// Stores a reference `ref` for case evaluation
+var ref = C.method;
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-undefined.js
index dbdbfea745ccb641c06245765a36c95ab9256321..1e6beb8e30739292c02c1e224747bcdeda0048d9 100644
--- a/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-undefined.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..3c7862feee42927cdd9b4e61e282188e29186e51
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-multiple.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-decl-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, 'TC39',).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f2b6cb70da231bb248e1b479175a79a88b50428
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-null.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-decl-private-gen-meth.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, null,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..1f55965f24475087bd559753cdf6f1e74d037ad8
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-single-args.js
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-decl-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  * #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..455524f8cf09eeac617aebd9ee9363faab3d197b
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  * #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, ...[1], ...arr,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..1cf9aa310b812d4a6e161d092f0f48e25484532a
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-undefined.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-decl-private-gen-meth.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, undefined,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..933ff600f56b4cc1aa6b34f2144bf2ea74099f5e
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-multiple.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-decl-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42, 'TC39',).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..0b8f3869198fc9d0bfd9deedfd627c0e037565d7
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-null.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-decl-private-gen-meth-static.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42, null,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..d4d696ae4fcae2574080549b534fe0497d857d50
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-single-args.js
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-decl-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static * #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..f08bf5d2c99d73e35e5d541a00e0fa9fcf813c8c
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  static * #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42, ...[1], ...arr,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..4af64924d94344f0770c1978dd9414dd19524a55
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-undefined.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-decl-private-gen-meth-static.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (class declaration private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42, undefined,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..713c5e7673e233f54870f30da9777f73d502696b
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-multiple.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-decl-private-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, 'TC39',);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ee179287f01e89a8eebc9257c3b82867babd770
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-null.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-decl-private-meth.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, null,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ceaec2136f73bca651b6d4ae3a60de975b12865
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-single-args.js
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-decl-private-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..af04762cc694baea8c695852da3dece00a8aea3e
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-private-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, ...[1], ...arr,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..11a8ad097f74fb32f7e1682fb572caa2f5f7e19f
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-undefined.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-decl-private-meth.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+}
+
+new C().method(42, undefined,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..56af8bda254747be0f3dccee3095e7031e840712
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-multiple.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-decl-private-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (static class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42, 'TC39',);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..335c7caf62009fb06904364138d34964fabbb34f
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-null.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-decl-private-meth-static.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (static class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42, null,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..0764771043d2cdfca961ff94267efd569ddb1f66
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-single-args.js
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-decl-private-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (static class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..52d53b5999c4e6ba21215ddfe92b5e8d15660699
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-decl-private-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+class C {
+  static #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42, ...[1], ...arr,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e968648f6e47bf5bcea2e843f43f87111a0aa1f
--- /dev/null
+++ b/test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-undefined.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-decl-private-meth-static.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (static class declaration private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+class C {
+  static #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+}
+
+C.method(42, undefined,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/expressions/async-generator/args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-multiple.js
similarity index 80%
rename from test/language/expressions/async-generator/args-trailing-comma-multiple.js
rename to test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-multiple.js
index e9c6dbee3f8761d71f52f1a7132f9f384357058d..a3195b8b5a9f923bfdd81305893626a7236c0365 100644
--- a/test/language/expressions/async-generator/args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-multiple.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/async-generator/args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-null.js
similarity index 80%
rename from test/language/expressions/async-generator/args-trailing-comma-null.js
rename to test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-null.js
index 855395b65465ff2d191c0fa8dc8d55912ec17e64..bb27920f3bbe2cb397e8bbe3ba8073c0e72edc6a 100644
--- a/test/language/expressions/async-generator/args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-null.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/async-generator/args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-single-args.js
similarity index 79%
rename from test/language/expressions/async-generator/args-trailing-comma-single-args.js
rename to test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-single-args.js
index fdda70572a024bcc05323e02988e5807f85d65a1..cf364ae8c04bed8c24214216db459086f8d2197d 100644
--- a/test/language/expressions/async-generator/args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-single-args.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a9dd7c1c76fa8bd8b7235627ab40f51e923cfa2
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-spread-operator.js
@@ -0,0 +1,52 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/async-gen-func-expr.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (async generator function expression)
+esid: sec-asyncgenerator-definitions-evaluation
+features: [async-iteration]
+flags: [generated, async]
+info: |
+    AsyncGeneratorExpression : async [no LineTerminator here] function * ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+        [...]
+        3. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
+           AsyncGeneratorBody, scope, strict).
+        [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+// Stores a reference `ref` for case evaluation
+var ref;
+ref = async function*() {
+  assert.sameValue(arguments.length, 4);
+  assert.sameValue(arguments[0], 42);
+  assert.sameValue(arguments[1], 1);
+  assert.sameValue(arguments[2], 2);
+  assert.sameValue(arguments[3], 3);
+  callCount = callCount + 1;
+};
+
+ref(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'generator function invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/expressions/async-generator/args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-undefined.js
similarity index 80%
rename from test/language/expressions/async-generator/args-trailing-comma-undefined.js
rename to test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-undefined.js
index 58692738102f54df9134f7e1f50381e94a6dca97..6687e264dbcc29d14e872217c4398c1abc9d693a 100644
--- a/test/language/expressions/async-generator/args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-undefined.js
@@ -18,9 +18,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/class/async-gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-multiple.js
similarity index 88%
rename from test/language/expressions/class/async-gen-meth-args-trailing-comma-multiple.js
rename to test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-multiple.js
index f1b4d919ea36e5228ef8f1aa1a44ec128d661250..392d0f57da229da1a437a107fde7072c8096d90c 100644
--- a/test/language/expressions/class/async-gen-meth-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-multiple.js
@@ -42,9 +42,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/class/async-gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-null.js
similarity index 88%
rename from test/language/expressions/class/async-gen-meth-args-trailing-comma-null.js
rename to test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-null.js
index 017d66fda8c2e543bbcca97c2093fa198de3c98f..85743ac0fafe7bf1cbb97d5417e1e3ac0811a689 100644
--- a/test/language/expressions/class/async-gen-meth-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-null.js
@@ -42,9 +42,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/class/async-gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-single-args.js
similarity index 88%
rename from test/language/expressions/class/async-gen-meth-args-trailing-comma-single-args.js
rename to test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-single-args.js
index 788ece51caf4e5f6645c8673d08344bdefae5ea6..05770208d98ccaa8e44e5fd213868e67cff1eef0 100644
--- a/test/language/expressions/class/async-gen-meth-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-single-args.js
@@ -42,9 +42,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..959566caccbffabd6b0f306c3cfc1b948ecf8cb5
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,80 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-async-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class expression async generator method)
+esid: sec-class-definitions-runtime-semantics-evaluation
+features: [async-iteration]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  async *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+};
+
+// Stores a reference `ref` for case evaluation
+var ref = C.prototype.method;
+
+ref(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
+
diff --git a/test/language/expressions/class/async-gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-undefined.js
similarity index 88%
rename from test/language/expressions/class/async-gen-meth-args-trailing-comma-undefined.js
rename to test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-undefined.js
index da98971f979e941ee169ef2cdba812545d050a0b..f475eb54cd7d34e1a6fd60343c0b27d7c0fef057 100644
--- a/test/language/expressions/class/async-gen-meth-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-undefined.js
@@ -42,9 +42,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/class/async-gen-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-multiple.js
similarity index 88%
rename from test/language/expressions/class/async-gen-meth-static-args-trailing-comma-multiple.js
rename to test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-multiple.js
index 5cf7bfcd835d5d21caefe06516915da09fdaa526..c2366f26c05c68d65361165ff8623c747bc16294 100644
--- a/test/language/expressions/class/async-gen-meth-static-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-multiple.js
@@ -42,9 +42,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/class/async-gen-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-null.js
similarity index 88%
rename from test/language/expressions/class/async-gen-meth-static-args-trailing-comma-null.js
rename to test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-null.js
index d8bf42cdbfb5e7363127372331e6547f1f7808b8..e6e9cc5797b0ed1bc1a4d6b301bd0be59b674069 100644
--- a/test/language/expressions/class/async-gen-meth-static-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-null.js
@@ -42,9 +42,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/expressions/class/async-gen-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-single-args.js
similarity index 88%
rename from test/language/expressions/class/async-gen-meth-static-args-trailing-comma-single-args.js
rename to test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-single-args.js
index afa2552bb309a3a3af8bd755faf40811ffb2e8a1..d13f43fb28bb0faaf5a9f689e0a54e7e7125f894 100644
--- a/test/language/expressions/class/async-gen-meth-static-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-single-args.js
@@ -42,9 +42,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..af23784747578d1f7b25bc6837c419f657b898d9
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,79 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-async-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class expression async generator method)
+esid: sec-class-definitions-runtime-semantics-evaluation
+features: [async-iteration]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+        b. Else,
+           Let status be the result of performing PropertyDefinitionEvaluation
+           for m with arguments F and false.
+    [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  static async *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+};
+
+// Stores a reference `ref` for case evaluation
+var ref = C.method;
+
+ref(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/expressions/class/async-gen-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-undefined.js
similarity index 88%
rename from test/language/expressions/class/async-gen-meth-static-args-trailing-comma-undefined.js
rename to test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-undefined.js
index d058cc877f00c72dba4480cb245a974ed1c68fbe..c0811d66bf1bd77bd938eeaeda93ef6d6a3c2c84 100644
--- a/test/language/expressions/class/async-gen-meth-static-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-undefined.js
@@ -42,9 +42,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
+    Left-Hand-Side Expressions
 
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..b652733edd021f5f8d00ddd5cfdbf4c1551d3900
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-multiple.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-expr-async-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, 'TC39',).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
+
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..a9771807608d5fc312035b3b5dfd43de0e6318fa
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-null.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-expr-async-private-gen-meth.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, null,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
+
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..30ec4e33124480dd1aaba092804ba6a49ca79fe9
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-single-args.js
@@ -0,0 +1,76 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-expr-async-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  async * #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
+
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..c4dc3b6c2dde00166745d7a1475891179bfea8be
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,81 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-async-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  async * #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
+
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..77481ea51598fe78d1be6d0e93202b353eb8a34c
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-undefined.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-expr-async-private-gen-meth.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+           i. Let status be the result of performing
+              PropertyDefinitionEvaluation for m with arguments proto and
+              false.
+        [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, undefined,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
+
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..aa2893685202878101b61748d4c61633a93ca5da
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-multiple.js
@@ -0,0 +1,76 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-expr-async-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (static class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+        b. Else,
+           Let status be the result of performing PropertyDefinitionEvaluation
+           for m with arguments F and false.
+    [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, 'TC39',).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..4f5de1e307ed0a12f3ff26561309258f4d66edf3
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-null.js
@@ -0,0 +1,76 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-expr-async-private-gen-meth-static.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (static class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+        b. Else,
+           Let status be the result of performing PropertyDefinitionEvaluation
+           for m with arguments F and false.
+    [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, null,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..8a852bc9ea89982dd8a5894b775f4bd91c25d7b5
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-single-args.js
@@ -0,0 +1,75 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-expr-async-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (static class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+        b. Else,
+           Let status be the result of performing PropertyDefinitionEvaluation
+           for m with arguments F and false.
+    [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static async * #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..cf8c66bec854809b07fa1581691c9039c12579a1
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,80 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-async-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+        b. Else,
+           Let status be the result of performing PropertyDefinitionEvaluation
+           for m with arguments F and false.
+    [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  static async * #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, ...[1], ...arr,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..023d3c3fc6f76f0906d7359ef2c96eb7ee300716
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-undefined.js
@@ -0,0 +1,76 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-expr-async-private-gen-meth-static.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (static class expression async private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [async-iteration, class, class-static-methods-private]
+flags: [generated, async]
+info: |
+    ClassExpression : class BindingIdentifieropt ClassTail
+
+    1. If BindingIdentifieropt is not present, let className be undefined.
+    2. Else, let className be StringValue of BindingIdentifier.
+    3. Let value be the result of ClassDefinitionEvaluation of ClassTail
+       with argument className.
+    [...]
+
+    14.5.14 Runtime Semantics: ClassDefinitionEvaluation
+
+    21. For each ClassElement m in order from methods
+        a. If IsStatic of m is false, then
+        b. Else,
+           Let status be the result of performing PropertyDefinitionEvaluation
+           for m with arguments F and false.
+    [...]
+
+    Runtime Semantics: PropertyDefinitionEvaluation
+
+    AsyncGeneratorMethod :
+        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
+            { AsyncGeneratorBody }
+
+    1. Let propKey be the result of evaluating PropertyName.
+    2. ReturnIfAbrupt(propKey).
+    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
+       Otherwise let strict be false.
+    4. Let scope be the running execution context's LexicalEnvironment.
+    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
+       AsyncGeneratorBody, scope, strict).
+    [...]
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static async * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, undefined,).next().then(() => {
+    assert.sameValue(callCount, 1, 'method invoked exactly once');
+}).then($DONE, $DONE);
diff --git a/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-multiple.js
index a610b95abfc867ee131256d33389f41e23cf9ff1..e4de074c3ed2498b4183e0ecf34660340b319467 100644
--- a/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-multiple.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-null.js
index 2ab35290e098ecb043f0f62d0249fc60b44cda3b..dd017cff0c7df2e0e259505370f347e630a9fe09 100644
--- a/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-null.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-single-args.js
index f31fdf2e8798920c0598e6d7145a1a70e169ba1b..4c0b362cec029ee771ecfa2bae58ae1860b46b08 100644
--- a/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-single-args.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..1aa6ecbd6bebad3d619edcc0feb6502d22a4cae5
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class expression generator method)
+esid: sec-arguments-exotic-objects
+features: [generators]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+};
+
+C.prototype.method(42, ...[1], ...arr,).next();
+
+// Stores a reference `ref` for case evaluation
+var ref = C.prototype.method;
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-undefined.js
index d3fc23b2c0d47e801f02af172d0f08911f5fb55b..b6cf5c3090f98ed16dedd6bc96eb77aed10a12f5 100644
--- a/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-undefined.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-multiple.js
index ce7c6b5d1dc39fb3b42810dec8685a5c697313f9..4c1440677e3b2a9bbd5d667a2ac76a3e124d7648 100644
--- a/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-multiple.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-null.js
index 363673d50cb93c6bfdd31d5c4af6a21ed030d982..71862647e27caf45ab478e2c110a99da183c8523 100644
--- a/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-null.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-single-args.js
index 9bcb935bcfc2c79b2386b6f5637acbea15d2890b..8e2ff437ea4c41d21bce28bae8ed807dd56f157d 100644
--- a/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-single-args.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..3dc818baddbda7515bf79eb8c2ac03ea3dae9324
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class expression generator method)
+esid: sec-arguments-exotic-objects
+features: [generators]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  static *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+};
+
+C.method(42, ...[1], ...arr,).next();
+
+// Stores a reference `ref` for case evaluation
+var ref = C.method;
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-undefined.js
index 170e6f894ce5813d060ae8714ce16de4635ccb07..6a53c69c03bd111557451f002061a51717224bf6 100644
--- a/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-undefined.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-multiple.js
index 1a0fcf7785a055fe2237e5e1557d7f98fb2cc4bd..2bcc643b0d18986acd8020a23ba5f2e04784c0ff 100644
--- a/test/language/arguments-object/cls-expr-meth-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-multiple.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-null.js
index 04d0bf5e839c7ec206a76e0d9070e4a8cde16069..d74388db9a811173ebacd062fe1fc39fdc010407 100644
--- a/test/language/arguments-object/cls-expr-meth-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-null.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-single-args.js
index 841ed2e637970964b9d7ff79fb0e841f2c71e420..cee020ece452f918931233f4083710376584c77b 100644
--- a/test/language/arguments-object/cls-expr-meth-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-single-args.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..0847a9765e67c43d63f594406057d202f4711321
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class expression method)
+esid: sec-arguments-exotic-objects
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+};
+
+C.prototype.method(42, ...[1], ...arr,);
+
+// Stores a reference `ref` for case evaluation
+var ref = C.prototype.method;
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-undefined.js
index f96b4815110a981587e49e360d509259b80e98a9..66715913a75dd726bf67211fb8b30fd1a8720385 100644
--- a/test/language/arguments-object/cls-expr-meth-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-expr-meth-args-trailing-comma-undefined.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-multiple.js
index 6b92f2abfa7828ae634aa85f2856eade9e34a995..30e35d5c3e92298ea3e0dcb6c66577c84bc2c063 100644
--- a/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-multiple.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-null.js
index 6dc103bcc1f3bc0ca5e3998f19500c25d16d54b7..1d4e7607b524db14f48d1eb81750dafa56f1dd09 100644
--- a/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-null.js
+++ b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-null.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-single-args.js
index 02910ed585649be5248c64b60a79821f8089da5f..b9c677fa4e26c6767f8c34536d265acc3abd99c7 100644
--- a/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-single-args.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..e12037e08f4d7d8d1fa28b7426cf004019db6555
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class expression method)
+esid: sec-arguments-exotic-objects
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  static method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+};
+
+C.method(42, ...[1], ...arr,);
+
+// Stores a reference `ref` for case evaluation
+var ref = C.method;
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-undefined.js
index 8aa68aa06b3f58447bb216b85468b8ef5aff23d4..cec597366fce9af4980bdea110658af8b2110572 100644
--- a/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-undefined.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..68a61dcbd0f23f46c7e96e4d2d7e5e0566a6ba6e
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-multiple.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-expr-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, 'TC39',).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..798d20cea8f6add759e8f69568bc6577d46bfa08
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-null.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-expr-private-gen-meth.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, null,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab3ed64d95ba8433e1f28608e4d07386348ebd6b
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-single-args.js
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-expr-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  * #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..40f3587901b125d57359e5175fc61906d5dde5d9
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-private-gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  * #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, ...[1], ...arr,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..af8d174c5e50a3950dbbf876130053bfe63b5748
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-undefined.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-expr-private-gen-meth.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, undefined,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..eabd7523ccea22911760dbbabbb588888f06c6bc
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-multiple.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-expr-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, 'TC39',).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..51cc974ad311056fc3262ff551c4bce06f1d5620
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-null.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-expr-private-gen-meth-static.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, null,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..61dc7e1a2f1114ba51f9b15340308279b896737b
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-single-args.js
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-expr-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static * #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..2c00fdc98d9839b2514a71ab368507e2633d5dae
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-private-gen-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  static * #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, ...[1], ...arr,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..ec420d59e936351bcfc981957eddf2c6b61825e5
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-undefined.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-expr-private-gen-meth-static.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (static class expression private generator method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [generators, class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static * #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, undefined,).next();
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..743e68fe78487ed5edf224a806526476a70e19b7
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-multiple.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-expr-private-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, 'TC39',);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..0b62f94efc3c6a34f1b56d8b0d1684b86db0ffbc
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-null.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-expr-private-meth.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, null,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..a0b41850ed90815371092b9b59a39064db01b23a
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-single-args.js
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-expr-private-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..cbca766be9b3bd4755db8dda04812db112d98422
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-private-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, ...[1], ...arr,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..481c0323c4b35de40850e6fab01d0cb5cc9215ea
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-undefined.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-expr-private-meth.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  get method() {
+    return this.#method;
+  }
+};
+
+new C().method(42, undefined,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-multiple.js b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-multiple.js
new file mode 100644
index 0000000000000000000000000000000000000000..95b139c69d59f3d52ee53059879a1839b0b89c04
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-multiple.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-multiple.case
+// - src/arguments/default/cls-expr-private-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using multiple args (static class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 'TC39');
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, 'TC39',);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-null.js b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-null.js
new file mode 100644
index 0000000000000000000000000000000000000000..cf655d52d8c6b05887d855fad1b92b97fd1d1e40
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-null.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-null.case
+// - src/arguments/default/cls-expr-private-meth-static.template
+/*---
+description: A trailing comma after null should not increase the arguments.length (static class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], null);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, null,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-single-args.js b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-single-args.js
new file mode 100644
index 0000000000000000000000000000000000000000..805be95fccde50e2a892318a9af018399570a02f
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-single-args.js
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-single-args.case
+// - src/arguments/default/cls-expr-private-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using a single arg (static class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static #method() {
+    assert.sameValue(arguments.length, 1);
+    assert.sameValue(arguments[0], 42);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-spread-operator.js b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..a6419f4c0a1ab65ecdae7f3bd93e3acd77240a84
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-spread-operator.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/cls-expr-private-meth-static.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (static class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var C = class {
+  static #method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, ...[1], ...arr,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-undefined.js b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-undefined.js
new file mode 100644
index 0000000000000000000000000000000000000000..953572992da6bf4ac7942cd9a9ee51f03a69de4c
--- /dev/null
+++ b/test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-undefined.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-undefined.case
+// - src/arguments/default/cls-expr-private-meth-static.template
+/*---
+description: A trailing comma after undefined should not increase the arguments.length (static class expression private method)
+esid: sec-argument-lists-runtime-semantics-argumentlistevaluation
+features: [class, class-static-methods-private]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+
+
+var callCount = 0;
+var C = class {
+  static #method() {
+    assert.sameValue(arguments.length, 2);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], undefined);
+    callCount = callCount + 1;
+  }
+
+  static get method() {
+    return this.#method;
+  }
+};
+
+C.method(42, undefined,);
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/func-decl-args-trailing-comma-multiple.js b/test/language/arguments-object/func-decl-args-trailing-comma-multiple.js
index 5914d38a2f0da953eb5904ecbcb1859eed50c92e..72a253cf828426ee20ed751fc1b7207a976f60d6 100644
--- a/test/language/arguments-object/func-decl-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/func-decl-args-trailing-comma-multiple.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/func-decl-args-trailing-comma-null.js b/test/language/arguments-object/func-decl-args-trailing-comma-null.js
index 5eccfc29de2139fc1cef95041776050516bc2096..561cf50616ef63d7843f5a70767ce0d54c16b887 100644
--- a/test/language/arguments-object/func-decl-args-trailing-comma-null.js
+++ b/test/language/arguments-object/func-decl-args-trailing-comma-null.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/func-decl-args-trailing-comma-single-args.js b/test/language/arguments-object/func-decl-args-trailing-comma-single-args.js
index fd0d787d3cecb313a5af4720a48ffac58ce64550..c918249243d96d5698539de3751708cfdf21387f 100644
--- a/test/language/arguments-object/func-decl-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/func-decl-args-trailing-comma-single-args.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/func-decl-args-trailing-comma-spread-operator.js b/test/language/arguments-object/func-decl-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..c435c01928cbef5ba65520c902eedaae2f8e792b
--- /dev/null
+++ b/test/language/arguments-object/func-decl-args-trailing-comma-spread-operator.js
@@ -0,0 +1,47 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/func-decl.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (function declaration)
+esid: sec-arguments-exotic-objects
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+// Stores a reference `ref` for case evaluation
+function ref() {
+  assert.sameValue(arguments.length, 4);
+  assert.sameValue(arguments[0], 42);
+  assert.sameValue(arguments[1], 1);
+  assert.sameValue(arguments[2], 2);
+  assert.sameValue(arguments[3], 3);
+  callCount = callCount + 1;
+}
+
+ref(42, ...[1], ...arr,);
+
+assert.sameValue(callCount, 1, 'function invoked exactly once');
diff --git a/test/language/arguments-object/func-decl-args-trailing-comma-undefined.js b/test/language/arguments-object/func-decl-args-trailing-comma-undefined.js
index a4158e2241531074df3e9a5ad049a6b5a6b2efa7..87d438448842fb7b47ae29b066d3556c03696729 100644
--- a/test/language/arguments-object/func-decl-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/func-decl-args-trailing-comma-undefined.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/func-expr-args-trailing-comma-multiple.js b/test/language/arguments-object/func-expr-args-trailing-comma-multiple.js
index a40af7de8ca4e8c3c667504f2fed26866366f0d7..4d0a9f8a6411491c0b3cf1772d375d3bb6ff5c51 100644
--- a/test/language/arguments-object/func-expr-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/func-expr-args-trailing-comma-multiple.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/func-expr-args-trailing-comma-null.js b/test/language/arguments-object/func-expr-args-trailing-comma-null.js
index d6b035aaf1a8264573a61d0c2815e486cf06bbd4..8f510f0d61024fe6e91ee21ca404123cf40d84dd 100644
--- a/test/language/arguments-object/func-expr-args-trailing-comma-null.js
+++ b/test/language/arguments-object/func-expr-args-trailing-comma-null.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/func-expr-args-trailing-comma-single-args.js b/test/language/arguments-object/func-expr-args-trailing-comma-single-args.js
index 21aa7b209fb7e258bfa8e1ca5657ba2dc110a54f..fd7c8a78687a2754518e24393b6532b9a6ae6fac 100644
--- a/test/language/arguments-object/func-expr-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/func-expr-args-trailing-comma-single-args.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/func-expr-args-trailing-comma-spread-operator.js b/test/language/arguments-object/func-expr-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..b1b80b2ef04de97dbe89ed6aba0a2a3ddf02c868
--- /dev/null
+++ b/test/language/arguments-object/func-expr-args-trailing-comma-spread-operator.js
@@ -0,0 +1,48 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/func-expr.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (function expression)
+esid: sec-arguments-exotic-objects
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+// Stores a reference `ref` for case evaluation
+var ref;
+ref = function() {
+  assert.sameValue(arguments.length, 4);
+  assert.sameValue(arguments[0], 42);
+  assert.sameValue(arguments[1], 1);
+  assert.sameValue(arguments[2], 2);
+  assert.sameValue(arguments[3], 3);
+  callCount = callCount + 1;
+};
+
+ref(42, ...[1], ...arr,);
+
+assert.sameValue(callCount, 1, 'function invoked exactly once');
diff --git a/test/language/arguments-object/func-expr-args-trailing-comma-undefined.js b/test/language/arguments-object/func-expr-args-trailing-comma-undefined.js
index 66e01cc6c1a607cf1f81a2f81c54baa5447f781f..7bf644a2e8505985cbec32f08410aa03ca130a38 100644
--- a/test/language/arguments-object/func-expr-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/func-expr-args-trailing-comma-undefined.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-func-decl-args-trailing-comma-multiple.js b/test/language/arguments-object/gen-func-decl-args-trailing-comma-multiple.js
index b73ad96bf1a2512561f90d390b62b7778e7aa382..733b493a5a2d46811e3da3de280f3286119a56f8 100644
--- a/test/language/arguments-object/gen-func-decl-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/gen-func-decl-args-trailing-comma-multiple.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-func-decl-args-trailing-comma-null.js b/test/language/arguments-object/gen-func-decl-args-trailing-comma-null.js
index c252c630facb138d0d2ef4ddb812e5d1cad447e5..f5d20ba1d33a1513de0629ed37ae4b408160283b 100644
--- a/test/language/arguments-object/gen-func-decl-args-trailing-comma-null.js
+++ b/test/language/arguments-object/gen-func-decl-args-trailing-comma-null.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-func-decl-args-trailing-comma-single-args.js b/test/language/arguments-object/gen-func-decl-args-trailing-comma-single-args.js
index 7f328db1d60d499d711c7b61972945fb2ac9eb30..445f5cb3560da640d302770e8a2fcbebb91ca082 100644
--- a/test/language/arguments-object/gen-func-decl-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/gen-func-decl-args-trailing-comma-single-args.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-func-decl-args-trailing-comma-spread-operator.js b/test/language/arguments-object/gen-func-decl-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..e79d5758591b0520e3d362509cf663af5ce3b007
--- /dev/null
+++ b/test/language/arguments-object/gen-func-decl-args-trailing-comma-spread-operator.js
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/gen-func-decl.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (generator function declaration)
+esid: sec-arguments-exotic-objects
+features: [generators]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+// Stores a reference `ref` for case evaluation
+function* ref() {
+  assert.sameValue(arguments.length, 4);
+  assert.sameValue(arguments[0], 42);
+  assert.sameValue(arguments[1], 1);
+  assert.sameValue(arguments[2], 2);
+  assert.sameValue(arguments[3], 3);
+  callCount = callCount + 1;
+}
+
+ref(42, ...[1], ...arr,).next();
+
+assert.sameValue(callCount, 1, 'generator function invoked exactly once');
diff --git a/test/language/arguments-object/gen-func-decl-args-trailing-comma-undefined.js b/test/language/arguments-object/gen-func-decl-args-trailing-comma-undefined.js
index 61582fcbec23e4d19f28866b2219c2fd98766c1f..acd5c905a91d0614e57993040a3985efe9b95144 100644
--- a/test/language/arguments-object/gen-func-decl-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/gen-func-decl-args-trailing-comma-undefined.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-func-expr-args-trailing-comma-multiple.js b/test/language/arguments-object/gen-func-expr-args-trailing-comma-multiple.js
index c232b3da19623e8ff5f22a42bc4664c42f249f2f..c4be7c1cb85a65e9f521857b3929d598931bd1f8 100644
--- a/test/language/arguments-object/gen-func-expr-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/gen-func-expr-args-trailing-comma-multiple.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-func-expr-args-trailing-comma-null.js b/test/language/arguments-object/gen-func-expr-args-trailing-comma-null.js
index 6b2e6fa82eef10c1b506b4c43dd54d352ce9fb18..677074fc76f3745502cc9a6dceab0f48b1923ebe 100644
--- a/test/language/arguments-object/gen-func-expr-args-trailing-comma-null.js
+++ b/test/language/arguments-object/gen-func-expr-args-trailing-comma-null.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-func-expr-args-trailing-comma-single-args.js b/test/language/arguments-object/gen-func-expr-args-trailing-comma-single-args.js
index 716b6adcce16d2198df6eecd973ae2167d33f48c..33257606d6e16296080f13c463a216f922cd01a9 100644
--- a/test/language/arguments-object/gen-func-expr-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/gen-func-expr-args-trailing-comma-single-args.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-func-expr-args-trailing-comma-spread-operator.js b/test/language/arguments-object/gen-func-expr-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..a267f22dc5d312c15a45db391e07812d6da9abe2
--- /dev/null
+++ b/test/language/arguments-object/gen-func-expr-args-trailing-comma-spread-operator.js
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/gen-func-expr.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (generator function expression)
+esid: sec-arguments-exotic-objects
+features: [generators]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+// Stores a reference `ref` for case evaluation
+var ref;
+ref = function*() {
+  assert.sameValue(arguments.length, 4);
+  assert.sameValue(arguments[0], 42);
+  assert.sameValue(arguments[1], 1);
+  assert.sameValue(arguments[2], 2);
+  assert.sameValue(arguments[3], 3);
+  callCount = callCount + 1;
+};
+
+ref(42, ...[1], ...arr,).next();
+
+assert.sameValue(callCount, 1, 'generator function invoked exactly once');
diff --git a/test/language/arguments-object/gen-func-expr-args-trailing-comma-undefined.js b/test/language/arguments-object/gen-func-expr-args-trailing-comma-undefined.js
index 05bb70f7a7f3422d5c1027bc5f251d0270f1f033..c4d2fee97571fc608d9b310e5e71396f00e57feb 100644
--- a/test/language/arguments-object/gen-func-expr-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/gen-func-expr-args-trailing-comma-undefined.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-meth-args-trailing-comma-multiple.js b/test/language/arguments-object/gen-meth-args-trailing-comma-multiple.js
index 8450db74383f74abdf00e02531a17660585eea19..1f447b823d00fd7663486035da18671a46e97fe9 100644
--- a/test/language/arguments-object/gen-meth-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/gen-meth-args-trailing-comma-multiple.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-meth-args-trailing-comma-null.js b/test/language/arguments-object/gen-meth-args-trailing-comma-null.js
index c908637d24c2941d9091553381b984c93de0c6f2..36e6770980a599389cfa1b540500037db1f49aa1 100644
--- a/test/language/arguments-object/gen-meth-args-trailing-comma-null.js
+++ b/test/language/arguments-object/gen-meth-args-trailing-comma-null.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-meth-args-trailing-comma-single-args.js b/test/language/arguments-object/gen-meth-args-trailing-comma-single-args.js
index 4b0be137b845d8e2d062317ec0ac2902562a57a1..eb369b62740aac013ea491feeef47ddc545955eb 100644
--- a/test/language/arguments-object/gen-meth-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/gen-meth-args-trailing-comma-single-args.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/gen-meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/gen-meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..c6973097aea8e40cd76757cca6c6a2bc6e154989
--- /dev/null
+++ b/test/language/arguments-object/gen-meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/gen-meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (generator method)
+esid: sec-arguments-exotic-objects
+features: [generators]
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var obj = {
+  *method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+};
+
+obj.method(42, ...[1], ...arr,).next();
+
+// Stores a reference `ref` for case evaluation
+var ref = obj.method;
+
+assert.sameValue(callCount, 1, 'generator method invoked exactly once');
diff --git a/test/language/arguments-object/gen-meth-args-trailing-comma-undefined.js b/test/language/arguments-object/gen-meth-args-trailing-comma-undefined.js
index 16a8223c65d5326e77ebb7fd65eb9d6554c88177..20d1a4acf4083a653087384532553573612afd4c 100644
--- a/test/language/arguments-object/gen-meth-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/gen-meth-args-trailing-comma-undefined.js
@@ -16,9 +16,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/meth-args-trailing-comma-multiple.js b/test/language/arguments-object/meth-args-trailing-comma-multiple.js
index 61870a87e9d23eb4ca2ecf77eb89a209e915c48b..b922d2f39c6de4752ae671d19f8629d0aff4d350 100644
--- a/test/language/arguments-object/meth-args-trailing-comma-multiple.js
+++ b/test/language/arguments-object/meth-args-trailing-comma-multiple.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/meth-args-trailing-comma-null.js b/test/language/arguments-object/meth-args-trailing-comma-null.js
index 27c6ca0ff4b24c2962a7349d5551ceae741de83e..6606883f378a6dc32d556b64e65314b1f7c56a31 100644
--- a/test/language/arguments-object/meth-args-trailing-comma-null.js
+++ b/test/language/arguments-object/meth-args-trailing-comma-null.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/meth-args-trailing-comma-single-args.js b/test/language/arguments-object/meth-args-trailing-comma-single-args.js
index 039e1e19f915a4e8e690b9878c07aa056fdb8a88..7299f005b3747d5a8ec5956b74e2e14182491d7f 100644
--- a/test/language/arguments-object/meth-args-trailing-comma-single-args.js
+++ b/test/language/arguments-object/meth-args-trailing-comma-single-args.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/
 
 
diff --git a/test/language/arguments-object/meth-args-trailing-comma-spread-operator.js b/test/language/arguments-object/meth-args-trailing-comma-spread-operator.js
new file mode 100644
index 0000000000000000000000000000000000000000..79eb6cafa1690651b65c378635e3df3ef493e0eb
--- /dev/null
+++ b/test/language/arguments-object/meth-args-trailing-comma-spread-operator.js
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/arguments/args-trailing-comma-spread-operator.case
+// - src/arguments/default/meth.template
+/*---
+description: A trailing comma should not increase the arguments.length, using spread args (method)
+esid: sec-arguments-exotic-objects
+flags: [generated]
+info: |
+    9.4.4 Arguments Exotic Objects
+
+    Most ECMAScript functions make an arguments object available to their code. Depending upon the
+    characteristics of the function definition, its arguments object is either an ordinary object
+    or an arguments exotic object.
+
+    Trailing comma in the arguments list
+
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
+---*/
+var arr = [2, 3];
+
+
+
+var callCount = 0;
+var obj = {
+  method() {
+    assert.sameValue(arguments.length, 4);
+    assert.sameValue(arguments[0], 42);
+    assert.sameValue(arguments[1], 1);
+    assert.sameValue(arguments[2], 2);
+    assert.sameValue(arguments[3], 3);
+    callCount = callCount + 1;
+  }
+};
+
+obj.method(42, ...[1], ...arr,);
+
+// Stores a reference `ref` for case evaluation
+var ref = obj.method;
+
+assert.sameValue(callCount, 1, 'method invoked exactly once');
diff --git a/test/language/arguments-object/meth-args-trailing-comma-undefined.js b/test/language/arguments-object/meth-args-trailing-comma-undefined.js
index 6b9bf88ea4bad824bc4f6df3456c1cf28c9ea0f2..5387e94596580367a5d572d05834ee7a47c10389 100644
--- a/test/language/arguments-object/meth-args-trailing-comma-undefined.js
+++ b/test/language/arguments-object/meth-args-trailing-comma-undefined.js
@@ -14,9 +14,18 @@ info: |
 
     Trailing comma in the arguments list
 
-    12.3 Left-Hand-Side Expressions
-
-    Arguments[Yield, Await] : ( ArgumentList[?Yield, ?Await] , )
+    Left-Hand-Side Expressions
+
+    Arguments :
+        ( )
+        ( ArgumentList )
+        ( ArgumentList , )
+
+    ArgumentList :
+        AssignmentExpression
+        ... AssignmentExpression
+        ArgumentList , AssignmentExpression
+        ArgumentList , ... AssignmentExpression
 ---*/