From fd3510dd16da0034fa9b31785ed5dccdef1e36ba Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Fri, 19 May 2017 12:28:38 -0400
Subject: [PATCH 1/6] Move async-iteration specific dstr-assignment templates
 into own src directory

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
---
 .../ary-init-iter-close.case                  | 37 +++++++++++++
 .../ary-init-iter-get-err.case                | 26 +++++++++
 .../ary-init-iter-no-close.case               | 37 +++++++++++++
 .../ary-name-iter-val.case                    | 35 ++++++++++++
 .../ary-ptrn-elem-ary-elem-init.case          | 27 +++++++++
 .../ary-ptrn-elem-ary-elem-iter.case          | 28 ++++++++++
 .../ary-ptrn-elem-ary-elision-init.case       | 35 ++++++++++++
 .../ary-ptrn-elem-ary-elision-iter.case       | 32 +++++++++++
 .../ary-ptrn-elem-ary-empty-init.case         | 30 ++++++++++
 .../ary-ptrn-elem-ary-empty-iter.case         | 28 ++++++++++
 .../ary-ptrn-elem-ary-rest-init.case          | 32 +++++++++++
 .../ary-ptrn-elem-ary-rest-iter.case          | 35 ++++++++++++
 .../ary-ptrn-elem-ary-val-null.case           | 32 +++++++++++
 .../ary-ptrn-elem-id-init-exhausted.case      | 26 +++++++++
 .../ary-ptrn-elem-id-init-fn-name-arrow.case  | 27 +++++++++
 .../ary-ptrn-elem-id-init-fn-name-class.case  | 29 ++++++++++
 .../ary-ptrn-elem-id-init-fn-name-cover.case  | 28 ++++++++++
 .../ary-ptrn-elem-id-init-fn-name-fn.case     | 28 ++++++++++
 .../ary-ptrn-elem-id-init-fn-name-gen.case    | 28 ++++++++++
 .../ary-ptrn-elem-id-init-hole.case           | 26 +++++++++
 .../ary-ptrn-elem-id-init-skipped.case        | 32 +++++++++++
 .../ary-ptrn-elem-id-init-throws.case         | 23 ++++++++
 .../ary-ptrn-elem-id-init-undef.case          | 25 +++++++++
 .../ary-ptrn-elem-id-init-unresolvable.case   | 30 ++++++++++
 .../ary-ptrn-elem-id-iter-complete.case       | 29 ++++++++++
 .../ary-ptrn-elem-id-iter-done.case           | 24 ++++++++
 .../ary-ptrn-elem-id-iter-step-err.case       | 32 +++++++++++
 .../ary-ptrn-elem-id-iter-val-err.case        | 43 +++++++++++++++
 .../ary-ptrn-elem-id-iter-val.case            | 35 ++++++++++++
 .../ary-ptrn-elem-obj-id-init.case            | 27 +++++++++
 .../ary-ptrn-elem-obj-id.case                 | 27 +++++++++
 .../ary-ptrn-elem-obj-prop-id-init.case       | 37 +++++++++++++
 .../ary-ptrn-elem-obj-prop-id.case            | 37 +++++++++++++
 .../ary-ptrn-elem-obj-val-null.case           | 32 +++++++++++
 .../ary-ptrn-elem-obj-val-undef.case          | 32 +++++++++++
 .../ary-ptrn-elision-exhausted.case           | 31 +++++++++++
 .../ary-ptrn-elision-iter-close.case          | 21 +++++++
 .../ary-ptrn-elision-step-err.case            | 37 +++++++++++++
 .../ary-ptrn-elision.case                     | 42 ++++++++++++++
 .../ary-ptrn-empty.case                       | 25 +++++++++
 .../ary-ptrn-rest-ary-elem.case               | 48 ++++++++++++++++
 .../ary-ptrn-rest-ary-elision.case            | 55 +++++++++++++++++++
 .../ary-ptrn-rest-ary-empty.case              | 38 +++++++++++++
 .../ary-ptrn-rest-ary-rest.case               | 34 ++++++++++++
 .../ary-ptrn-rest-id-elision-next-err.case    | 28 ++++++++++
 .../ary-ptrn-rest-id-elision.case             | 32 +++++++++++
 .../ary-ptrn-rest-id-exhausted.case           | 30 ++++++++++
 .../ary-ptrn-rest-id-iter-close.case          | 21 +++++++
 .../ary-ptrn-rest-id-iter-step-err.case       | 38 +++++++++++++
 .../ary-ptrn-rest-id-iter-val-err.case        | 44 +++++++++++++++
 .../ary-ptrn-rest-id.case                     | 32 +++++++++++
 .../ary-ptrn-rest-init-ary.case               | 21 +++++++
 .../ary-ptrn-rest-init-id.case                | 21 +++++++
 .../ary-ptrn-rest-init-obj.case               | 21 +++++++
 .../ary-ptrn-rest-not-final-ary.case          | 21 +++++++
 .../ary-ptrn-rest-not-final-id.case           | 21 +++++++
 .../ary-ptrn-rest-not-final-obj.case          | 21 +++++++
 .../ary-ptrn-rest-obj-id.case                 | 26 +++++++++
 .../ary-ptrn-rest-obj-prop-id.case            | 34 ++++++++++++
 ...r-await-of-async-func-const-async.template |  0
 .../for-await-of-async-func-const.template    |  0
 ...for-await-of-async-func-let-async.template |  0
 .../for-await-of-async-func-let.template      |  0
 ...for-await-of-async-func-var-async.template |  0
 .../for-await-of-async-func-var.template      |  0
 ...or-await-of-async-gen-const-async.template |  0
 .../for-await-of-async-gen-const.template     |  0
 .../for-await-of-async-gen-let-async.template |  0
 .../for-await-of-async-gen-let.template       |  0
 .../for-await-of-async-gen-var-async.template |  0
 .../for-await-of-async-gen-var.template       |  0
 .../for-await-of-async-func-const.template    |  0
 .../for-await-of-async-func-let.template      |  0
 .../for-await-of-async-func-var.template      |  0
 .../for-await-of-async-gen-const.template     |  0
 .../error/for-await-of-async-gen-let.template |  0
 .../error/for-await-of-async-gen-var.template |  0
 .../for-await-of-async-func-const.template    |  0
 .../for-await-of-async-func-let.template      |  0
 .../for-await-of-async-func-var.template      |  0
 .../for-await-of-async-gen-const.template     |  0
 .../for-await-of-async-gen-let.template       |  0
 .../for-await-of-async-gen-var.template       |  0
 .../obj-init-null.case                        | 19 +++++++
 .../obj-init-undefined.case                   | 19 +++++++
 .../obj-ptrn-empty.case                       | 26 +++++++++
 .../obj-ptrn-id-get-value-err.case            | 27 +++++++++
 .../obj-ptrn-id-init-fn-name-arrow.case       | 26 +++++++++
 .../obj-ptrn-id-init-fn-name-class.case       | 28 ++++++++++
 .../obj-ptrn-id-init-fn-name-cover.case       | 27 +++++++++
 .../obj-ptrn-id-init-fn-name-fn.case          | 27 +++++++++
 .../obj-ptrn-id-init-fn-name-gen.case         | 27 +++++++++
 .../obj-ptrn-id-init-skipped.case             | 31 +++++++++++
 .../obj-ptrn-id-init-throws.case              | 27 +++++++++
 .../obj-ptrn-id-init-unresolvable.case        | 30 ++++++++++
 .../obj-ptrn-id-trailing-comma.case           | 20 +++++++
 .../obj-ptrn-list-err.case                    | 26 +++++++++
 .../obj-ptrn-prop-ary-init.case               | 29 ++++++++++
 .../obj-ptrn-prop-ary-trailing-comma.case     | 20 +++++++
 .../obj-ptrn-prop-ary-value-null.case         | 21 +++++++
 .../obj-ptrn-prop-ary.case                    | 27 +++++++++
 .../obj-ptrn-prop-eval-err.case               | 24 ++++++++
 .../obj-ptrn-prop-id-get-value-err.case       | 27 +++++++++
 .../obj-ptrn-prop-id-init-skipped.case        | 43 +++++++++++++++
 .../obj-ptrn-prop-id-init-throws.case         | 27 +++++++++
 .../obj-ptrn-prop-id-init-unresolvable.case   | 30 ++++++++++
 .../obj-ptrn-prop-id-init.case                | 23 ++++++++
 .../obj-ptrn-prop-id-trailing-comma.case      | 24 ++++++++
 .../obj-ptrn-prop-id.case                     | 23 ++++++++
 .../obj-ptrn-prop-obj-init.case               | 29 ++++++++++
 .../obj-ptrn-prop-obj-value-null.case         | 21 +++++++
 .../obj-ptrn-prop-obj-value-undef.case        | 21 +++++++
 .../obj-ptrn-prop-obj.case                    | 27 +++++++++
 .../obj-ptrn-rest-getter.case                 | 26 +++++++++
 .../obj-ptrn-rest-nested-obj.case             | 25 +++++++++
 .../obj-ptrn-rest-obj-nested-rest.case        | 34 ++++++++++++
 .../obj-ptrn-rest-obj-own-property.case       | 24 ++++++++
 .../obj-ptrn-rest-skip-non-enumerable.case    | 32 +++++++++++
 .../obj-ptrn-rest-val-obj.case                | 30 ++++++++++
 119 files changed, 2760 insertions(+)
 create mode 100644 src/dstr-binding-async-iteration/ary-init-iter-close.case
 create mode 100644 src/dstr-binding-async-iteration/ary-init-iter-get-err.case
 create mode 100644 src/dstr-binding-async-iteration/ary-init-iter-no-close.case
 create mode 100644 src/dstr-binding-async-iteration/ary-name-iter-val.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elision-iter-close.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-elision.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-empty.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-close.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-id.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case
 create mode 100644 src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-func-const-async.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-func-const.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-func-let-async.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-func-let.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-func-var-async.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-func-var.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-gen-const-async.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-gen-const.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-gen-let-async.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-gen-let.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-gen-var-async.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/default/for-await-of-async-gen-var.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/error/for-await-of-async-func-const.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/error/for-await-of-async-func-let.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/error/for-await-of-async-func-var.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/error/for-await-of-async-gen-const.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/error/for-await-of-async-gen-let.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/error/for-await-of-async-gen-var.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/iter-close/for-await-of-async-func-const.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/iter-close/for-await-of-async-func-let.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/iter-close/for-await-of-async-func-var.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/iter-close/for-await-of-async-gen-const.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/iter-close/for-await-of-async-gen-let.template (100%)
 rename src/{dstr-binding => dstr-binding-async-iteration}/iter-close/for-await-of-async-gen-var.template (100%)
 create mode 100644 src/dstr-binding-async-iteration/obj-init-null.case
 create mode 100644 src/dstr-binding-async-iteration/obj-init-undefined.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-empty.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-list-err.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-rest-getter.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-rest-nested-obj.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-rest-obj-nested-rest.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-rest-obj-own-property.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-rest-skip-non-enumerable.case
 create mode 100644 src/dstr-binding-async-iteration/obj-ptrn-rest-val-obj.case

diff --git a/src/dstr-binding-async-iteration/ary-init-iter-close.case b/src/dstr-binding-async-iteration/ary-init-iter-close.case
new file mode 100644
index 0000000000..ab18446305
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-init-iter-close.case
@@ -0,0 +1,37 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Iterator is closed when not exhausted by pattern evaluation
+template: default
+info: |
+    13.3.3.5 Runtime Semantics: BindingInitialization
+
+    BindingPattern : ArrayBindingPattern
+
+    [...]
+    4. If iteratorRecord.[[done]] is false, return ? IteratorClose(iterator,
+       result).
+    [...]
+features: [Symbol.iterator]
+---*/
+
+//- setup
+var doneCallCount = 0;
+var iter = {};
+iter[Symbol.iterator] = function() {
+  return {
+    next: function() {
+      return { value: null, done: false };
+    },
+    return: function() {
+      doneCallCount += 1;
+      return {};
+    }
+  };
+};
+//- elems
+[x]
+//- vals
+iter
+//- body
+assert.sameValue(doneCallCount, 1);
diff --git a/src/dstr-binding-async-iteration/ary-init-iter-get-err.case b/src/dstr-binding-async-iteration/ary-init-iter-get-err.case
new file mode 100644
index 0000000000..3fd5f5c99e
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-init-iter-get-err.case
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Abrupt completion returned by GetIterator
+template: error
+info: |
+    13.3.3.5 Runtime Semantics: BindingInitialization
+
+    BindingPattern : ArrayBindingPattern
+
+    1. Let iterator be GetIterator(value).
+    2. ReturnIfAbrupt(iterator).
+features: [Symbol.iterator]
+---*/
+
+//- setup
+var iter = {};
+iter[Symbol.iterator] = function() {
+  throw new Test262Error();
+};
+//- elems
+[x]
+//- vals
+iter
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/ary-init-iter-no-close.case b/src/dstr-binding-async-iteration/ary-init-iter-no-close.case
new file mode 100644
index 0000000000..b9277b1234
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-init-iter-no-close.case
@@ -0,0 +1,37 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Iterator is not closed when exhausted by pattern evaluation
+template: default
+info: |
+    13.3.3.5 Runtime Semantics: BindingInitialization
+
+    BindingPattern : ArrayBindingPattern
+
+    [...]
+    4. If iteratorRecord.[[done]] is false, return ? IteratorClose(iterator,
+       result).
+    [...]
+features: [Symbol.iterator]
+---*/
+
+//- setup
+var doneCallCount = 0;
+var iter = {};
+iter[Symbol.iterator] = function() {
+  return {
+    next: function() {
+      return { value: null, done: true };
+    },
+    return: function() {
+      doneCallCount += 1;
+      return {};
+    }
+  };
+};
+//- elems
+[x]
+//- vals
+iter
+//- body
+assert.sameValue(doneCallCount, 0);
diff --git a/src/dstr-binding-async-iteration/ary-name-iter-val.case b/src/dstr-binding-async-iteration/ary-name-iter-val.case
new file mode 100644
index 0000000000..8c65a0868f
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-name-iter-val.case
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding with normal value iteration
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    4. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
+       c. ReturnIfAbrupt(next).
+       d. If next is false, set iteratorRecord.[[done]] to true.
+       e. Else,
+          [...]
+          i. Let v be IteratorValue(next).
+          ii. If v is an abrupt completion, set
+              iteratorRecord.[[done]] to true.
+          iii. ReturnIfAbrupt(v).
+    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    [...]
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[x, y, z]
+//- vals
+[1, 2, 3]
+//- body
+assert.sameValue(x, 1);
+assert.sameValue(y, 2);
+assert.sameValue(z, 3);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
new file mode 100644
index 0000000000..15df36937e
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with array binding pattern and initializer is used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    [...]
+    2. If iteratorRecord.[[done]] is true, let v be undefined.
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be ? GetValue(defaultValue).
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- elems
+[[x, y, z] = [4, 5, 6]]
+//- vals
+[]
+//- body
+assert.sameValue(x, 4);
+assert.sameValue(y, 5);
+assert.sameValue(z, 6);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
new file mode 100644
index 0000000000..b3668d6180
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with array binding pattern and initializer is not used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    1. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       [...]
+       e. Else,
+          i. Let v be IteratorValue(next).
+          [...]
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- elems
+[[x, y, z] = [4, 5, 6]]
+//- vals
+[[7, 8, 9]]
+//- body
+assert.sameValue(x, 7);
+assert.sameValue(y, 8);
+assert.sameValue(z, 9);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
new file mode 100644
index 0000000000..49933f6364
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with array binding pattern and initializer is used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    [...]
+    2. If iteratorRecord.[[done]] is true, let v be undefined.
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be ? GetValue(defaultValue).
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+features: [generators]
+---*/
+
+//- setup
+var first = 0;
+var second = 0;
+function* g() {
+  first += 1;
+  yield;
+  second += 1;
+};
+//- elems
+[[,] = g()]
+//- vals
+[]
+//- body
+assert.sameValue(first, 1);
+assert.sameValue(second, 0);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
new file mode 100644
index 0000000000..47da0accc9
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with array binding pattern and initializer is not used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    1. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       [...]
+       e. Else,
+          i. Let v be IteratorValue(next).
+          [...]
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+features: [generators]
+---*/
+
+//- setup
+var callCount = 0;
+function* g() {
+  callCount += 1;
+};
+//- elems
+[[,] = g()]
+//- vals
+[[]]
+//- body
+assert.sameValue(callCount, 0);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
new file mode 100644
index 0000000000..df0c90fdb5
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with array binding pattern and initializer is used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    [...]
+    2. If iteratorRecord.[[done]] is true, let v be undefined.
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be ? GetValue(defaultValue).
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- setup
+var initCount = 0;
+var iterCount = 0;
+var iter = function*() { iterCount += 1; }();
+//- elems
+[[] = function() { initCount += 1; return iter; }()]
+//- vals
+[]
+//- body
+assert.sameValue(initCount, 1);
+assert.sameValue(iterCount, 0);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
new file mode 100644
index 0000000000..b2c0aa1f59
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with array binding pattern and initializer is not used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    1. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       [...]
+       e. Else,
+          i. Let v be IteratorValue(next).
+          [...]
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- setup
+var initCount = 0;
+//- elems
+[[] = function() { initCount += 1; }()]
+//- vals
+[[23]]
+//- body
+assert.sameValue(initCount, 0);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
new file mode 100644
index 0000000000..18ac2bb211
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with array binding pattern and initializer is used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    [...]
+    2. If iteratorRecord.[[done]] is true, let v be undefined.
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be ? GetValue(defaultValue).
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- setup
+var values = [2, 1, 3];
+//- elems
+[[...x] = values]
+//- vals
+[]
+//- body
+assert(Array.isArray(x));
+assert.sameValue(x[0], 2);
+assert.sameValue(x[1], 1);
+assert.sameValue(x[2], 3);
+assert.sameValue(x.length, 3);
+assert.notSameValue(x, values);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
new file mode 100644
index 0000000000..63f77b64b3
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with array binding pattern and initializer is not used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    1. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       [...]
+       e. Else,
+          i. Let v be IteratorValue(next).
+          [...]
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- setup
+var values = [2, 1, 3];
+var initCount = 0;
+//- elems
+[[...x] = function() { initCount += 1; }()]
+//- vals
+[values]
+//- body
+assert(Array.isArray(x));
+assert.sameValue(x[0], 2);
+assert.sameValue(x[1], 1);
+assert.sameValue(x[2], 3);
+assert.sameValue(x.length, 3);
+assert.notSameValue(x, values);
+assert.sameValue(initCount, 0);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
new file mode 100644
index 0000000000..abe6ac4f3d
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Nested array destructuring with a null value
+template: error
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPattern Initializeropt
+
+    1. If iteratorRecord.[[done]] is false, then
+       [...]
+       e. Else
+          i. Let v be IteratorValue(next).
+          [...]
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+
+    13.3.3.5 Runtime Semantics: BindingInitialization
+
+    BindingPattern : ArrayBindingPattern
+
+    1. Let iterator be GetIterator(value).
+    2. ReturnIfAbrupt(iterator).
+---*/
+
+//- elems
+[[x]]
+//- vals
+[null]
+//- error
+TypeError
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
new file mode 100644
index 0000000000..fbd4ffa0ac
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer with an exhausted iterator
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       [...]
+    7. If environment is undefined, return PutValue(lhs, v).
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[x = 23]
+//- vals
+[]
+//- body
+assert.sameValue(x, 23);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
new file mode 100644
index 0000000000..0dda822299
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding does assign name to arrow functions
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          [...]
+    7. If environment is undefined, return PutValue(lhs, v).
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[arrow = () => {}]
+//- vals
+[]
+//- body
+assert.sameValue(arrow.name, 'arrow');
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
new file mode 100644
index 0000000000..fd129368d4
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
@@ -0,0 +1,29 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding assigns `name` to "anonymous" classes
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          [...]
+    7. If environment is undefined, return PutValue(lhs, v).
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]
+//- vals
+[]
+//- body
+assert.sameValue(cls.name, 'cls');
+assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
new file mode 100644
index 0000000000..40f16c07f2
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          [...]
+    7. If environment is undefined, return PutValue(lhs, v).
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[cover = (function () {}), xCover = (0, function() {})]
+//- vals
+[]
+//- body
+assert.sameValue(cover.name, 'cover');
+assert.notSameValue(xCover.name, 'xCover');
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
new file mode 100644
index 0000000000..d6b36ee6ac
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding assigns name to "anonymous" functions
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          [...]
+    7. If environment is undefined, return PutValue(lhs, v).
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[fn = function () {}, xFn = function x() {}]
+//- vals
+[]
+//- body
+assert.sameValue(fn.name, 'fn');
+assert.notSameValue(xFn.name, 'xFn');
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
new file mode 100644
index 0000000000..04587c07cd
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding assigns name to "anonymous" generator functions
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          [...]
+    7. If environment is undefined, return PutValue(lhs, v).
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[gen = function* () {}, xGen = function* x() {}]
+//- vals
+[]
+//- body
+assert.sameValue(gen.name, 'gen');
+assert.notSameValue(xGen.name, 'xGen');
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
new file mode 100644
index 0000000000..e34d9a1fd4
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer with a "hole"
+template: default
+info: >
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       [...]
+    7. If environment is undefined, return PutValue(lhs, v).
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[x = 23]
+//- vals
+[,]
+//- body
+assert.sameValue(x, 23);
+// another statement
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
new file mode 100644
index 0000000000..803289ac0e
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer is not evaluated when value is not `undefined`
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       [...]
+    7. If environment is undefined, return PutValue(lhs, v).
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- setup
+var initCount = 0;
+function counter() {
+  initCount += 1;
+}
+//- elems
+[w = counter(), x = counter(), y = counter(), z = counter()]
+//- vals
+[null, 0, false, '']
+//- body
+assert.sameValue(w, null);
+assert.sameValue(x, 0);
+assert.sameValue(y, false);
+assert.sameValue(z, '');
+assert.sameValue(initCount, 0);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
new file mode 100644
index 0000000000..2b05bf7cd5
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
@@ -0,0 +1,23 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer returns an abrupt completion
+template: error
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+---*/
+
+//- elems
+[x = (function() { throw new Test262Error(); })()]
+//- vals
+[undefined]
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
new file mode 100644
index 0000000000..1767bd23db
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
@@ -0,0 +1,25 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer with an undefined value
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       [...]
+    7. If environment is undefined, return PutValue(lhs, v).
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[x = 23]
+//- vals
+[undefined]
+//- body
+assert.sameValue(x, 23);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
new file mode 100644
index 0000000000..109063ea87
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer is an unresolvable reference
+template: error
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+
+    6.2.3.1 GetValue (V)
+
+    1. ReturnIfAbrupt(V).
+    2. If Type(V) is not Reference, return V.
+    3. Let base be GetBase(V).
+    4. If IsUnresolvableReference(V), throw a ReferenceError exception.
+---*/
+
+//- elems
+[ x = unresolvableReference ]
+//- vals
+[]
+//- error
+ReferenceError
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
new file mode 100644
index 0000000000..93f3588e1d
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
@@ -0,0 +1,29 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding when value iteration completes
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    4. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
+       c. ReturnIfAbrupt(next).
+       d. If next is false, set iteratorRecord.[[done]] to true.
+       e. Else,
+          [...]
+    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    [...]
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[x]
+//- vals
+[]
+//- body
+assert.sameValue(x, undefined);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
new file mode 100644
index 0000000000..745eb08019
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
@@ -0,0 +1,24 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding when value iteration was completed previously
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    4. If iteratorRecord.[[done]] is false, then
+       [...]
+    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    [...]
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[_, x]
+//- vals
+[]
+//- body
+assert.sameValue(x, undefined);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
new file mode 100644
index 0000000000..58feda2796
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Error forwarding when IteratorStep returns an abrupt completion
+template: error
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    4. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
+       c. ReturnIfAbrupt(next).
+---*/
+
+//- setup
+var g = {};
+g[Symbol.iterator] = function() {
+  return {
+    next: function() {
+      throw new Test262Error();
+    }
+  };
+};
+//- elems
+[x]
+//- vals
+g
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
new file mode 100644
index 0000000000..e52c52a93d
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
@@ -0,0 +1,43 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Error forwarding when IteratorValue returns an abrupt completion
+template: error
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    4. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
+       c. ReturnIfAbrupt(next).
+       d. If next is false, set iteratorRecord.[[done]] to true.
+       e. Else,
+          i. Let v be IteratorValue(next).
+          ii. If v is an abrupt completion, set iteratorRecord.[[done]] to
+              true.
+          iii. ReturnIfAbrupt(v).
+---*/
+
+//- setup
+var poisonedValue = Object.defineProperty({}, 'value', {
+  get: function() {
+    throw new Test262Error();
+  }
+});
+var g = {};
+g[Symbol.iterator] = function() {
+  return {
+    next: function() {
+      return poisonedValue;
+    }
+  };
+};
+//- elems
+[x]
+//- vals
+g
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
new file mode 100644
index 0000000000..20a3e47ba4
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding when value iteration was completed previously
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    4. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
+       c. ReturnIfAbrupt(next).
+       d. If next is false, set iteratorRecord.[[done]] to true.
+       e. Else,
+          [...]
+          i. Let v be IteratorValue(next).
+          ii. If v is an abrupt completion, set
+              iteratorRecord.[[done]] to true.
+          iii. ReturnIfAbrupt(v).
+    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    [...]
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[x, y, z]
+//- vals
+[1, 2, 3]
+//- body
+assert.sameValue(x, 1);
+assert.sameValue(y, 2);
+assert.sameValue(z, 3);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
new file mode 100644
index 0000000000..2133fc1fc3
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with object binding pattern and initializer is used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    [...]
+    2. If iteratorRecord.[[done]] is true, let v be undefined.
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be ? GetValue(defaultValue).
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- elems
+[{ x, y, z } = { x: 44, y: 55, z: 66 }]
+//- vals
+[]
+//- body
+assert.sameValue(x, 44);
+assert.sameValue(y, 55);
+assert.sameValue(z, 66);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
new file mode 100644
index 0000000000..a8cf157efc
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with object binding pattern and initializer is not used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    [...]
+    2. If iteratorRecord.[[done]] is true, let v be undefined.
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be ? GetValue(defaultValue).
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- elems
+[{ x, y, z } = { x: 44, y: 55, z: 66 }]
+//- vals
+[{ x: 11, y: 22, z: 33 }]
+//- body
+assert.sameValue(x, 11);
+assert.sameValue(y, 22);
+assert.sameValue(z, 33);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
new file mode 100644
index 0000000000..1ad7f3a6ca
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
@@ -0,0 +1,37 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with object binding pattern and initializer is used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    [...]
+    2. If iteratorRecord.[[done]] is true, let v be undefined.
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be ? GetValue(defaultValue).
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- elems
+[{ u: v, w: x, y: z } = { u: 444, w: 555, y: 666 }]
+//- vals
+[]
+//- body
+assert.sameValue(v, 444);
+assert.sameValue(x, 555);
+assert.sameValue(z, 666);
+
+assert.throws(ReferenceError, function() {
+  u;
+});
+assert.throws(ReferenceError, function() {
+  w;
+});
+assert.throws(ReferenceError, function() {
+  y;
+});
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
new file mode 100644
index 0000000000..8517cae5d7
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
@@ -0,0 +1,37 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: BindingElement with object binding pattern and initializer is not used
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPatternInitializer opt
+
+    [...]
+    2. If iteratorRecord.[[done]] is true, let v be undefined.
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be ? GetValue(defaultValue).
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+---*/
+
+//- elems
+[{ u: v, w: x, y: z } = { u: 444, w: 555, y: 666 }]
+//- vals
+[{ u: 777, w: 888, y: 999 }]
+//- body
+assert.sameValue(v, 777);
+assert.sameValue(x, 888);
+assert.sameValue(z, 999);
+
+assert.throws(ReferenceError, function() {
+  u;
+});
+assert.throws(ReferenceError, function() {
+  w;
+});
+assert.throws(ReferenceError, function() {
+  y;
+});
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
new file mode 100644
index 0000000000..9f15b25aae
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Nested object destructuring with a null value
+template: error
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPattern Initializeropt
+
+    1. If iteratorRecord.[[done]] is false, then
+       [...]
+       e. Else
+          i. Let v be IteratorValue(next).
+          [...]
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+
+    13.3.3.5 Runtime Semantics: BindingInitialization
+
+    BindingPattern : ObjectBindingPattern
+
+    1. Let valid be RequireObjectCoercible(value).
+    2. ReturnIfAbrupt(valid).
+---*/
+
+//- elems
+[{ x }]
+//- vals
+[null]
+//- error
+TypeError
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
new file mode 100644
index 0000000000..1f0c3aa990
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Nested object destructuring with a value of `undefined`
+template: error
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingElement : BindingPattern Initializeropt
+
+    1. If iteratorRecord.[[done]] is false, then
+       [...]
+       e. Else
+          i. Let v be IteratorValue(next).
+          [...]
+    4. Return the result of performing BindingInitialization of BindingPattern
+       with v and environment as the arguments.
+
+    13.3.3.5 Runtime Semantics: BindingInitialization
+
+    BindingPattern : ObjectBindingPattern
+
+    1. Let valid be RequireObjectCoercible(value).
+    2. ReturnIfAbrupt(valid).
+---*/
+
+//- elems
+[{ x }]
+//- vals
+[]
+//- error
+TypeError
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case b/src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case
new file mode 100644
index 0000000000..1f3b1fd8e6
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Elision accepts exhausted iterator
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    ArrayBindingPattern : [ Elision ]
+
+    1. Return the result of performing
+       IteratorDestructuringAssignmentEvaluation of Elision with iteratorRecord
+       as the argument.
+
+    12.14.5.3 Runtime Semantics: IteratorDestructuringAssignmentEvaluation
+
+    Elision : ,
+
+    1. If iteratorRecord.[[done]] is false, then
+       [...]
+    2. Return NormalCompletion(empty).
+features: [generator]
+---*/
+
+//- setup
+var iter = function*() {}();
+iter.next();
+//- elems
+[,]
+//- vals
+iter
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision-iter-close.case b/src/dstr-binding-async-iteration/ary-ptrn-elision-iter-close.case
new file mode 100644
index 0000000000..18c0046a3a
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elision-iter-close.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+template: iter-close
+desc: >
+  The iterator is properly consumed by the destructuring pattern
+---*/
+
+//- setup
+const iter = (function* () {
+  yield;
+  yield;
+})();
+
+//- elems
+[,]
+//- iter
+iter
+//- assertions
+assert.sameValue(iter.next().done, true, 'iteration occurred as expected');
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case b/src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case
new file mode 100644
index 0000000000..7f0b3789f1
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case
@@ -0,0 +1,37 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Elision advances iterator and forwards abrupt completions
+template: error
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    ArrayBindingPattern : [ Elision ]
+
+    1. Return the result of performing
+       IteratorDestructuringAssignmentEvaluation of Elision with iteratorRecord
+       as the argument.
+
+    12.14.5.3 Runtime Semantics: IteratorDestructuringAssignmentEvaluation
+
+    Elision : ,
+
+    1. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
+       c. ReturnIfAbrupt(next).
+features: [generator]
+---*/
+
+//- setup
+var following = 0;
+var iter =function* () {
+  throw new Test262Error();
+  following += 1;
+}();
+//- elems
+[,]
+//- vals
+iter
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision.case b/src/dstr-binding-async-iteration/ary-ptrn-elision.case
new file mode 100644
index 0000000000..9784dea4f2
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elision.case
@@ -0,0 +1,42 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Elision advances iterator
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    ArrayBindingPattern : [ Elision ]
+
+    1. Return the result of performing
+       IteratorDestructuringAssignmentEvaluation of Elision with iteratorRecord
+       as the argument.
+
+    12.14.5.3 Runtime Semantics: IteratorDestructuringAssignmentEvaluation
+
+    Elision : ,
+
+    1. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
+       c. ReturnIfAbrupt(next).
+       d. If next is false, set iteratorRecord.[[done]] to true.
+    2. Return NormalCompletion(empty).
+features: [generator]
+---*/
+
+//- setup
+var first = 0;
+var second = 0;
+function* g() {
+  first += 1;
+  yield;
+  second += 1;
+};
+//- elems
+[,]
+//- vals
+g()
+//- body
+assert.sameValue(first, 1);
+assert.sameValue(second, 0);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-empty.case b/src/dstr-binding-async-iteration/ary-ptrn-empty.case
new file mode 100644
index 0000000000..49b126c225
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-empty.case
@@ -0,0 +1,25 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: No iteration occurs for an "empty" array binding pattern
+template: default
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    ArrayBindingPattern : [ ]
+
+    1. Return NormalCompletion(empty).
+features: [generators]
+---*/
+
+//- setup
+var iterations = 0;
+var iter = function*() {
+  iterations += 1;
+}();
+//- elems
+[]
+//- vals
+iter
+//- body
+assert.sameValue(iterations, 0);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
new file mode 100644
index 0000000000..a143fdf1d9
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
@@ -0,0 +1,48 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element containing an array BindingElementList pattern
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingPattern
+
+    1. Let A be ArrayCreate(0).
+    [...]
+    3. Repeat
+       [...]
+       b. If iteratorRecord.[[done]] is true, then
+          i. Return the result of performing BindingInitialization of
+             BindingPattern with A and environment as the arguments.
+       [...]
+
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    4. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
+       c. ReturnIfAbrupt(next).
+       d. If next is false, set iteratorRecord.[[done]] to true.
+       e. Else,
+          [...]
+          i. Let v be IteratorValue(next).
+          ii. If v is an abrupt completion, set
+              iteratorRecord.[[done]] to true.
+          iii. ReturnIfAbrupt(v).
+    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    [...]
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+[...[x, y, z]]
+//- vals
+[3, 4, 5]
+//- body
+assert.sameValue(x, 3);
+assert.sameValue(y, 4);
+assert.sameValue(z, 5);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case
new file mode 100644
index 0000000000..dc6b008a6d
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case
@@ -0,0 +1,55 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element containing an elision
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingPattern
+
+    1. Let A be ArrayCreate(0).
+    [...]
+    3. Repeat
+       [...]
+       b. If iteratorRecord.[[done]] is true, then
+          i. Return the result of performing BindingInitialization of
+             BindingPattern with A and environment as the arguments.
+       [...]
+
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    ArrayBindingPattern : [ Elision ]
+
+    1. Return the result of performing
+       IteratorDestructuringAssignmentEvaluation of Elision with iteratorRecord
+       as the argument.
+
+    12.14.5.3 Runtime Semantics: IteratorDestructuringAssignmentEvaluation
+
+    Elision : ,
+
+    1. If iteratorRecord.[[done]] is false, then
+       a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+       b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
+       c. ReturnIfAbrupt(next).
+       d. If next is false, set iteratorRecord.[[done]] to true.
+    2. Return NormalCompletion(empty).
+features: [generators]
+---*/
+
+//- setup
+var first = 0;
+var second = 0;
+function* g() {
+  first += 1;
+  yield;
+  second += 1;
+};
+//- elems
+[...[,]]
+//- vals
+g()
+//- body
+assert.sameValue(first, 1);
+assert.sameValue(second, 1);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case
new file mode 100644
index 0000000000..11994f9933
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case
@@ -0,0 +1,38 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element containing an "empty" array pattern
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingPattern
+
+    1. Let A be ArrayCreate(0).
+    [...]
+    3. Repeat
+       [...]
+       b. If iteratorRecord.[[done]] is true, then
+          i. Return the result of performing BindingInitialization of
+             BindingPattern with A and environment as the arguments.
+       [...]
+
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    ArrayBindingPattern : [ ]
+
+    1. Return NormalCompletion(empty).
+features: [generators]
+---*/
+
+//- setup
+var iterations = 0;
+var iter = function*() {
+  iterations += 1;
+}();
+//- elems
+[...[]]
+//- vals
+iter
+//- body
+assert.sameValue(iterations, 1);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case
new file mode 100644
index 0000000000..c794f9b447
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case
@@ -0,0 +1,34 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element containing a rest element
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingPattern
+
+    1. Let A be ArrayCreate(0).
+    [...]
+    3. Repeat
+       [...]
+       b. If iteratorRecord.[[done]] is true, then
+          i. Return the result of performing BindingInitialization of
+             BindingPattern with A and environment as the arguments.
+       [...]
+---*/
+
+//- setup
+var values = [1, 2, 3];
+//- elems
+[...[...x]]
+//- vals
+values
+//- body
+assert(Array.isArray(x));
+assert.sameValue(x.length, 3);
+assert.sameValue(x[0], 1);
+assert.sameValue(x[1], 2);
+assert.sameValue(x[2], 3);
+assert.notSameValue(x, values);
+
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case
new file mode 100644
index 0000000000..413ec04398
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Rest element following elision elements
+info: >
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    ArrayBindingPattern : [ Elisionopt BindingRestElement ]
+
+    1. If Elision is present, then
+       a. Let status be the result of performing
+          IteratorDestructuringAssignmentEvaluation of Elision with
+          iteratorRecord as the argument.
+       b. ReturnIfAbrupt(status).
+    2. Return the result of performing IteratorBindingInitialization for
+       BindingRestElement with iteratorRecord and environment as arguments.
+features: [generators]
+---*/
+
+//- setup
+var iter = (function*() { throw new Test262Error(); })();
+//- elems
+[, ...x]
+//- vals
+iter
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case
new file mode 100644
index 0000000000..49780b19dc
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element following elision elements
+info: >
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    ArrayBindingPattern : [ Elisionopt BindingRestElement ]
+
+    1. If Elision is present, then
+       a. Let status be the result of performing
+          IteratorDestructuringAssignmentEvaluation of Elision with
+          iteratorRecord as the argument.
+       b. ReturnIfAbrupt(status).
+    2. Return the result of performing IteratorBindingInitialization for
+       BindingRestElement with iteratorRecord and environment as arguments.
+---*/
+
+//- setup
+var values = [1, 2, 3, 4, 5];
+//- elems
+[ , , ...x]
+//- vals
+values
+//- body
+assert(Array.isArray(x));
+assert.sameValue(x.length, 3);
+assert.sameValue(x[0], 3);
+assert.sameValue(x[1], 4);
+assert.sameValue(x[2], 5);
+assert.notSameValue(x, values);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case
new file mode 100644
index 0000000000..1476e3cb96
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: RestElement applied to an exhausted iterator
+info: >
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingIdentifier
+
+    1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
+       environment).
+    2. ReturnIfAbrupt(lhs).
+    3. Let A be ArrayCreate(0).
+    4. Let n=0.
+    5. Repeat,
+       [...]
+       b. If iteratorRecord.[[done]] is true, then
+          i. If environment is undefined, return PutValue(lhs, A).
+          ii. Return InitializeReferencedBinding(lhs, A).
+features: [Symbol.iterator]
+---*/
+
+//- elems
+[, , ...x]
+//- vals
+[1, 2]
+//- body
+assert(Array.isArray(x));
+assert.sameValue(x.length, 0);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-close.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-close.case
new file mode 100644
index 0000000000..2127b9edaf
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-close.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+template: iter-close
+desc: >
+  The iterator is properly consumed by the destructuring pattern
+---*/
+
+//- setup
+const iter = (function* () {
+  yield;
+  yield;
+})();
+
+//- elems
+[...x]
+//- iter
+iter
+//- assertions
+assert.sameValue(iter.next().done, true, 'iteration occurred as expected');
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case
new file mode 100644
index 0000000000..1bb3bd0637
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case
@@ -0,0 +1,38 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Error forwarding when IteratorStep returns an abrupt completion
+info: >
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingIdentifier
+
+    1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
+       environment).
+    2. ReturnIfAbrupt(lhs).
+    3. Let A be ArrayCreate(0).
+    4. Let n=0.
+    5. Repeat,
+       a. If iteratorRecord.[[done]] is false,
+          i. Let next be IteratorStep(iteratorRecord.[[iterator]]).
+          ii. If next is an abrupt completion, set iteratorRecord.[[done]] to
+              true.
+          iii. ReturnIfAbrupt(next).
+features: [generators]
+---*/
+
+//- setup
+var first = 0;
+var second = 0;
+var iter = function*() {
+  first += 1;
+  throw new Test262Error();
+  second += 1;
+}();
+//- elems
+[...x]
+//- vals
+iter
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case
new file mode 100644
index 0000000000..b3fb42708b
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case
@@ -0,0 +1,44 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Error forwarding when IteratorValue returns an abrupt completion
+info: >
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingIdentifier
+
+    1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
+       environment).
+    2. ReturnIfAbrupt(lhs).
+    3. Let A be ArrayCreate(0).
+    4. Let n=0.
+    5. Repeat,
+       [...]
+       c. Let nextValue be IteratorValue(next).
+       d. If nextValue is an abrupt completion, set iteratorRecord.[[done]] to
+          true.
+       e. ReturnIfAbrupt(nextValue).
+features: [Symbol.iterator]
+---*/
+
+//- setup
+var poisonedValue = Object.defineProperty({}, 'value', {
+  get: function() {
+    throw new Test262Error();
+  }
+});
+var iter = {};
+iter[Symbol.iterator] = function() {
+  return {
+    next: function() {
+      return poisonedValue;
+    }
+  };
+};
+//- elems
+[...x]
+//- vals
+iter
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id.case
new file mode 100644
index 0000000000..1b0f446417
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Lone rest element
+info: >
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingIdentifier
+
+    [...]
+    3. Let A be ArrayCreate(0).
+    [...]
+    5. Repeat
+       [...]
+       f. Let status be CreateDataProperty(A, ToString (n), nextValue).
+       [...]
+---*/
+
+//- setup
+var values = [1, 2, 3];
+//- elems
+[...x]
+//- vals
+values
+//- body
+assert(Array.isArray(x));
+assert.sameValue(x.length, 3);
+assert.sameValue(x[0], 1);
+assert.sameValue(x[1], 2);
+assert.sameValue(x[2], 3);
+assert.notSameValue(x, values);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case
new file mode 100644
index 0000000000..ab359ad3f3
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Reset element (nested array pattern) does not support initializer
+negative:
+  phase: early
+  type: SyntaxError
+info: >
+    13.3.3 Destructuring Binding Patterns
+
+    ArrayBindingPattern[Yield] :
+        [ Elisionopt BindingRestElement[?Yield]opt ]
+        [ BindingElementList[?Yield] ]
+        [ BindingElementList[?Yield] , Elisionopt BindingRestElement[?Yield]opt ]
+---*/
+
+//- elems
+[...[ x ] = []]
+//- vals
+[]
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case
new file mode 100644
index 0000000000..e5ab514c08
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Reset element (identifier) does not support initializer
+negative:
+  phase: early
+  type: SyntaxError
+info: >
+    13.3.3 Destructuring Binding Patterns
+
+    ArrayBindingPattern[Yield] :
+        [ Elisionopt BindingRestElement[?Yield]opt ]
+        [ BindingElementList[?Yield] ]
+        [ BindingElementList[?Yield] , Elisionopt BindingRestElement[?Yield]opt ]
+---*/
+
+//- elems
+[...x = []]
+//- vals
+[]
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case
new file mode 100644
index 0000000000..dc3cf7437a
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Reset element (nested object pattern) does not support initializer
+negative:
+  phase: early
+  type: SyntaxError
+info: >
+    13.3.3 Destructuring Binding Patterns
+
+    ArrayBindingPattern[Yield] :
+        [ Elisionopt BindingRestElement[?Yield]opt ]
+        [ BindingElementList[?Yield] ]
+        [ BindingElementList[?Yield] , Elisionopt BindingRestElement[?Yield]opt ]
+---*/
+
+//- elems
+[...{ x } = []]
+//- vals
+[]
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case
new file mode 100644
index 0000000000..c76c83d0a4
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element (array binding pattern) may not be followed by any element
+negative:
+  phase: early
+  type: SyntaxError
+info: >
+    13.3.3 Destructuring Binding Patterns
+
+    ArrayBindingPattern[Yield] :
+        [ Elisionopt BindingRestElement[?Yield]opt ]
+        [ BindingElementList[?Yield] ]
+        [ BindingElementList[?Yield] , Elisionopt BindingRestElement[?Yield]opt ]
+---*/
+
+//- elems
+[...[x], y]
+//- vals
+[1, 2, 3]
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case
new file mode 100644
index 0000000000..962733013a
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element (identifier) may not be followed by any element
+negative:
+  phase: early
+  type: SyntaxError
+info: >
+    13.3.3 Destructuring Binding Patterns
+
+    ArrayBindingPattern[Yield] :
+        [ Elisionopt BindingRestElement[?Yield]opt ]
+        [ BindingElementList[?Yield] ]
+        [ BindingElementList[?Yield] , Elisionopt BindingRestElement[?Yield]opt ]
+---*/
+
+//- elems
+[...x, y]
+//- vals
+[1, 2, 3]
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case
new file mode 100644
index 0000000000..00c70507ea
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element (object binding pattern) may not be followed by any element
+negative:
+  phase: early
+  type: SyntaxError
+info: >
+    13.3.3 Destructuring Binding Patterns
+
+    ArrayBindingPattern[Yield] :
+        [ Elisionopt BindingRestElement[?Yield]opt ]
+        [ BindingElementList[?Yield] ]
+        [ BindingElementList[?Yield] , Elisionopt BindingRestElement[?Yield]opt ]
+---*/
+
+//- elems
+[...{ x }, y]
+//- vals
+[1, 2, 3]
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case
new file mode 100644
index 0000000000..fd42f56de5
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element containing an object binding pattern
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingPattern
+
+    1. Let A be ArrayCreate(0).
+    [...]
+    3. Repeat
+       [...]
+       b. If iteratorRecord.[[done]] is true, then
+          i. Return the result of performing BindingInitialization of
+             BindingPattern with A and environment as the arguments.
+       [...]
+---*/
+
+//- elems
+[...{ length }]
+//- vals
+[1, 2, 3]
+//- body
+assert.sameValue(length, 3);
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case
new file mode 100644
index 0000000000..3ad1150230
--- /dev/null
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case
@@ -0,0 +1,34 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Rest element containing an object binding pattern
+info: |
+    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
+
+    BindingRestElement : ... BindingPattern
+
+    1. Let A be ArrayCreate(0).
+    [...]
+    3. Repeat
+       [...]
+       b. If iteratorRecord.[[done]] is true, then
+          i. Return the result of performing BindingInitialization of
+             BindingPattern with A and environment as the arguments.
+       [...]
+---*/
+
+//- setup
+let length = "outer";
+//- elems
+[...{ 0: v, 1: w, 2: x, 3: y, length: z }]
+//- vals
+[7, 8, 9]
+//- body
+assert.sameValue(v, 7);
+assert.sameValue(w, 8);
+assert.sameValue(x, 9);
+assert.sameValue(y, undefined);
+assert.sameValue(z, 3);
+
+assert.sameValue(length, "outer", "the length prop is not set as a binding name");
diff --git a/src/dstr-binding/default/for-await-of-async-func-const-async.template b/src/dstr-binding-async-iteration/default/for-await-of-async-func-const-async.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-func-const-async.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-func-const-async.template
diff --git a/src/dstr-binding/default/for-await-of-async-func-const.template b/src/dstr-binding-async-iteration/default/for-await-of-async-func-const.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-func-const.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-func-const.template
diff --git a/src/dstr-binding/default/for-await-of-async-func-let-async.template b/src/dstr-binding-async-iteration/default/for-await-of-async-func-let-async.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-func-let-async.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-func-let-async.template
diff --git a/src/dstr-binding/default/for-await-of-async-func-let.template b/src/dstr-binding-async-iteration/default/for-await-of-async-func-let.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-func-let.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-func-let.template
diff --git a/src/dstr-binding/default/for-await-of-async-func-var-async.template b/src/dstr-binding-async-iteration/default/for-await-of-async-func-var-async.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-func-var-async.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-func-var-async.template
diff --git a/src/dstr-binding/default/for-await-of-async-func-var.template b/src/dstr-binding-async-iteration/default/for-await-of-async-func-var.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-func-var.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-func-var.template
diff --git a/src/dstr-binding/default/for-await-of-async-gen-const-async.template b/src/dstr-binding-async-iteration/default/for-await-of-async-gen-const-async.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-gen-const-async.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-gen-const-async.template
diff --git a/src/dstr-binding/default/for-await-of-async-gen-const.template b/src/dstr-binding-async-iteration/default/for-await-of-async-gen-const.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-gen-const.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-gen-const.template
diff --git a/src/dstr-binding/default/for-await-of-async-gen-let-async.template b/src/dstr-binding-async-iteration/default/for-await-of-async-gen-let-async.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-gen-let-async.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-gen-let-async.template
diff --git a/src/dstr-binding/default/for-await-of-async-gen-let.template b/src/dstr-binding-async-iteration/default/for-await-of-async-gen-let.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-gen-let.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-gen-let.template
diff --git a/src/dstr-binding/default/for-await-of-async-gen-var-async.template b/src/dstr-binding-async-iteration/default/for-await-of-async-gen-var-async.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-gen-var-async.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-gen-var-async.template
diff --git a/src/dstr-binding/default/for-await-of-async-gen-var.template b/src/dstr-binding-async-iteration/default/for-await-of-async-gen-var.template
similarity index 100%
rename from src/dstr-binding/default/for-await-of-async-gen-var.template
rename to src/dstr-binding-async-iteration/default/for-await-of-async-gen-var.template
diff --git a/src/dstr-binding/error/for-await-of-async-func-const.template b/src/dstr-binding-async-iteration/error/for-await-of-async-func-const.template
similarity index 100%
rename from src/dstr-binding/error/for-await-of-async-func-const.template
rename to src/dstr-binding-async-iteration/error/for-await-of-async-func-const.template
diff --git a/src/dstr-binding/error/for-await-of-async-func-let.template b/src/dstr-binding-async-iteration/error/for-await-of-async-func-let.template
similarity index 100%
rename from src/dstr-binding/error/for-await-of-async-func-let.template
rename to src/dstr-binding-async-iteration/error/for-await-of-async-func-let.template
diff --git a/src/dstr-binding/error/for-await-of-async-func-var.template b/src/dstr-binding-async-iteration/error/for-await-of-async-func-var.template
similarity index 100%
rename from src/dstr-binding/error/for-await-of-async-func-var.template
rename to src/dstr-binding-async-iteration/error/for-await-of-async-func-var.template
diff --git a/src/dstr-binding/error/for-await-of-async-gen-const.template b/src/dstr-binding-async-iteration/error/for-await-of-async-gen-const.template
similarity index 100%
rename from src/dstr-binding/error/for-await-of-async-gen-const.template
rename to src/dstr-binding-async-iteration/error/for-await-of-async-gen-const.template
diff --git a/src/dstr-binding/error/for-await-of-async-gen-let.template b/src/dstr-binding-async-iteration/error/for-await-of-async-gen-let.template
similarity index 100%
rename from src/dstr-binding/error/for-await-of-async-gen-let.template
rename to src/dstr-binding-async-iteration/error/for-await-of-async-gen-let.template
diff --git a/src/dstr-binding/error/for-await-of-async-gen-var.template b/src/dstr-binding-async-iteration/error/for-await-of-async-gen-var.template
similarity index 100%
rename from src/dstr-binding/error/for-await-of-async-gen-var.template
rename to src/dstr-binding-async-iteration/error/for-await-of-async-gen-var.template
diff --git a/src/dstr-binding/iter-close/for-await-of-async-func-const.template b/src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-const.template
similarity index 100%
rename from src/dstr-binding/iter-close/for-await-of-async-func-const.template
rename to src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-const.template
diff --git a/src/dstr-binding/iter-close/for-await-of-async-func-let.template b/src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-let.template
similarity index 100%
rename from src/dstr-binding/iter-close/for-await-of-async-func-let.template
rename to src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-let.template
diff --git a/src/dstr-binding/iter-close/for-await-of-async-func-var.template b/src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-var.template
similarity index 100%
rename from src/dstr-binding/iter-close/for-await-of-async-func-var.template
rename to src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-var.template
diff --git a/src/dstr-binding/iter-close/for-await-of-async-gen-const.template b/src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-const.template
similarity index 100%
rename from src/dstr-binding/iter-close/for-await-of-async-gen-const.template
rename to src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-const.template
diff --git a/src/dstr-binding/iter-close/for-await-of-async-gen-let.template b/src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-let.template
similarity index 100%
rename from src/dstr-binding/iter-close/for-await-of-async-gen-let.template
rename to src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-let.template
diff --git a/src/dstr-binding/iter-close/for-await-of-async-gen-var.template b/src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-var.template
similarity index 100%
rename from src/dstr-binding/iter-close/for-await-of-async-gen-var.template
rename to src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-var.template
diff --git a/src/dstr-binding-async-iteration/obj-init-null.case b/src/dstr-binding-async-iteration/obj-init-null.case
new file mode 100644
index 0000000000..0772e36f77
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-init-null.case
@@ -0,0 +1,19 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Value specifed for object binding pattern must be object coercible (null)
+info: |
+    Runtime Semantics: BindingInitialization
+
+    ObjectBindingPattern : { }
+
+    1. Return NormalCompletion(empty).
+---*/
+
+//- elems
+{}
+//- vals
+null
+//- error
+TypeError
diff --git a/src/dstr-binding-async-iteration/obj-init-undefined.case b/src/dstr-binding-async-iteration/obj-init-undefined.case
new file mode 100644
index 0000000000..f41405f6fe
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-init-undefined.case
@@ -0,0 +1,19 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Value specifed for object binding pattern must be object coercible (undefined)
+info: |
+    Runtime Semantics: BindingInitialization
+
+    ObjectBindingPattern : { }
+
+    1. Return NormalCompletion(empty).
+---*/
+
+//- elems
+{}
+//- vals
+undefined
+//- error
+TypeError
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-empty.case b/src/dstr-binding-async-iteration/obj-ptrn-empty.case
new file mode 100644
index 0000000000..97ecebd347
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-empty.case
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: No property access occurs for an "empty" object binding pattern
+info: |
+    Runtime Semantics: BindingInitialization
+
+    ObjectBindingPattern : { }
+
+    1. Return NormalCompletion(empty).
+---*/
+
+//- setup
+var accessCount = 0;
+var obj = Object.defineProperty({}, 'attr', {
+  get: function() {
+    accessCount += 1;
+  }
+});
+//- elems
+{}
+//- vals
+obj
+//- body
+assert.sameValue(accessCount, 0);
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case b/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
new file mode 100644
index 0000000000..68ae3348af
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Error thrown when accessing the corresponding property of the value object
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    4. Let v be GetV(value, propertyName).
+    5. ReturnIfAbrupt(v).
+---*/
+
+//- setup
+var poisonedProperty = Object.defineProperty({}, 'poisoned', {
+  get: function() {
+    throw new Test262Error();
+  }
+});
+//- elems
+{ poisoned }
+//- vals
+poisonedProperty
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
new file mode 100644
index 0000000000..55cc1ad0ba
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding assigns `name` to arrow functions
+template: default
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       [...]
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          i. Let hasNameProperty be HasOwnProperty(v, "name").
+          ii. ReturnIfAbrupt(hasNameProperty).
+          iii. If hasNameProperty is false, perform SetFunctionName(v,
+               bindingId).
+---*/
+
+//- elems
+{ arrow = () => {} }
+//- vals
+{}
+//- body
+assert.sameValue(arrow.name, 'arrow');
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
new file mode 100644
index 0000000000..2b5a385dda
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding assigns `name` to "anonymous" classes
+template: default
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       [...]
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          i. Let hasNameProperty be HasOwnProperty(v, "name").
+          ii. ReturnIfAbrupt(hasNameProperty).
+          iii. If hasNameProperty is false, perform SetFunctionName(v,
+               bindingId).
+---*/
+
+//- elems
+{ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }
+//- vals
+{}
+//- body
+assert.sameValue(cls.name, 'cls');
+assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
new file mode 100644
index 0000000000..624b00fce0
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar
+template: default
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       [...]
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          i. Let hasNameProperty be HasOwnProperty(v, "name").
+          ii. ReturnIfAbrupt(hasNameProperty).
+          iii. If hasNameProperty is false, perform SetFunctionName(v,
+               bindingId).
+---*/
+
+//- elems
+{ cover = (function () {}), xCover = (0, function() {})  }
+//- vals
+{}
+//- body
+assert.sameValue(cover.name, 'cover');
+assert.notSameValue(xCover.name, 'xCover');
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
new file mode 100644
index 0000000000..d6130cc9a6
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding assigns name to "anonymous" functions
+template: default
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       [...]
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          i. Let hasNameProperty be HasOwnProperty(v, "name").
+          ii. ReturnIfAbrupt(hasNameProperty).
+          iii. If hasNameProperty is false, perform SetFunctionName(v,
+               bindingId).
+---*/
+
+//- elems
+{ fn = function () {}, xFn = function x() {} }
+//- vals
+{}
+//- body
+assert.sameValue(fn.name, 'fn');
+assert.notSameValue(xFn.name, 'xFn');
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
new file mode 100644
index 0000000000..977d9f08d9
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: SingleNameBinding assigns name to "anonymous" generator functions
+template: default
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       [...]
+       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+          i. Let hasNameProperty be HasOwnProperty(v, "name").
+          ii. ReturnIfAbrupt(hasNameProperty).
+          iii. If hasNameProperty is false, perform SetFunctionName(v,
+               bindingId).
+---*/
+
+//- elems
+{ gen = function* () {}, xGen = function* x() {} }
+//- vals
+{}
+//- body
+assert.sameValue(gen.name, 'gen');
+assert.notSameValue(xGen.name, 'xGen');
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
new file mode 100644
index 0000000000..ef10476d53
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer is not evaluated when value is not `undefined`
+template: default
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       [...]
+    [...]
+---*/
+
+//- setup
+var initCount = 0;
+function counter() {
+  initCount += 1;
+}
+//- elems
+{ w = counter(), x = counter(), y = counter(), z = counter() }
+//- vals
+{ w: null, x: 0, y: false, z: '' }
+//- body
+assert.sameValue(w, null);
+assert.sameValue(x, 0);
+assert.sameValue(y, false);
+assert.sameValue(z, '');
+assert.sameValue(initCount, 0);
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
new file mode 100644
index 0000000000..e67f63480e
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Error thrown when evaluating the initializer
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let  defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+---*/
+
+//- setup
+function thrower() {
+  throw new Test262Error();
+}
+//- elems
+{ x = thrower() }
+//- vals
+{}
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
new file mode 100644
index 0000000000..dd6d9dc839
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer is an unresolvable reference
+template: error
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    6. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+
+    6.2.3.1 GetValue (V)
+
+    1. ReturnIfAbrupt(V).
+    2. If Type(V) is not Reference, return V.
+    3. Let base be GetBase(V).
+    4. If IsUnresolvableReference(V), throw a ReferenceError exception.
+---*/
+
+//- elems
+{ x = unresolvableReference }
+//- vals
+{}
+//- error
+ReferenceError
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case b/src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case
new file mode 100644
index 0000000000..5dc0cbe68a
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case
@@ -0,0 +1,20 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Trailing comma is allowed following BindingPropertyList
+info: |
+    13.3.3 Destructuring Binding Patterns
+
+    ObjectBindingPattern[Yield] :
+        { }
+        { BindingPropertyList[?Yield] }
+        { BindingPropertyList[?Yield] , }
+---*/
+
+//- elems
+{ x, }
+//- vals
+{ x: 23 }
+//- body
+assert.sameValue(x, 23);
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-list-err.case b/src/dstr-binding-async-iteration/obj-ptrn-list-err.case
new file mode 100644
index 0000000000..73dc15e7df
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-list-err.case
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Binding property list evaluation is interrupted by an abrupt completion
+info: |
+    13.3.3.5 Runtime Semantics: BindingInitialization
+
+    BindingPropertyList : BindingPropertyList , BindingProperty
+
+    1. Let status be the result of performing BindingInitialization for
+       BindingPropertyList using value and environment as arguments.
+    2. ReturnIfAbrupt(status).
+---*/
+
+//- setup
+var initCount = 0;
+function thrower() {
+  throw new Test262Error();
+}
+//- elems
+{ a, b = thrower(), c = ++initCount }
+//- vals
+{}
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
new file mode 100644
index 0000000000..41ffaa1ac6
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
@@ -0,0 +1,29 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Object binding pattern with "nested" array binding pattern using initializer
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+    4. Return the result of performing BindingInitialization for BindingPattern
+       passing v and environment as arguments.
+---*/
+
+//- elems
+{ w: [x, y, z] = [4, 5, 6] }
+//- vals
+{}
+//- body
+assert.sameValue(x, 4);
+assert.sameValue(y, 5);
+assert.sameValue(z, 6);
+
+assert.throws(ReferenceError, function() {
+  w;
+});
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case
new file mode 100644
index 0000000000..17007b54cf
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case
@@ -0,0 +1,20 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Trailing comma is allowed following BindingPropertyList
+info: |
+    13.3.3 Destructuring Binding Patterns
+
+    ObjectBindingPattern[Yield] :
+        { }
+        { BindingPropertyList[?Yield] }
+        { BindingPropertyList[?Yield] , }
+---*/
+
+//- elems
+{ x: [y], }
+//- vals
+{ x: [45] }
+//- body
+assert.sameValue(y,45);
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case
new file mode 100644
index 0000000000..abe84e43f7
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Object binding pattern with "nested" array binding pattern taking the `null` value
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+       [...]
+    4. Return the result of performing BindingInitialization for BindingPattern
+       passing v and environment as arguments.
+---*/
+
+//- elems
+{ w: [x, y, z] = [4, 5, 6] }
+//- vals
+{ w: null }
+//- error
+TypeError
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case
new file mode 100644
index 0000000000..254c8f06ba
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Object binding pattern with "nested" array binding pattern not using initializer
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+       [...]
+    4. Return the result of performing BindingInitialization for BindingPattern
+       passing v and environment as arguments.
+---*/
+
+//- elems
+{ w: [x, y, z] = [4, 5, 6] }
+//- vals
+{ w: [7, undefined, ] }
+//- body
+assert.sameValue(x, 7);
+assert.sameValue(y, undefined);
+assert.sameValue(z, undefined);
+
+assert.throws(ReferenceError, function() {
+  w;
+});
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case
new file mode 100644
index 0000000000..9721474c36
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case
@@ -0,0 +1,24 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Evaluation of property name returns an abrupt completion
+template: error
+info: |
+    13.3.3.5 Runtime Semantics: BindingInitialization
+
+    BindingProperty : PropertyName : BindingElement
+
+    1. Let P be the result of evaluating PropertyName
+    2. ReturnIfAbrupt(P).
+---*/
+
+//- setup
+function thrower() {
+  throw new Test262Error();
+}
+//- elems
+{ [thrower()]: x }
+//- vals
+{}
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
new file mode 100644
index 0000000000..3851240d08
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Error thrown when accessing the corresponding property of the value object
+template: error
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    BindingElement : BindingPattern Initializeropt
+
+    1. Let v be GetV(value, propertyName).
+    2. ReturnIfAbrupt(v).
+---*/
+
+//- setup
+var initEvalCount = 0;
+var poisonedProperty = Object.defineProperty({}, 'poisoned', {
+  get: function() {
+    throw new Test262Error();
+  }
+});
+//- elems
+{ poisoned: x = ++initEvalCount }
+//- vals
+poisonedProperty
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
new file mode 100644
index 0000000000..49ec6684f2
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
@@ -0,0 +1,43 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer is not evaluated when value is not `undefined`
+template: default
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    BindingElement : BindingPattern Initializeropt
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+    [...]
+---*/
+
+//- setup
+var initCount = 0;
+function counter() {
+  initCount += 1;
+}
+//- elems
+{ s: t = counter(), u: v = counter(), w: x = counter(), y: z = counter() }
+//- vals
+{ s: null, u: 0, w: false, y: '' }
+//- body
+assert.sameValue(t, null);
+assert.sameValue(v, 0);
+assert.sameValue(x, false);
+assert.sameValue(z, '');
+assert.sameValue(initCount, 0);
+
+assert.throws(ReferenceError, function() {
+  s;
+});
+assert.throws(ReferenceError, function() {
+  u;
+});
+assert.throws(ReferenceError, function() {
+  w;
+});
+assert.throws(ReferenceError, function() {
+  y;
+});
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
new file mode 100644
index 0000000000..e878fc6f3a
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Error thrown when evaluating the initializer
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    BindingElement : BindingPattern Initializeropt
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+---*/
+
+//- setup
+function thrower() {
+  throw new Test262Error();
+}
+//- elems
+{ x: y = thrower() }
+//- vals
+{}
+//- error
+Test262Error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
new file mode 100644
index 0000000000..d11f68d9df
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer is an unresolvable reference
+template: error
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    BindingElement : BindingPattern Initializeropt
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+
+    6.2.3.1 GetValue (V)
+
+    1. ReturnIfAbrupt(V).
+    2. If Type(V) is not Reference, return V.
+    3. Let base be GetBase(V).
+    4. If IsUnresolvableReference(V), throw a ReferenceError exception.
+---*/
+
+//- elems
+{ x: y = unresolvableReference }
+//- vals
+{}
+//- error
+ReferenceError
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
new file mode 100644
index 0000000000..5b6723f746
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
@@ -0,0 +1,23 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Binding as specified via property name, identifier, and initializer
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+{ x: y = 33 }
+//- vals
+{ }
+//- body
+assert.sameValue(y, 33);
+assert.throws(ReferenceError, function() {
+  x;
+});
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case
new file mode 100644
index 0000000000..cee4bc0577
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case
@@ -0,0 +1,24 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Trailing comma is allowed following BindingPropertyList
+info: |
+    13.3.3 Destructuring Binding Patterns
+
+    ObjectBindingPattern[Yield] :
+        { }
+        { BindingPropertyList[?Yield] }
+        { BindingPropertyList[?Yield] , }
+---*/
+
+//- elems
+{ x: y, }
+//- vals
+{ x: 23 }
+//- body
+assert.sameValue(y, 23);
+
+assert.throws(ReferenceError, function() {
+  x;
+});
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
new file mode 100644
index 0000000000..ebd0652976
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
@@ -0,0 +1,23 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Binding as specified via property name and identifier
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    SingleNameBinding : BindingIdentifier Initializeropt
+
+    [...]
+    8. Return InitializeReferencedBinding(lhs, v).
+---*/
+
+//- elems
+{ x: y }
+//- vals
+{ x: 23 }
+//- body
+assert.sameValue(y, 23);
+assert.throws(ReferenceError, function() {
+  x;
+});
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
new file mode 100644
index 0000000000..cc6da66b45
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
@@ -0,0 +1,29 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Object binding pattern with "nested" object binding pattern using initializer
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+       a. Let defaultValue be the result of evaluating Initializer.
+       b. Let v be GetValue(defaultValue).
+       c. ReturnIfAbrupt(v).
+    4. Return the result of performing BindingInitialization for BindingPattern
+       passing v and environment as arguments.
+---*/
+
+//- elems
+{ w: { x, y, z } = { x: 4, y: 5, z: 6 } }
+//- vals
+{ w: undefined }
+//- body
+assert.sameValue(x, 4);
+assert.sameValue(y, 5);
+assert.sameValue(z, 6);
+
+assert.throws(ReferenceError, function() {
+  w;
+});
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case
new file mode 100644
index 0000000000..828049f9a0
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Object binding pattern with "nested" object binding pattern taking the `null` value
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+       [...]
+    4. Return the result of performing BindingInitialization for BindingPattern
+       passing v and environment as arguments.
+---*/
+
+//- elems
+{ w: { x, y, z } = { x: 4, y: 5, z: 6 } }
+//- vals
+{ w: null }
+//- error
+TypeError
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case
new file mode 100644
index 0000000000..6c4582af3d
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: error
+desc: Object binding pattern with "nested" object binding pattern taking the `null` value
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+       [...]
+    4. Return the result of performing BindingInitialization for BindingPattern
+       passing v and environment as arguments.
+---*/
+
+//- elems
+{ w: { x, y, z } = undefined }
+//- vals
+{ }
+//- error
+TypeError
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case
new file mode 100644
index 0000000000..da412ccd6a
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: default
+desc: Object binding pattern with "nested" object binding pattern not using initializer
+info: |
+    13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+    [...]
+    3. If Initializer is present and v is undefined, then
+       [...]
+    4. Return the result of performing BindingInitialization for BindingPattern
+       passing v and environment as arguments.
+---*/
+
+//- elems
+{ w: { x, y, z } = { x: 4, y: 5, z: 6 } }
+//- vals
+{ w: { x: undefined, z: 7 } }
+//- body
+assert.sameValue(x, undefined);
+assert.sameValue(y, undefined);
+assert.sameValue(z, 7);
+
+assert.throws(ReferenceError, function() {
+  w;
+});
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-getter.case b/src/dstr-binding-async-iteration/obj-ptrn-rest-getter.case
new file mode 100644
index 0000000000..c5360e5e5e
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-rest-getter.case
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 Caio Lima. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+    Getter is called when obj is being deconstructed to a rest Object
+template: default
+esid: pending
+includes: [propertyHelper.js]
+features: [object-rest]
+---*/
+
+//- setup
+var count = 0;
+//- elems
+{...x}
+//- vals
+{ get v() { count++; return 2; } }
+//- body
+assert.sameValue(x.v, 2);
+assert.sameValue(count, 1);
+
+verifyEnumerable(x, "v");
+verifyWritable(x, "v");
+verifyConfigurable(x, "v");
+
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-nested-obj.case b/src/dstr-binding-async-iteration/obj-ptrn-rest-nested-obj.case
new file mode 100644
index 0000000000..8fb0bb2d11
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-rest-nested-obj.case
@@ -0,0 +1,25 @@
+// Copyright (C) 2017 Caio Lima. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+    When DestructuringAssignmentTarget is an object literal, it should be parsed
+    parsed as a DestructuringAssignmentPattern and evaluated as a destructuring
+    assignment.
+template: default
+esid: pending
+features: [object-rest]
+---*/
+
+//- setup
+var obj = {a: 3, b: 4};
+//- elems
+{a, b, ...{c, e}}
+//- vals
+{a: 1, b: 2, c: 3, d: 4, e: 5}
+//- body
+assert.sameValue(a, 1);
+assert.sameValue(b, 2);
+assert.sameValue(c, 3);
+assert.sameValue(e, 5);
+
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-obj-nested-rest.case b/src/dstr-binding-async-iteration/obj-ptrn-rest-obj-nested-rest.case
new file mode 100644
index 0000000000..a6eb8c024d
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-rest-obj-nested-rest.case
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 Caio Lima. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+    When DestructuringAssignmentTarget is an object literal, it should be parsed
+    parsed as a DestructuringAssignmentPattern and evaluated as a destructuring
+    assignment and object rest desconstruction is allowed in that case.
+template: default
+esid: pending
+includes: [propertyHelper.js]
+features: [object-rest]
+---*/
+
+//- elems
+{a, b, ...{c, ...rest}}
+//- vals
+{a: 1, b: 2, c: 3, d: 4, e: 5}
+//- body
+assert.sameValue(a, 1);
+assert.sameValue(b, 2);
+assert.sameValue(c, 3);
+
+assert.sameValue(rest.d, 4);
+assert.sameValue(rest.e, 5);
+
+verifyEnumerable(rest, "d");
+verifyWritable(rest, "d");
+verifyConfigurable(rest, "d");
+
+verifyEnumerable(rest, "e");
+verifyWritable(rest, "e");
+verifyConfigurable(rest, "e");
+
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-obj-own-property.case b/src/dstr-binding-async-iteration/obj-ptrn-rest-obj-own-property.case
new file mode 100644
index 0000000000..71c375adc8
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-rest-obj-own-property.case
@@ -0,0 +1,24 @@
+// Copyright (C) 2017 Caio Lima. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+    Rest object contains just soruce object's own properties
+template: default
+esid: pending
+includes: [propertyHelper.js]
+features: [object-rest]
+---*/
+
+//- setup
+var o = Object.create({ x: 1, y: 2 });
+o.z = 3;
+//- elems
+{ x, ...{y , z} }
+//- vals
+o
+//- body
+assert.sameValue(x, 1);
+assert.sameValue(y, undefined);
+assert.sameValue(z, 3);
+
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-skip-non-enumerable.case b/src/dstr-binding-async-iteration/obj-ptrn-rest-skip-non-enumerable.case
new file mode 100644
index 0000000000..869ffd2419
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-rest-skip-non-enumerable.case
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 Caio Lima. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+    Rest object doesn't contain non-enumerable properties
+template: default
+esid: pending
+includes: [propertyHelper.js]
+features: [object-rest]
+---*/
+
+//- setup
+var o = {a: 3, b: 4};
+Object.defineProperty(o, "x", { value: 4, enumerable: false });
+//- elems
+{...rest}
+//- vals
+o
+//- body
+assert.sameValue(rest.a, 3);
+assert.sameValue(rest.b, 4);
+assert.sameValue(rest.x, undefined);
+
+verifyEnumerable(rest, "a");
+verifyWritable(rest, "a");
+verifyConfigurable(rest, "a");
+
+verifyEnumerable(rest, "b");
+verifyWritable(rest, "b");
+verifyConfigurable(rest, "b");
+
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-val-obj.case b/src/dstr-binding-async-iteration/obj-ptrn-rest-val-obj.case
new file mode 100644
index 0000000000..0379ddd944
--- /dev/null
+++ b/src/dstr-binding-async-iteration/obj-ptrn-rest-val-obj.case
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 Caio Lima. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+    Rest object contains just unextracted data
+template: default
+esid: pending
+includes: [propertyHelper.js]
+features: [object-rest]
+---*/
+
+//- elems
+{a, b, ...rest}
+//- vals
+{x: 1, y: 2, a: 5, b: 3}
+//- body
+assert.sameValue(rest.x, 1);
+assert.sameValue(rest.y, 2);
+assert.sameValue(rest.a, undefined);
+assert.sameValue(rest.b, undefined);
+
+verifyEnumerable(rest, "x");
+verifyWritable(rest, "x");
+verifyConfigurable(rest, "x");
+
+verifyEnumerable(rest, "y");
+verifyWritable(rest, "y");
+verifyConfigurable(rest, "y");
+
-- 
GitLab


From befaab57a42d16b102e675e75acc247569012a48 Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 22 May 2017 12:48:43 -0400
Subject: [PATCH 2/6] Update cases and templates per review

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
---
 src/dstr-binding-async-iteration/ary-init-iter-close.case | 6 +++---
 .../ary-init-iter-get-err.case                            | 2 +-
 .../ary-init-iter-no-close.case                           | 6 +++---
 src/dstr-binding-async-iteration/ary-name-iter-val.case   | 2 +-
 .../ary-ptrn-elem-ary-elem-init.case                      | 2 +-
 .../ary-ptrn-elem-ary-elem-iter.case                      | 2 +-
 .../ary-ptrn-elem-ary-elision-init.case                   | 2 +-
 .../ary-ptrn-elem-ary-elision-iter.case                   | 2 +-
 .../ary-ptrn-elem-ary-empty-init.case                     | 2 +-
 .../ary-ptrn-elem-ary-empty-iter.case                     | 2 +-
 .../ary-ptrn-elem-ary-rest-init.case                      | 2 +-
 .../ary-ptrn-elem-ary-rest-iter.case                      | 2 +-
 .../ary-ptrn-elem-ary-val-null.case                       | 2 +-
 .../ary-ptrn-elem-id-init-exhausted.case                  | 2 +-
 .../ary-ptrn-elem-id-init-fn-name-arrow.case              | 2 +-
 .../ary-ptrn-elem-id-init-fn-name-class.case              | 2 +-
 .../ary-ptrn-elem-id-init-fn-name-cover.case              | 2 +-
 .../ary-ptrn-elem-id-init-fn-name-fn.case                 | 2 +-
 .../ary-ptrn-elem-id-init-fn-name-gen.case                | 2 +-
 .../ary-ptrn-elem-id-init-hole.case                       | 2 +-
 .../ary-ptrn-elem-id-init-skipped.case                    | 2 +-
 .../ary-ptrn-elem-id-init-throws.case                     | 2 +-
 .../ary-ptrn-elem-id-init-undef.case                      | 2 +-
 .../ary-ptrn-elem-id-init-unresolvable.case               | 2 +-
 .../ary-ptrn-elem-id-iter-complete.case                   | 2 +-
 .../ary-ptrn-elem-id-iter-done.case                       | 2 +-
 .../ary-ptrn-elem-id-iter-step-err.case                   | 4 ++--
 .../ary-ptrn-elem-id-iter-val-err.case                    | 4 ++--
 .../ary-ptrn-elem-id-iter-val.case                        | 2 +-
 .../ary-ptrn-elem-obj-id-init.case                        | 2 +-
 .../ary-ptrn-elem-obj-id.case                             | 2 +-
 .../ary-ptrn-elem-obj-prop-id-init.case                   | 2 +-
 .../ary-ptrn-elem-obj-prop-id.case                        | 2 +-
 .../ary-ptrn-elem-obj-val-null.case                       | 2 +-
 .../ary-ptrn-elem-obj-val-undef.case                      | 2 +-
 .../ary-ptrn-elision-exhausted.case                       | 2 +-
 .../ary-ptrn-elision-step-err.case                        | 6 ++++--
 src/dstr-binding-async-iteration/ary-ptrn-elision.case    | 2 +-
 src/dstr-binding-async-iteration/ary-ptrn-empty.case      | 2 +-
 .../ary-ptrn-rest-ary-elem.case                           | 2 +-
 .../ary-ptrn-rest-ary-elision.case                        | 2 +-
 .../ary-ptrn-rest-ary-empty.case                          | 2 +-
 .../ary-ptrn-rest-ary-rest.case                           | 2 +-
 .../ary-ptrn-rest-id-elision-next-err.case                | 2 +-
 .../ary-ptrn-rest-id-elision.case                         | 2 +-
 .../ary-ptrn-rest-id-exhausted.case                       | 2 +-
 .../ary-ptrn-rest-id-iter-step-err.case                   | 2 +-
 .../ary-ptrn-rest-id-iter-val-err.case                    | 4 ++--
 src/dstr-binding-async-iteration/ary-ptrn-rest-id.case    | 2 +-
 .../ary-ptrn-rest-init-ary.case                           | 2 +-
 .../ary-ptrn-rest-init-id.case                            | 2 +-
 .../ary-ptrn-rest-init-obj.case                           | 2 +-
 .../ary-ptrn-rest-not-final-ary.case                      | 2 +-
 .../ary-ptrn-rest-not-final-id.case                       | 2 +-
 .../ary-ptrn-rest-not-final-obj.case                      | 2 +-
 .../ary-ptrn-rest-obj-id.case                             | 2 +-
 .../ary-ptrn-rest-obj-prop-id.case                        | 2 +-
 .../error/for-await-of-async-gen-const.template           | 8 ++++++--
 .../error/for-await-of-async-gen-let.template             | 7 ++++++-
 .../error/for-await-of-async-gen-var.template             | 7 ++++++-
 src/dstr-binding-async-iteration/obj-init-null.case       | 2 +-
 src/dstr-binding-async-iteration/obj-init-undefined.case  | 2 +-
 src/dstr-binding-async-iteration/obj-ptrn-empty.case      | 2 +-
 .../obj-ptrn-id-get-value-err.case                        | 2 +-
 .../obj-ptrn-id-init-fn-name-arrow.case                   | 2 +-
 .../obj-ptrn-id-init-fn-name-class.case                   | 2 +-
 .../obj-ptrn-id-init-fn-name-cover.case                   | 2 +-
 .../obj-ptrn-id-init-fn-name-fn.case                      | 2 +-
 .../obj-ptrn-id-init-fn-name-gen.case                     | 2 +-
 .../obj-ptrn-id-init-skipped.case                         | 2 +-
 .../obj-ptrn-id-init-throws.case                          | 2 +-
 .../obj-ptrn-id-init-unresolvable.case                    | 2 +-
 .../obj-ptrn-id-trailing-comma.case                       | 2 +-
 src/dstr-binding-async-iteration/obj-ptrn-list-err.case   | 2 +-
 .../obj-ptrn-prop-ary-init.case                           | 2 +-
 .../obj-ptrn-prop-ary-trailing-comma.case                 | 2 +-
 .../obj-ptrn-prop-ary-value-null.case                     | 2 +-
 src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case   | 2 +-
 .../obj-ptrn-prop-eval-err.case                           | 2 +-
 .../obj-ptrn-prop-id-get-value-err.case                   | 2 +-
 .../obj-ptrn-prop-id-init-skipped.case                    | 2 +-
 .../obj-ptrn-prop-id-init-throws.case                     | 2 +-
 .../obj-ptrn-prop-id-init-unresolvable.case               | 2 +-
 .../obj-ptrn-prop-id-init.case                            | 2 +-
 .../obj-ptrn-prop-id-trailing-comma.case                  | 2 +-
 src/dstr-binding-async-iteration/obj-ptrn-prop-id.case    | 2 +-
 .../obj-ptrn-prop-obj-init.case                           | 2 +-
 .../obj-ptrn-prop-obj-value-null.case                     | 2 +-
 .../obj-ptrn-prop-obj-value-undef.case                    | 2 +-
 src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case   | 2 +-
 90 files changed, 115 insertions(+), 99 deletions(-)

diff --git a/src/dstr-binding-async-iteration/ary-init-iter-close.case b/src/dstr-binding-async-iteration/ary-init-iter-close.case
index ab18446305..860a773bf1 100644
--- a/src/dstr-binding-async-iteration/ary-init-iter-close.case
+++ b/src/dstr-binding-async-iteration/ary-init-iter-close.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Iterator is closed when not exhausted by pattern evaluation
@@ -20,10 +20,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/src/dstr-binding-async-iteration/ary-init-iter-get-err.case b/src/dstr-binding-async-iteration/ary-init-iter-get-err.case
index 3fd5f5c99e..22f52a5eeb 100644
--- a/src/dstr-binding-async-iteration/ary-init-iter-get-err.case
+++ b/src/dstr-binding-async-iteration/ary-init-iter-get-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Abrupt completion returned by GetIterator
diff --git a/src/dstr-binding-async-iteration/ary-init-iter-no-close.case b/src/dstr-binding-async-iteration/ary-init-iter-no-close.case
index b9277b1234..8184d2f2e5 100644
--- a/src/dstr-binding-async-iteration/ary-init-iter-no-close.case
+++ b/src/dstr-binding-async-iteration/ary-init-iter-no-close.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Iterator is not closed when exhausted by pattern evaluation
@@ -20,10 +20,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/src/dstr-binding-async-iteration/ary-name-iter-val.case b/src/dstr-binding-async-iteration/ary-name-iter-val.case
index 8c65a0868f..d793554bba 100644
--- a/src/dstr-binding-async-iteration/ary-name-iter-val.case
+++ b/src/dstr-binding-async-iteration/ary-name-iter-val.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding with normal value iteration
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
index 15df36937e..bdb8f5cf39 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with array binding pattern and initializer is used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
index b3668d6180..9bd2c5efd4 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with array binding pattern and initializer is not used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
index 49933f6364..0178a9989d 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with array binding pattern and initializer is used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
index 47da0accc9..62dbda5e42 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with array binding pattern and initializer is not used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
index df0c90fdb5..753486e61c 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with array binding pattern and initializer is used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
index b2c0aa1f59..7658202439 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with array binding pattern and initializer is not used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
index 18ac2bb211..886ee7628b 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with array binding pattern and initializer is used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
index 63f77b64b3..4e59bec956 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with array binding pattern and initializer is not used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
index abe6ac4f3d..aeedd3dd93 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Nested array destructuring with a null value
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
index fbd4ffa0ac..72863c8273 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer with an exhausted iterator
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
index 0dda822299..d9508813b8 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding does assign name to arrow functions
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
index fd129368d4..60c47a8c55 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding assigns `name` to "anonymous" classes
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
index 40f16c07f2..7e0eeac7e6 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
index d6b36ee6ac..978470e6d3 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding assigns name to "anonymous" functions
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
index 04587c07cd..03c90595a6 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding assigns name to "anonymous" generator functions
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
index e34d9a1fd4..4da9a55451 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer with a "hole"
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
index 803289ac0e..acee36deb0 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer is not evaluated when value is not `undefined`
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
index 2b05bf7cd5..b4e2aa586f 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer returns an abrupt completion
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
index 1767bd23db..b33370600c 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer with an undefined value
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
index 109063ea87..453f4284ba 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer is an unresolvable reference
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
index 93f3588e1d..0090e78252 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding when value iteration completes
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
index 745eb08019..71be204d40 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding when value iteration was completed previously
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
index 58feda2796..930ac459d1 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Error forwarding when IteratorStep returns an abrupt completion
@@ -19,7 +19,7 @@ info: |
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       throw new Test262Error();
     }
   };
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
index e52c52a93d..65b569b266 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Error forwarding when IteratorValue returns an abrupt completion
@@ -30,7 +30,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
index 20a3e47ba4..d1f6df4617 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding when value iteration was completed previously
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
index 2133fc1fc3..c792499b1f 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with object binding pattern and initializer is used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
index a8cf157efc..3ffcbeb043 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with object binding pattern and initializer is not used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
index 1ad7f3a6ca..6664569c44 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with object binding pattern and initializer is used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
index 8517cae5d7..be7410e971 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: BindingElement with object binding pattern and initializer is not used
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
index 9f15b25aae..23b56ae8a4 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Nested object destructuring with a null value
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
index 1f0c3aa990..3c884f3430 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Nested object destructuring with a value of `undefined`
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case b/src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case
index 1f3b1fd8e6..2d7cd5094a 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Elision accepts exhausted iterator
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case b/src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case
index 7f0b3789f1..1f1d694480 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Elision advances iterator and forwards abrupt completions
@@ -25,7 +25,7 @@ features: [generator]
 
 //- setup
 var following = 0;
-var iter =function* () {
+var iter = function* () {
   throw new Test262Error();
   following += 1;
 }();
@@ -35,3 +35,5 @@ var iter =function* () {
 iter
 //- error
 Test262Error
+//- rejectBody
+assert.sameValue(following, 0, "iterator is properly closed");
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision.case b/src/dstr-binding-async-iteration/ary-ptrn-elision.case
index 9784dea4f2..828e8413a3 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elision.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elision.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Elision advances iterator
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-empty.case b/src/dstr-binding-async-iteration/ary-ptrn-empty.case
index 49b126c225..6a348ea180 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-empty.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-empty.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: No iteration occurs for an "empty" array binding pattern
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
index a143fdf1d9..bab100bba2 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case
index dc6b008a6d..d11cb72432 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case
index 11994f9933..bbaea3f56a 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case
index c794f9b447..428687e1c7 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case
index 413ec04398..96ac1ad5a6 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case
index 49780b19dc..0643b134dc 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case
index 1476e3cb96..18ab5e958c 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case
index 1bb3bd0637..48b826f78f 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case
index b3fb42708b..5912533b88 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
@@ -31,7 +31,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-id.case
index 1b0f446417..93ea865bee 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-id.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-id.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case
index ab359ad3f3..8d302fa4c9 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case
index e5ab514c08..157935b1a6 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case
index dc3cf7437a..e55c245fde 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case
index c76c83d0a4..4a7b66f869 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case
index 962733013a..b569bb020d 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case
index 00c70507ea..3540f3dd1c 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case
index fd42f56de5..5270aaddac 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case
index 3ad1150230..17c410b43c 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/error/for-await-of-async-gen-const.template b/src/dstr-binding-async-iteration/error/for-await-of-async-gen-const.template
index 4f4f2deb0f..85241ea97e 100644
--- a/src/dstr-binding-async-iteration/error/for-await-of-async-gen-const.template
+++ b/src/dstr-binding-async-iteration/error/for-await-of-async-gen-const.template
@@ -43,6 +43,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, /*{ error }*/);
+    /*{ rejectBody }*/
+  })
   .then($DONE, $DONE);
-
diff --git a/src/dstr-binding-async-iteration/error/for-await-of-async-gen-let.template b/src/dstr-binding-async-iteration/error/for-await-of-async-gen-let.template
index 38c2f00fbc..f75e5e204b 100644
--- a/src/dstr-binding-async-iteration/error/for-await-of-async-gen-let.template
+++ b/src/dstr-binding-async-iteration/error/for-await-of-async-gen-let.template
@@ -43,5 +43,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, /*{ error }*/);
+    /*{ rejectBody }*/
+  })
   .then($DONE, $DONE);
diff --git a/src/dstr-binding-async-iteration/error/for-await-of-async-gen-var.template b/src/dstr-binding-async-iteration/error/for-await-of-async-gen-var.template
index 41f9d08a27..c0bbe2f0f0 100644
--- a/src/dstr-binding-async-iteration/error/for-await-of-async-gen-var.template
+++ b/src/dstr-binding-async-iteration/error/for-await-of-async-gen-var.template
@@ -43,6 +43,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, /*{ error }*/);
+    /*{ rejectBody }*/
+  })
   .then($DONE, $DONE);
 
diff --git a/src/dstr-binding-async-iteration/obj-init-null.case b/src/dstr-binding-async-iteration/obj-init-null.case
index 0772e36f77..23aa54c10c 100644
--- a/src/dstr-binding-async-iteration/obj-init-null.case
+++ b/src/dstr-binding-async-iteration/obj-init-null.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/obj-init-undefined.case b/src/dstr-binding-async-iteration/obj-init-undefined.case
index f41405f6fe..90d27b0099 100644
--- a/src/dstr-binding-async-iteration/obj-init-undefined.case
+++ b/src/dstr-binding-async-iteration/obj-init-undefined.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-empty.case b/src/dstr-binding-async-iteration/obj-ptrn-empty.case
index 97ecebd347..1431451d48 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-empty.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-empty.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case b/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
index 68ae3348af..e076d45038 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
index 55cc1ad0ba..fa6f8c4421 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding assigns `name` to arrow functions
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
index 2b5a385dda..78195dbc59 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding assigns `name` to "anonymous" classes
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
index 624b00fce0..80fc16a634 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
index d6130cc9a6..7bdb04eb4c 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding assigns name to "anonymous" functions
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
index 977d9f08d9..0faa807d89 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: SingleNameBinding assigns name to "anonymous" generator functions
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
index ef10476d53..841a67957b 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer is not evaluated when value is not `undefined`
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
index e67f63480e..404b219ed4 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
index dd6d9dc839..c7240ada5a 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer is an unresolvable reference
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case b/src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case
index 5dc0cbe68a..3cfb1f7100 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-list-err.case b/src/dstr-binding-async-iteration/obj-ptrn-list-err.case
index 73dc15e7df..fd545b3987 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-list-err.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-list-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
index 41ffaa1ac6..0f002e6c30 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case
index 17007b54cf..7cccbd084b 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case
index abe84e43f7..af5b3ec081 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case
index 254c8f06ba..40a73c566a 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case
index 9721474c36..12e9850090 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Evaluation of property name returns an abrupt completion
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
index 3851240d08..d54512d111 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Error thrown when accessing the corresponding property of the value object
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
index 49ec6684f2..35d96b5fa5 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer is not evaluated when value is not `undefined`
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
index e878fc6f3a..7ae3799c50 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
index d11f68d9df..0733b66875 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 desc: Destructuring initializer is an unresolvable reference
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
index 5b6723f746..52dfc6b2b2 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case
index cee4bc0577..c131b3e343 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
index ebd0652976..3b9c894afb 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
index cc6da66b45..9766387ce5 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case
index 828049f9a0..2ea5ba4d09 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case
index 6c4582af3d..a19912f838 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: error
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case
index da412ccd6a..c38a0b8a24 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 template: default
-- 
GitLab


From e522cbce57c47f1f0204950f697c56ea586ff294 Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 22 May 2017 13:16:30 -0400
Subject: [PATCH 3/6] Update algorithm step definitions

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
---
 .../ary-init-iter-get-err.case                      |  3 +--
 .../ary-name-iter-val.case                          |  9 ++++-----
 .../ary-ptrn-elem-ary-elem-init.case                |  2 +-
 .../ary-ptrn-elem-ary-elem-iter.case                |  2 +-
 .../ary-ptrn-elem-ary-elision-init.case             |  2 +-
 .../ary-ptrn-elem-ary-elision-iter.case             |  2 +-
 .../ary-ptrn-elem-ary-empty-init.case               |  2 +-
 .../ary-ptrn-elem-ary-empty-iter.case               |  2 +-
 .../ary-ptrn-elem-ary-rest-init.case                |  2 +-
 .../ary-ptrn-elem-ary-rest-iter.case                |  2 +-
 .../ary-ptrn-elem-ary-val-null.case                 |  5 ++---
 .../ary-ptrn-elem-id-init-exhausted.case            | 10 +++++-----
 .../ary-ptrn-elem-id-init-fn-name-arrow.case        | 13 ++++++-------
 .../ary-ptrn-elem-id-init-fn-name-class.case        | 13 ++++++-------
 .../ary-ptrn-elem-id-init-fn-name-cover.case        | 13 ++++++-------
 .../ary-ptrn-elem-id-init-fn-name-fn.case           | 13 ++++++-------
 .../ary-ptrn-elem-id-init-fn-name-gen.case          | 13 ++++++-------
 .../ary-ptrn-elem-id-init-hole.case                 |  8 ++++----
 .../ary-ptrn-elem-id-init-skipped.case              |  4 ++--
 .../ary-ptrn-elem-id-init-throws.case               |  7 +++----
 .../ary-ptrn-elem-id-init-undef.case                |  8 ++++----
 .../ary-ptrn-elem-id-init-unresolvable.case         |  9 ++++-----
 .../ary-ptrn-elem-id-iter-complete.case             |  8 ++++----
 .../ary-ptrn-elem-id-iter-done.case                 |  8 ++++----
 .../ary-ptrn-elem-id-iter-step-err.case             |  4 ++--
 .../ary-ptrn-elem-id-iter-val-err.case              |  4 ++--
 .../ary-ptrn-elem-id-iter-val.case                  |  9 ++++-----
 .../ary-ptrn-elem-obj-id-init.case                  |  2 +-
 .../ary-ptrn-elem-obj-id.case                       |  2 +-
 .../ary-ptrn-elem-obj-prop-id-init.case             |  2 +-
 .../ary-ptrn-elem-obj-prop-id.case                  |  2 +-
 .../ary-ptrn-elem-obj-val-null.case                 |  2 +-
 .../ary-ptrn-elem-obj-val-undef.case                |  2 +-
 .../ary-ptrn-rest-ary-elem.case                     |  9 ++++-----
 .../obj-ptrn-id-get-value-err.case                  |  2 +-
 .../obj-ptrn-id-init-fn-name-arrow.case             |  2 +-
 .../obj-ptrn-id-init-fn-name-class.case             |  2 +-
 .../obj-ptrn-id-init-fn-name-cover.case             |  2 +-
 .../obj-ptrn-id-init-fn-name-fn.case                |  2 +-
 .../obj-ptrn-id-init-fn-name-gen.case               |  2 +-
 .../obj-ptrn-id-init-skipped.case                   |  2 +-
 .../obj-ptrn-id-init-throws.case                    |  2 +-
 .../obj-ptrn-id-init-unresolvable.case              |  9 ++++-----
 .../obj-ptrn-prop-ary-init.case                     |  5 ++---
 .../obj-ptrn-prop-id-get-value-err.case             |  2 +-
 .../obj-ptrn-prop-id-init-skipped.case              |  2 +-
 .../obj-ptrn-prop-id-init-throws.case               |  7 +++----
 .../obj-ptrn-prop-id-init-unresolvable.case         |  9 ++++-----
 .../obj-ptrn-prop-id-init.case                      |  4 ++--
 .../obj-ptrn-prop-id.case                           |  4 ++--
 .../obj-ptrn-prop-obj-init.case                     |  5 ++---
 51 files changed, 122 insertions(+), 139 deletions(-)

diff --git a/src/dstr-binding-async-iteration/ary-init-iter-get-err.case b/src/dstr-binding-async-iteration/ary-init-iter-get-err.case
index 22f52a5eeb..1ac51278be 100644
--- a/src/dstr-binding-async-iteration/ary-init-iter-get-err.case
+++ b/src/dstr-binding-async-iteration/ary-init-iter-get-err.case
@@ -8,8 +8,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 features: [Symbol.iterator]
 ---*/
 
diff --git a/src/dstr-binding-async-iteration/ary-name-iter-val.case b/src/dstr-binding-async-iteration/ary-name-iter-val.case
index d793554bba..624994f470 100644
--- a/src/dstr-binding-async-iteration/ary-name-iter-val.case
+++ b/src/dstr-binding-async-iteration/ary-name-iter-val.case
@@ -6,23 +6,22 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
index bdb8f5cf39..ae00dace28 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
index 9bd2c5efd4..cb561cf1bb 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
index 0178a9989d..e09a765c7f 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
index 62dbda5e42..96f07a6d13 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
index 753486e61c..fcec666f24 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
index 7658202439..c88783d150 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
index 886ee7628b..59f46ff490 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
index 4e59bec956..b7269eac16 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
index aeedd3dd93..633f880f97 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
@@ -6,7 +6,7 @@ template: error
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -20,8 +20,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
index 72863c8273..df82792fe6 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
@@ -6,16 +6,16 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
index d9508813b8..23001a4dd1 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
@@ -6,17 +6,16 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
index 60c47a8c55..4185a236b5 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
@@ -6,17 +6,16 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
index 7e0eeac7e6..e466b2b047 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
@@ -6,17 +6,16 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
index 978470e6d3..e537c02c87 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
@@ -6,17 +6,16 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
index 03c90595a6..5b1736e884 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
@@ -6,17 +6,16 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
index 4da9a55451..a234fffd82 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
@@ -6,15 +6,15 @@ template: default
 info: >
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
index acee36deb0..84cf03cf45 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
@@ -6,13 +6,13 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- setup
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
index b4e2aa586f..f4eb856aa0 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
@@ -6,13 +6,12 @@ template: error
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
index b33370600c..3cbf54138d 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
@@ -6,15 +6,15 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
index 453f4284ba..9dc9bf8f4c 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
@@ -6,15 +6,14 @@ template: error
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
index 0090e78252..de40bed9e7 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
@@ -6,19 +6,19 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
index 71be204d40..e21fb9eaf9 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
@@ -6,14 +6,14 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
index 930ac459d1..34faa9e14a 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
@@ -6,10 +6,10 @@ template: error
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
index 65b569b266..d87224a323 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
@@ -6,10 +6,10 @@ template: error
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
index d1f6df4617..364ffa6fbf 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
@@ -6,23 +6,22 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
index c792499b1f..b3be0967b2 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
index 3ffcbeb043..d6ca94ed31 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
index 6664569c44..10887bd28f 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
index be7410e971..2c5bd0cbef 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
index 23b56ae8a4..bcdf94c98a 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
@@ -6,7 +6,7 @@ template: error
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
index 3c884f3430..f3603bc0ad 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
@@ -6,7 +6,7 @@ template: error
 info: |
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
index bab100bba2..79a93524cc 100644
--- a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
+++ b/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
@@ -19,23 +19,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case b/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
index e076d45038..b2362e7ebc 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
@@ -6,7 +6,7 @@ desc: Error thrown when accessing the corresponding property of the value object
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     4. Let v be GetV(value, propertyName).
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
index fa6f8c4421..998eff71da 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
index 78195dbc59..32efdf247a 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
index 80fc16a634..2196172896 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
index 7bdb04eb4c..a2a99b4383 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
index 0faa807d89..3eb8bcd5d5 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
index 841a67957b..8d666d5083 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
index 404b219ed4..411983d824 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
@@ -6,7 +6,7 @@ desc: Error thrown when evaluating the initializer
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case b/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
index c7240ada5a..9e00a4aad2 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
@@ -6,15 +6,14 @@ template: error
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
index 0f002e6c30..d5cded54a8 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
@@ -7,10 +7,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
index d54512d111..5b6c9d14d6 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
@@ -6,7 +6,7 @@ template: error
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. Let v be GetV(value, propertyName).
     2. ReturnIfAbrupt(v).
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
index 35d96b5fa5..ad6d039b17 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
@@ -6,7 +6,7 @@ template: default
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
index 7ae3799c50..07d185806f 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
@@ -6,13 +6,12 @@ desc: Error thrown when evaluating the initializer
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 
 //- setup
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
index 0733b66875..d7192fad3a 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
@@ -6,15 +6,14 @@ template: error
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
index 52dfc6b2b2..4ec47bb8e9 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
@@ -6,10 +6,10 @@ desc: Binding as specified via property name, identifier, and initializer
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
index 3b9c894afb..6ddeaba2bf 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
@@ -6,10 +6,10 @@ desc: Binding as specified via property name and identifier
 info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 //- elems
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
index 9766387ce5..6132854fbe 100644
--- a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
+++ b/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
@@ -7,10 +7,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
-- 
GitLab


From b1620ab5b825c91e3f05ab5dd6df271e6b596c95 Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 22 May 2017 13:23:12 -0400
Subject: [PATCH 4/6] src/dstr-binding-async-iteration =>
 src/dstr-binding-for-await

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
---
 .../ary-init-iter-close.case                                      | 0
 .../ary-init-iter-get-err.case                                    | 0
 .../ary-init-iter-no-close.case                                   | 0
 .../ary-name-iter-val.case                                        | 0
 .../ary-ptrn-elem-ary-elem-init.case                              | 0
 .../ary-ptrn-elem-ary-elem-iter.case                              | 0
 .../ary-ptrn-elem-ary-elision-init.case                           | 0
 .../ary-ptrn-elem-ary-elision-iter.case                           | 0
 .../ary-ptrn-elem-ary-empty-init.case                             | 0
 .../ary-ptrn-elem-ary-empty-iter.case                             | 0
 .../ary-ptrn-elem-ary-rest-init.case                              | 0
 .../ary-ptrn-elem-ary-rest-iter.case                              | 0
 .../ary-ptrn-elem-ary-val-null.case                               | 0
 .../ary-ptrn-elem-id-init-exhausted.case                          | 0
 .../ary-ptrn-elem-id-init-fn-name-arrow.case                      | 0
 .../ary-ptrn-elem-id-init-fn-name-class.case                      | 0
 .../ary-ptrn-elem-id-init-fn-name-cover.case                      | 0
 .../ary-ptrn-elem-id-init-fn-name-fn.case                         | 0
 .../ary-ptrn-elem-id-init-fn-name-gen.case                        | 0
 .../ary-ptrn-elem-id-init-hole.case                               | 0
 .../ary-ptrn-elem-id-init-skipped.case                            | 0
 .../ary-ptrn-elem-id-init-throws.case                             | 0
 .../ary-ptrn-elem-id-init-undef.case                              | 0
 .../ary-ptrn-elem-id-init-unresolvable.case                       | 0
 .../ary-ptrn-elem-id-iter-complete.case                           | 0
 .../ary-ptrn-elem-id-iter-done.case                               | 0
 .../ary-ptrn-elem-id-iter-step-err.case                           | 0
 .../ary-ptrn-elem-id-iter-val-err.case                            | 0
 .../ary-ptrn-elem-id-iter-val.case                                | 0
 .../ary-ptrn-elem-obj-id-init.case                                | 0
 .../ary-ptrn-elem-obj-id.case                                     | 0
 .../ary-ptrn-elem-obj-prop-id-init.case                           | 0
 .../ary-ptrn-elem-obj-prop-id.case                                | 0
 .../ary-ptrn-elem-obj-val-null.case                               | 0
 .../ary-ptrn-elem-obj-val-undef.case                              | 0
 .../ary-ptrn-elision-exhausted.case                               | 0
 .../ary-ptrn-elision-iter-close.case                              | 0
 .../ary-ptrn-elision-step-err.case                                | 0
 .../ary-ptrn-elision.case                                         | 0
 .../ary-ptrn-empty.case                                           | 0
 .../ary-ptrn-rest-ary-elem.case                                   | 0
 .../ary-ptrn-rest-ary-elision.case                                | 0
 .../ary-ptrn-rest-ary-empty.case                                  | 0
 .../ary-ptrn-rest-ary-rest.case                                   | 0
 .../ary-ptrn-rest-id-elision-next-err.case                        | 0
 .../ary-ptrn-rest-id-elision.case                                 | 0
 .../ary-ptrn-rest-id-exhausted.case                               | 0
 .../ary-ptrn-rest-id-iter-close.case                              | 0
 .../ary-ptrn-rest-id-iter-step-err.case                           | 0
 .../ary-ptrn-rest-id-iter-val-err.case                            | 0
 .../ary-ptrn-rest-id.case                                         | 0
 .../ary-ptrn-rest-init-ary.case                                   | 0
 .../ary-ptrn-rest-init-id.case                                    | 0
 .../ary-ptrn-rest-init-obj.case                                   | 0
 .../ary-ptrn-rest-not-final-ary.case                              | 0
 .../ary-ptrn-rest-not-final-id.case                               | 0
 .../ary-ptrn-rest-not-final-obj.case                              | 0
 .../ary-ptrn-rest-obj-id.case                                     | 0
 .../ary-ptrn-rest-obj-prop-id.case                                | 0
 .../default/for-await-of-async-func-const-async.template          | 0
 .../default/for-await-of-async-func-const.template                | 0
 .../default/for-await-of-async-func-let-async.template            | 0
 .../default/for-await-of-async-func-let.template                  | 0
 .../default/for-await-of-async-func-var-async.template            | 0
 .../default/for-await-of-async-func-var.template                  | 0
 .../default/for-await-of-async-gen-const-async.template           | 0
 .../default/for-await-of-async-gen-const.template                 | 0
 .../default/for-await-of-async-gen-let-async.template             | 0
 .../default/for-await-of-async-gen-let.template                   | 0
 .../default/for-await-of-async-gen-var-async.template             | 0
 .../default/for-await-of-async-gen-var.template                   | 0
 .../error/for-await-of-async-func-const.template                  | 0
 .../error/for-await-of-async-func-let.template                    | 0
 .../error/for-await-of-async-func-var.template                    | 0
 .../error/for-await-of-async-gen-const.template                   | 0
 .../error/for-await-of-async-gen-let.template                     | 0
 .../error/for-await-of-async-gen-var.template                     | 0
 .../iter-close/for-await-of-async-func-const.template             | 0
 .../iter-close/for-await-of-async-func-let.template               | 0
 .../iter-close/for-await-of-async-func-var.template               | 0
 .../iter-close/for-await-of-async-gen-const.template              | 0
 .../iter-close/for-await-of-async-gen-let.template                | 0
 .../iter-close/for-await-of-async-gen-var.template                | 0
 .../obj-init-null.case                                            | 0
 .../obj-init-undefined.case                                       | 0
 .../obj-ptrn-empty.case                                           | 0
 .../obj-ptrn-id-get-value-err.case                                | 0
 .../obj-ptrn-id-init-fn-name-arrow.case                           | 0
 .../obj-ptrn-id-init-fn-name-class.case                           | 0
 .../obj-ptrn-id-init-fn-name-cover.case                           | 0
 .../obj-ptrn-id-init-fn-name-fn.case                              | 0
 .../obj-ptrn-id-init-fn-name-gen.case                             | 0
 .../obj-ptrn-id-init-skipped.case                                 | 0
 .../obj-ptrn-id-init-throws.case                                  | 0
 .../obj-ptrn-id-init-unresolvable.case                            | 0
 .../obj-ptrn-id-trailing-comma.case                               | 0
 .../obj-ptrn-list-err.case                                        | 0
 .../obj-ptrn-prop-ary-init.case                                   | 0
 .../obj-ptrn-prop-ary-trailing-comma.case                         | 0
 .../obj-ptrn-prop-ary-value-null.case                             | 0
 .../obj-ptrn-prop-ary.case                                        | 0
 .../obj-ptrn-prop-eval-err.case                                   | 0
 .../obj-ptrn-prop-id-get-value-err.case                           | 0
 .../obj-ptrn-prop-id-init-skipped.case                            | 0
 .../obj-ptrn-prop-id-init-throws.case                             | 0
 .../obj-ptrn-prop-id-init-unresolvable.case                       | 0
 .../obj-ptrn-prop-id-init.case                                    | 0
 .../obj-ptrn-prop-id-trailing-comma.case                          | 0
 .../obj-ptrn-prop-id.case                                         | 0
 .../obj-ptrn-prop-obj-init.case                                   | 0
 .../obj-ptrn-prop-obj-value-null.case                             | 0
 .../obj-ptrn-prop-obj-value-undef.case                            | 0
 .../obj-ptrn-prop-obj.case                                        | 0
 .../obj-ptrn-rest-getter.case                                     | 0
 .../obj-ptrn-rest-nested-obj.case                                 | 0
 .../obj-ptrn-rest-obj-nested-rest.case                            | 0
 .../obj-ptrn-rest-obj-own-property.case                           | 0
 .../obj-ptrn-rest-skip-non-enumerable.case                        | 0
 .../obj-ptrn-rest-val-obj.case                                    | 0
 119 files changed, 0 insertions(+), 0 deletions(-)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-init-iter-close.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-init-iter-get-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-init-iter-no-close.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-name-iter-val.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-ary-elem-init.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-ary-elem-iter.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-ary-elision-init.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-ary-elision-iter.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-ary-empty-init.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-ary-empty-iter.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-ary-rest-init.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-ary-rest-iter.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-ary-val-null.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-exhausted.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-fn-name-arrow.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-fn-name-class.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-fn-name-cover.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-fn-name-fn.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-fn-name-gen.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-hole.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-skipped.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-throws.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-undef.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-init-unresolvable.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-iter-complete.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-iter-done.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-iter-step-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-iter-val-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-id-iter-val.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-obj-id-init.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-obj-id.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-obj-prop-id-init.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-obj-prop-id.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-obj-val-null.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elem-obj-val-undef.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elision-exhausted.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elision-iter-close.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elision-step-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-elision.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-empty.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-ary-elem.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-ary-elision.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-ary-empty.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-ary-rest.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-id-elision-next-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-id-elision.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-id-exhausted.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-id-iter-close.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-id-iter-step-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-id-iter-val-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-id.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-init-ary.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-init-id.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-init-obj.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-not-final-ary.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-not-final-id.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-not-final-obj.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-obj-id.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/ary-ptrn-rest-obj-prop-id.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-func-const-async.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-func-const.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-func-let-async.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-func-let.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-func-var-async.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-func-var.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-gen-const-async.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-gen-const.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-gen-let-async.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-gen-let.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-gen-var-async.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/default/for-await-of-async-gen-var.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/error/for-await-of-async-func-const.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/error/for-await-of-async-func-let.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/error/for-await-of-async-func-var.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/error/for-await-of-async-gen-const.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/error/for-await-of-async-gen-let.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/error/for-await-of-async-gen-var.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/iter-close/for-await-of-async-func-const.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/iter-close/for-await-of-async-func-let.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/iter-close/for-await-of-async-func-var.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/iter-close/for-await-of-async-gen-const.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/iter-close/for-await-of-async-gen-let.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/iter-close/for-await-of-async-gen-var.template (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-init-null.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-init-undefined.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-empty.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-get-value-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-init-fn-name-arrow.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-init-fn-name-class.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-init-fn-name-cover.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-init-fn-name-fn.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-init-fn-name-gen.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-init-skipped.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-init-throws.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-init-unresolvable.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-id-trailing-comma.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-list-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-ary-init.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-ary-trailing-comma.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-ary-value-null.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-ary.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-eval-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-id-get-value-err.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-id-init-skipped.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-id-init-throws.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-id-init-unresolvable.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-id-init.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-id-trailing-comma.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-id.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-obj-init.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-obj-value-null.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-obj-value-undef.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-prop-obj.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-rest-getter.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-rest-nested-obj.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-rest-obj-nested-rest.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-rest-obj-own-property.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-rest-skip-non-enumerable.case (100%)
 rename src/{dstr-binding-async-iteration => dstr-binding-for-await}/obj-ptrn-rest-val-obj.case (100%)

diff --git a/src/dstr-binding-async-iteration/ary-init-iter-close.case b/src/dstr-binding-for-await/ary-init-iter-close.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-init-iter-close.case
rename to src/dstr-binding-for-await/ary-init-iter-close.case
diff --git a/src/dstr-binding-async-iteration/ary-init-iter-get-err.case b/src/dstr-binding-for-await/ary-init-iter-get-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-init-iter-get-err.case
rename to src/dstr-binding-for-await/ary-init-iter-get-err.case
diff --git a/src/dstr-binding-async-iteration/ary-init-iter-no-close.case b/src/dstr-binding-for-await/ary-init-iter-no-close.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-init-iter-no-close.case
rename to src/dstr-binding-for-await/ary-init-iter-no-close.case
diff --git a/src/dstr-binding-async-iteration/ary-name-iter-val.case b/src/dstr-binding-for-await/ary-name-iter-val.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-name-iter-val.case
rename to src/dstr-binding-for-await/ary-name-iter-val.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case b/src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-init.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case b/src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elem-iter.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case b/src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-init.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case b/src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-ary-elision-iter.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case b/src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-init.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case b/src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-ary-empty-iter.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case b/src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-init.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case b/src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-ary-rest-iter.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case b/src/dstr-binding-for-await/ary-ptrn-elem-ary-val-null.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-ary-val-null.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-ary-val-null.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-exhausted.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-arrow.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-class.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-cover.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-fn.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-fn-name-gen.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-hole.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-skipped.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-throws.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-throws.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-throws.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-undef.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-init-unresolvable.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-init-unresolvable.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-init-unresolvable.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-complete.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-done.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-iter-step-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-step-err.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-iter-step-err.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val-err.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val-err.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case b/src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-id-iter-val.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case b/src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id-init.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case b/src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-obj-id.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case b/src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id-init.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case b/src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-obj-prop-id.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case b/src/dstr-binding-for-await/ary-ptrn-elem-obj-val-null.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-null.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-obj-val-null.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case b/src/dstr-binding-for-await/ary-ptrn-elem-obj-val-undef.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elem-obj-val-undef.case
rename to src/dstr-binding-for-await/ary-ptrn-elem-obj-val-undef.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case b/src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elision-exhausted.case
rename to src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision-iter-close.case b/src/dstr-binding-for-await/ary-ptrn-elision-iter-close.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elision-iter-close.case
rename to src/dstr-binding-for-await/ary-ptrn-elision-iter-close.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case b/src/dstr-binding-for-await/ary-ptrn-elision-step-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elision-step-err.case
rename to src/dstr-binding-for-await/ary-ptrn-elision-step-err.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-elision.case b/src/dstr-binding-for-await/ary-ptrn-elision.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-elision.case
rename to src/dstr-binding-for-await/ary-ptrn-elision.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-empty.case b/src/dstr-binding-for-await/ary-ptrn-empty.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-empty.case
rename to src/dstr-binding-for-await/ary-ptrn-empty.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case b/src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elem.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case b/src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-ary-elision.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case b/src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-ary-empty.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case b/src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-ary-rest.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case b/src/dstr-binding-for-await/ary-ptrn-rest-id-elision-next-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision-next-err.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-id-elision-next-err.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case b/src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-id-elision.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case b/src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-id-exhausted.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-close.case b/src/dstr-binding-for-await/ary-ptrn-rest-id-iter-close.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-close.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-id-iter-close.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case b/src/dstr-binding-for-await/ary-ptrn-rest-id-iter-step-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-step-err.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-id-iter-step-err.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case b/src/dstr-binding-for-await/ary-ptrn-rest-id-iter-val-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-id-iter-val-err.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-id-iter-val-err.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-id.case b/src/dstr-binding-for-await/ary-ptrn-rest-id.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-id.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-id.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case b/src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-init-ary.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case b/src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-init-id.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case b/src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-init-obj.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case b/src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-ary.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case b/src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-id.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case b/src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-not-final-obj.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case b/src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-obj-id.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
diff --git a/src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case b/src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
similarity index 100%
rename from src/dstr-binding-async-iteration/ary-ptrn-rest-obj-prop-id.case
rename to src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-func-const-async.template b/src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-func-const-async.template
rename to src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-func-const.template b/src/dstr-binding-for-await/default/for-await-of-async-func-const.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-func-const.template
rename to src/dstr-binding-for-await/default/for-await-of-async-func-const.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-func-let-async.template b/src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-func-let-async.template
rename to src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-func-let.template b/src/dstr-binding-for-await/default/for-await-of-async-func-let.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-func-let.template
rename to src/dstr-binding-for-await/default/for-await-of-async-func-let.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-func-var-async.template b/src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-func-var-async.template
rename to src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-func-var.template b/src/dstr-binding-for-await/default/for-await-of-async-func-var.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-func-var.template
rename to src/dstr-binding-for-await/default/for-await-of-async-func-var.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-gen-const-async.template b/src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-gen-const-async.template
rename to src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-gen-const.template b/src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-gen-const.template
rename to src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-gen-let-async.template b/src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-gen-let-async.template
rename to src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-gen-let.template b/src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-gen-let.template
rename to src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-gen-var-async.template b/src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-gen-var-async.template
rename to src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
diff --git a/src/dstr-binding-async-iteration/default/for-await-of-async-gen-var.template b/src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
similarity index 100%
rename from src/dstr-binding-async-iteration/default/for-await-of-async-gen-var.template
rename to src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
diff --git a/src/dstr-binding-async-iteration/error/for-await-of-async-func-const.template b/src/dstr-binding-for-await/error/for-await-of-async-func-const.template
similarity index 100%
rename from src/dstr-binding-async-iteration/error/for-await-of-async-func-const.template
rename to src/dstr-binding-for-await/error/for-await-of-async-func-const.template
diff --git a/src/dstr-binding-async-iteration/error/for-await-of-async-func-let.template b/src/dstr-binding-for-await/error/for-await-of-async-func-let.template
similarity index 100%
rename from src/dstr-binding-async-iteration/error/for-await-of-async-func-let.template
rename to src/dstr-binding-for-await/error/for-await-of-async-func-let.template
diff --git a/src/dstr-binding-async-iteration/error/for-await-of-async-func-var.template b/src/dstr-binding-for-await/error/for-await-of-async-func-var.template
similarity index 100%
rename from src/dstr-binding-async-iteration/error/for-await-of-async-func-var.template
rename to src/dstr-binding-for-await/error/for-await-of-async-func-var.template
diff --git a/src/dstr-binding-async-iteration/error/for-await-of-async-gen-const.template b/src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
similarity index 100%
rename from src/dstr-binding-async-iteration/error/for-await-of-async-gen-const.template
rename to src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
diff --git a/src/dstr-binding-async-iteration/error/for-await-of-async-gen-let.template b/src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
similarity index 100%
rename from src/dstr-binding-async-iteration/error/for-await-of-async-gen-let.template
rename to src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
diff --git a/src/dstr-binding-async-iteration/error/for-await-of-async-gen-var.template b/src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
similarity index 100%
rename from src/dstr-binding-async-iteration/error/for-await-of-async-gen-var.template
rename to src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
diff --git a/src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-const.template b/src/dstr-binding-for-await/iter-close/for-await-of-async-func-const.template
similarity index 100%
rename from src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-const.template
rename to src/dstr-binding-for-await/iter-close/for-await-of-async-func-const.template
diff --git a/src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-let.template b/src/dstr-binding-for-await/iter-close/for-await-of-async-func-let.template
similarity index 100%
rename from src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-let.template
rename to src/dstr-binding-for-await/iter-close/for-await-of-async-func-let.template
diff --git a/src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-var.template b/src/dstr-binding-for-await/iter-close/for-await-of-async-func-var.template
similarity index 100%
rename from src/dstr-binding-async-iteration/iter-close/for-await-of-async-func-var.template
rename to src/dstr-binding-for-await/iter-close/for-await-of-async-func-var.template
diff --git a/src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-const.template b/src/dstr-binding-for-await/iter-close/for-await-of-async-gen-const.template
similarity index 100%
rename from src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-const.template
rename to src/dstr-binding-for-await/iter-close/for-await-of-async-gen-const.template
diff --git a/src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-let.template b/src/dstr-binding-for-await/iter-close/for-await-of-async-gen-let.template
similarity index 100%
rename from src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-let.template
rename to src/dstr-binding-for-await/iter-close/for-await-of-async-gen-let.template
diff --git a/src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-var.template b/src/dstr-binding-for-await/iter-close/for-await-of-async-gen-var.template
similarity index 100%
rename from src/dstr-binding-async-iteration/iter-close/for-await-of-async-gen-var.template
rename to src/dstr-binding-for-await/iter-close/for-await-of-async-gen-var.template
diff --git a/src/dstr-binding-async-iteration/obj-init-null.case b/src/dstr-binding-for-await/obj-init-null.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-init-null.case
rename to src/dstr-binding-for-await/obj-init-null.case
diff --git a/src/dstr-binding-async-iteration/obj-init-undefined.case b/src/dstr-binding-for-await/obj-init-undefined.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-init-undefined.case
rename to src/dstr-binding-for-await/obj-init-undefined.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-empty.case b/src/dstr-binding-for-await/obj-ptrn-empty.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-empty.case
rename to src/dstr-binding-for-await/obj-ptrn-empty.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case b/src/dstr-binding-for-await/obj-ptrn-id-get-value-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-get-value-err.case
rename to src/dstr-binding-for-await/obj-ptrn-id-get-value-err.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case b/src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-arrow.case
rename to src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case b/src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-class.case
rename to src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case b/src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-cover.case
rename to src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case b/src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-fn.case
rename to src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case b/src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-init-fn-name-gen.case
rename to src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case b/src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-init-skipped.case
rename to src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case b/src/dstr-binding-for-await/obj-ptrn-id-init-throws.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-init-throws.case
rename to src/dstr-binding-for-await/obj-ptrn-id-init-throws.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case b/src/dstr-binding-for-await/obj-ptrn-id-init-unresolvable.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-init-unresolvable.case
rename to src/dstr-binding-for-await/obj-ptrn-id-init-unresolvable.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case b/src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-id-trailing-comma.case
rename to src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-list-err.case b/src/dstr-binding-for-await/obj-ptrn-list-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-list-err.case
rename to src/dstr-binding-for-await/obj-ptrn-list-err.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case b/src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-ary-init.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case b/src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-ary-trailing-comma.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case b/src/dstr-binding-for-await/obj-ptrn-prop-ary-value-null.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-ary-value-null.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-ary-value-null.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case b/src/dstr-binding-for-await/obj-ptrn-prop-ary.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-ary.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-ary.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case b/src/dstr-binding-for-await/obj-ptrn-prop-eval-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-eval-err.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-eval-err.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case b/src/dstr-binding-for-await/obj-ptrn-prop-id-get-value-err.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-id-get-value-err.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-id-get-value-err.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case b/src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-skipped.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case b/src/dstr-binding-for-await/obj-ptrn-prop-id-init-throws.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-throws.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-id-init-throws.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case b/src/dstr-binding-for-await/obj-ptrn-prop-id-init-unresolvable.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-id-init-unresolvable.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-id-init-unresolvable.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case b/src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-id-init.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case b/src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-id-trailing-comma.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-id.case b/src/dstr-binding-for-await/obj-ptrn-prop-id.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-id.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-id.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case b/src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-obj-init.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case b/src/dstr-binding-for-await/obj-ptrn-prop-obj-value-null.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-null.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-obj-value-null.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case b/src/dstr-binding-for-await/obj-ptrn-prop-obj-value-undef.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-obj-value-undef.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-obj-value-undef.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case b/src/dstr-binding-for-await/obj-ptrn-prop-obj.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-prop-obj.case
rename to src/dstr-binding-for-await/obj-ptrn-prop-obj.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-getter.case b/src/dstr-binding-for-await/obj-ptrn-rest-getter.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-rest-getter.case
rename to src/dstr-binding-for-await/obj-ptrn-rest-getter.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-nested-obj.case b/src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-rest-nested-obj.case
rename to src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-obj-nested-rest.case b/src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-rest-obj-nested-rest.case
rename to src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-obj-own-property.case b/src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-rest-obj-own-property.case
rename to src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-skip-non-enumerable.case b/src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-rest-skip-non-enumerable.case
rename to src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
diff --git a/src/dstr-binding-async-iteration/obj-ptrn-rest-val-obj.case b/src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
similarity index 100%
rename from src/dstr-binding-async-iteration/obj-ptrn-rest-val-obj.case
rename to src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
-- 
GitLab


From f6dd54eb1928f80bc3e3c99efbc0f586d54cafe8 Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 22 May 2017 14:18:53 -0400
Subject: [PATCH 5/6] update the async func templates to match async generator
 templates (error)

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
---
 .../error/for-await-of-async-func-const.template           | 7 ++++++-
 .../error/for-await-of-async-func-let.template             | 7 ++++++-
 .../error/for-await-of-async-func-var.template             | 7 ++++++-
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/dstr-binding-for-await/error/for-await-of-async-func-const.template b/src/dstr-binding-for-await/error/for-await-of-async-func-const.template
index dc2fc2499b..0461728772 100644
--- a/src/dstr-binding-for-await/error/for-await-of-async-func-const.template
+++ b/src/dstr-binding-for-await/error/for-await-of-async-func-const.template
@@ -43,6 +43,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, /*{ error }*/);
+    /*{ rejectBody }*/
+  })
   .then($DONE, $DONE);
 
diff --git a/src/dstr-binding-for-await/error/for-await-of-async-func-let.template b/src/dstr-binding-for-await/error/for-await-of-async-func-let.template
index 291b51a648..1a018086d8 100644
--- a/src/dstr-binding-for-await/error/for-await-of-async-func-let.template
+++ b/src/dstr-binding-for-await/error/for-await-of-async-func-let.template
@@ -43,6 +43,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, /*{ error }*/);
+    /*{ rejectBody }*/
+  })
   .then($DONE, $DONE);
 
diff --git a/src/dstr-binding-for-await/error/for-await-of-async-func-var.template b/src/dstr-binding-for-await/error/for-await-of-async-func-var.template
index ab9ae97124..cfc53e2858 100644
--- a/src/dstr-binding-for-await/error/for-await-of-async-func-var.template
+++ b/src/dstr-binding-for-await/error/for-await-of-async-func-var.template
@@ -43,5 +43,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, /*{ error }*/);
+    /*{ rejectBody }*/
+  })
   .then($DONE, $DONE);
-- 
GitLab


From 0a66e9b9de5e9e444714b8197c3a8386315235d6 Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 22 May 2017 16:03:23 -0400
Subject: [PATCH 6/6] Generate tests

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
---
 ...ync-func-dstr-const-ary-init-iter-close.js |  8 +++----
 ...c-func-dstr-const-ary-init-iter-get-err.js | 14 ++++++++-----
 ...-func-dstr-const-ary-init-iter-no-close.js |  8 +++----
 ...async-func-dstr-const-ary-name-iter-val.js | 13 ++++++------
 ...-dstr-const-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...-dstr-const-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...tr-const-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...tr-const-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...dstr-const-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...dstr-const-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...-dstr-const-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...-dstr-const-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...c-dstr-const-ary-ptrn-elem-ary-val-null.js | 16 ++++++++------
 ...r-const-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...nst-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...nst-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...nst-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...-const-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...const-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...c-dstr-const-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...str-const-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...dstr-const-ary-ptrn-elem-id-init-throws.js | 18 +++++++++-------
 ...-dstr-const-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...onst-ary-ptrn-elem-id-init-unresolvable.js | 20 +++++++++++-------
 ...tr-const-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...c-dstr-const-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...tr-const-ary-ptrn-elem-id-iter-step-err.js | 17 +++++++++------
 ...str-const-ary-ptrn-elem-id-iter-val-err.js | 17 +++++++++------
 ...nc-dstr-const-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...nc-dstr-const-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...nc-func-dstr-const-ary-ptrn-elem-obj-id.js |  6 +++---
 ...tr-const-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...nc-dstr-const-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...c-dstr-const-ary-ptrn-elem-obj-val-null.js | 13 ++++++++----
 ...-dstr-const-ary-ptrn-elem-obj-val-undef.js | 13 ++++++++----
 ...c-dstr-const-ary-ptrn-elision-exhausted.js |  4 ++--
 ...-dstr-const-ary-ptrn-elision-iter-close.js |  4 ++--
 ...nc-dstr-const-ary-ptrn-elision-step-err.js | 16 +++++++-------
 .../async-func-dstr-const-ary-ptrn-elision.js |  4 ++--
 .../async-func-dstr-const-ary-ptrn-empty.js   |  4 ++--
 ...-func-dstr-const-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...nc-dstr-const-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...func-dstr-const-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...-func-dstr-const-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...const-ary-ptrn-rest-id-elision-next-err.js | 11 +++++++---
 ...unc-dstr-const-ary-ptrn-rest-id-elision.js |  4 ++--
 ...c-dstr-const-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...-dstr-const-ary-ptrn-rest-id-iter-close.js |  4 ++--
 ...tr-const-ary-ptrn-rest-id-iter-step-err.js | 15 ++++++-------
 ...str-const-ary-ptrn-rest-id-iter-val-err.js | 13 ++++++++----
 .../async-func-dstr-const-ary-ptrn-rest-id.js |  4 ++--
 ...-func-dstr-const-ary-ptrn-rest-init-ary.js |  4 ++--
 ...c-func-dstr-const-ary-ptrn-rest-init-id.js |  4 ++--
 ...-func-dstr-const-ary-ptrn-rest-init-obj.js |  4 ++--
 ...-dstr-const-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...c-dstr-const-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...-dstr-const-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...nc-func-dstr-const-ary-ptrn-rest-obj-id.js |  4 ++--
 ...nc-dstr-const-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...nc-dstr-const-async-ary-init-iter-close.js |  8 +++----
 ...dstr-const-async-ary-init-iter-no-close.js |  8 +++----
 ...func-dstr-const-async-ary-name-iter-val.js | 13 ++++++------
 ...const-async-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...const-async-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...st-async-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...st-async-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...onst-async-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...onst-async-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...const-async-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...const-async-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...t-async-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...ync-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...-async-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...async-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...-const-async-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...nst-async-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...const-async-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...st-async-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...-const-async-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...r-const-async-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...r-const-async-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...c-dstr-const-async-ary-ptrn-elem-obj-id.js |  6 +++---
 ...st-async-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...r-const-async-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...-const-async-ary-ptrn-elision-exhausted.js |  4 ++--
 ...-func-dstr-const-async-ary-ptrn-elision.js |  4 ++--
 ...nc-func-dstr-const-async-ary-ptrn-empty.js |  4 ++--
 ...dstr-const-async-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...r-const-async-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...str-const-async-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...dstr-const-async-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...tr-const-async-ary-ptrn-rest-id-elision.js |  4 ++--
 ...-const-async-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...-func-dstr-const-async-ary-ptrn-rest-id.js |  4 ++--
 ...dstr-const-async-ary-ptrn-rest-init-ary.js |  4 ++--
 ...-dstr-const-async-ary-ptrn-rest-init-id.js |  4 ++--
 ...dstr-const-async-ary-ptrn-rest-init-obj.js |  4 ++--
 ...const-async-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...-const-async-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...const-async-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...c-dstr-const-async-ary-ptrn-rest-obj-id.js |  4 ++--
 ...r-const-async-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...nc-func-dstr-const-async-obj-ptrn-empty.js |  4 ++--
 ...st-async-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...st-async-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...st-async-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...const-async-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...onst-async-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...tr-const-async-obj-ptrn-id-init-skipped.js |  6 +++---
 ...-const-async-obj-ptrn-id-trailing-comma.js |  4 ++--
 ...dstr-const-async-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...-async-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...func-dstr-const-async-obj-ptrn-prop-ary.js |  4 ++--
 ...nst-async-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...-dstr-const-async-obj-ptrn-prop-id-init.js |  8 +++----
 ...t-async-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 ...-func-dstr-const-async-obj-ptrn-prop-id.js |  8 +++----
 ...dstr-const-async-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...func-dstr-const-async-obj-ptrn-prop-obj.js |  4 ++--
 ...c-dstr-const-async-obj-ptrn-rest-getter.js |  4 ++--
 ...tr-const-async-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...nst-async-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...st-async-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...async-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...-dstr-const-async-obj-ptrn-rest-val-obj.js |  4 ++--
 .../async-func-dstr-const-obj-init-null.js    | 11 +++++++---
 ...sync-func-dstr-const-obj-init-undefined.js | 11 +++++++---
 .../async-func-dstr-const-obj-ptrn-empty.js   |  4 ++--
 ...nc-dstr-const-obj-ptrn-id-get-value-err.js | 13 ++++++++----
 ...tr-const-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...tr-const-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...tr-const-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...-dstr-const-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...dstr-const-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...unc-dstr-const-obj-ptrn-id-init-skipped.js |  6 +++---
 ...func-dstr-const-obj-ptrn-id-init-throws.js | 13 ++++++++----
 ...str-const-obj-ptrn-id-init-unresolvable.js | 20 +++++++++++-------
 ...c-dstr-const-obj-ptrn-id-trailing-comma.js |  4 ++--
 ...async-func-dstr-const-obj-ptrn-list-err.js | 13 +++++++-----
 ...-func-dstr-const-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...-const-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...dstr-const-obj-ptrn-prop-ary-value-null.js | 11 +++++++---
 ...async-func-dstr-const-obj-ptrn-prop-ary.js |  4 ++--
 ...-func-dstr-const-obj-ptrn-prop-eval-err.js | 11 +++++++---
 ...tr-const-obj-ptrn-prop-id-get-value-err.js | 15 +++++++------
 ...str-const-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...dstr-const-obj-ptrn-prop-id-init-throws.js | 18 +++++++++-------
 ...onst-obj-ptrn-prop-id-init-unresolvable.js | 20 +++++++++++-------
 ...c-func-dstr-const-obj-ptrn-prop-id-init.js |  8 +++----
 ...r-const-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 .../async-func-dstr-const-obj-ptrn-prop-id.js |  8 +++----
 ...-func-dstr-const-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...dstr-const-obj-ptrn-prop-obj-value-null.js | 11 +++++++---
 ...str-const-obj-ptrn-prop-obj-value-undef.js | 11 +++++++---
 ...async-func-dstr-const-obj-ptrn-prop-obj.js |  4 ++--
 ...nc-func-dstr-const-obj-ptrn-rest-getter.js |  4 ++--
 ...unc-dstr-const-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...str-const-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...tr-const-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...const-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...c-func-dstr-const-obj-ptrn-rest-val-obj.js |  4 ++--
 ...async-func-dstr-let-ary-init-iter-close.js |  8 +++----
 ...ync-func-dstr-let-ary-init-iter-get-err.js | 14 ++++++++-----
 ...nc-func-dstr-let-ary-init-iter-no-close.js |  8 +++----
 .../async-func-dstr-let-ary-name-iter-val.js  | 13 ++++++------
 ...nc-dstr-let-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...nc-dstr-let-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...dstr-let-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...dstr-let-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...c-dstr-let-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...c-dstr-let-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...nc-dstr-let-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...nc-dstr-let-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...unc-dstr-let-ary-ptrn-elem-ary-val-null.js | 16 ++++++++------
 ...str-let-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...let-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...let-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...let-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...tr-let-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...r-let-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...unc-dstr-let-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...-dstr-let-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...c-dstr-let-ary-ptrn-elem-id-init-throws.js | 18 +++++++++-------
 ...nc-dstr-let-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...-let-ary-ptrn-elem-id-init-unresolvable.js | 20 +++++++++++-------
 ...dstr-let-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...unc-dstr-let-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...dstr-let-ary-ptrn-elem-id-iter-step-err.js | 17 +++++++++------
 ...-dstr-let-ary-ptrn-elem-id-iter-val-err.js | 17 +++++++++------
 ...func-dstr-let-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...func-dstr-let-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...sync-func-dstr-let-ary-ptrn-elem-obj-id.js |  6 +++---
 ...dstr-let-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...func-dstr-let-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...unc-dstr-let-ary-ptrn-elem-obj-val-null.js | 13 ++++++++----
 ...nc-dstr-let-ary-ptrn-elem-obj-val-undef.js | 13 ++++++++----
 ...unc-dstr-let-ary-ptrn-elision-exhausted.js |  4 ++--
 ...nc-dstr-let-ary-ptrn-elision-iter-close.js |  4 ++--
 ...func-dstr-let-ary-ptrn-elision-step-err.js | 16 +++++++-------
 .../async-func-dstr-let-ary-ptrn-elision.js   |  4 ++--
 .../async-func-dstr-let-ary-ptrn-empty.js     |  4 ++--
 ...nc-func-dstr-let-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...func-dstr-let-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...c-func-dstr-let-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...nc-func-dstr-let-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...r-let-ary-ptrn-rest-id-elision-next-err.js | 11 +++++++---
 ...-func-dstr-let-ary-ptrn-rest-id-elision.js |  4 ++--
 ...unc-dstr-let-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...nc-dstr-let-ary-ptrn-rest-id-iter-close.js |  4 ++--
 ...dstr-let-ary-ptrn-rest-id-iter-step-err.js | 15 ++++++-------
 ...-dstr-let-ary-ptrn-rest-id-iter-val-err.js | 13 ++++++++----
 .../async-func-dstr-let-ary-ptrn-rest-id.js   |  4 ++--
 ...nc-func-dstr-let-ary-ptrn-rest-init-ary.js |  4 ++--
 ...ync-func-dstr-let-ary-ptrn-rest-init-id.js |  4 ++--
 ...nc-func-dstr-let-ary-ptrn-rest-init-obj.js |  4 ++--
 ...nc-dstr-let-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...unc-dstr-let-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...nc-dstr-let-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...sync-func-dstr-let-ary-ptrn-rest-obj-id.js |  4 ++--
 ...func-dstr-let-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...func-dstr-let-async-ary-init-iter-close.js |  8 +++----
 ...c-dstr-let-async-ary-init-iter-no-close.js |  8 +++----
 ...c-func-dstr-let-async-ary-name-iter-val.js | 13 ++++++------
 ...r-let-async-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...r-let-async-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...et-async-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...et-async-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...-let-async-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...-let-async-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...r-let-async-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...r-let-async-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...t-async-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...ync-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...-async-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...async-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...tr-let-async-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...let-async-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...r-let-async-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...et-async-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...tr-let-async-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...str-let-async-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...str-let-async-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...unc-dstr-let-async-ary-ptrn-elem-obj-id.js |  6 +++---
 ...et-async-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...str-let-async-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...tr-let-async-ary-ptrn-elision-exhausted.js |  4 ++--
 ...nc-func-dstr-let-async-ary-ptrn-elision.js |  4 ++--
 ...sync-func-dstr-let-async-ary-ptrn-empty.js |  4 ++--
 ...c-dstr-let-async-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...str-let-async-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...-dstr-let-async-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...c-dstr-let-async-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...dstr-let-async-ary-ptrn-rest-id-elision.js |  4 ++--
 ...tr-let-async-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...nc-func-dstr-let-async-ary-ptrn-rest-id.js |  4 ++--
 ...c-dstr-let-async-ary-ptrn-rest-init-ary.js |  4 ++--
 ...nc-dstr-let-async-ary-ptrn-rest-init-id.js |  4 ++--
 ...c-dstr-let-async-ary-ptrn-rest-init-obj.js |  4 ++--
 ...r-let-async-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...tr-let-async-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...r-let-async-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...unc-dstr-let-async-ary-ptrn-rest-obj-id.js |  4 ++--
 ...str-let-async-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...sync-func-dstr-let-async-obj-ptrn-empty.js |  4 ++--
 ...et-async-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...et-async-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...et-async-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...r-let-async-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...-let-async-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...dstr-let-async-obj-ptrn-id-init-skipped.js |  6 +++---
 ...tr-let-async-obj-ptrn-id-trailing-comma.js |  4 ++--
 ...c-dstr-let-async-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...-async-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...c-func-dstr-let-async-obj-ptrn-prop-ary.js |  4 ++--
 ...let-async-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...nc-dstr-let-async-obj-ptrn-prop-id-init.js |  8 +++----
 ...t-async-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 ...nc-func-dstr-let-async-obj-ptrn-prop-id.js |  8 +++----
 ...c-dstr-let-async-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...c-func-dstr-let-async-obj-ptrn-prop-obj.js |  4 ++--
 ...unc-dstr-let-async-obj-ptrn-rest-getter.js |  4 ++--
 ...dstr-let-async-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...let-async-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...et-async-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...async-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...nc-dstr-let-async-obj-ptrn-rest-val-obj.js |  4 ++--
 .../async-func-dstr-let-obj-init-null.js      | 11 +++++++---
 .../async-func-dstr-let-obj-init-undefined.js | 11 +++++++---
 .../async-func-dstr-let-obj-ptrn-empty.js     |  4 ++--
 ...func-dstr-let-obj-ptrn-id-get-value-err.js | 13 ++++++++----
 ...dstr-let-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...dstr-let-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...dstr-let-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...nc-dstr-let-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...c-dstr-let-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...-func-dstr-let-obj-ptrn-id-init-skipped.js |  6 +++---
 ...c-func-dstr-let-obj-ptrn-id-init-throws.js | 13 ++++++++----
 ...-dstr-let-obj-ptrn-id-init-unresolvable.js | 20 +++++++++++-------
 ...unc-dstr-let-obj-ptrn-id-trailing-comma.js |  4 ++--
 .../async-func-dstr-let-obj-ptrn-list-err.js  | 13 +++++++-----
 ...nc-func-dstr-let-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...tr-let-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...c-dstr-let-obj-ptrn-prop-ary-value-null.js | 11 +++++++---
 .../async-func-dstr-let-obj-ptrn-prop-ary.js  |  4 ++--
 ...nc-func-dstr-let-obj-ptrn-prop-eval-err.js | 11 +++++++---
 ...dstr-let-obj-ptrn-prop-id-get-value-err.js | 15 +++++++------
 ...-dstr-let-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...c-dstr-let-obj-ptrn-prop-id-init-throws.js | 18 +++++++++-------
 ...-let-obj-ptrn-prop-id-init-unresolvable.js | 20 +++++++++++-------
 ...ync-func-dstr-let-obj-ptrn-prop-id-init.js |  8 +++----
 ...str-let-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 .../async-func-dstr-let-obj-ptrn-prop-id.js   |  8 +++----
 ...nc-func-dstr-let-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...c-dstr-let-obj-ptrn-prop-obj-value-null.js | 11 +++++++---
 ...-dstr-let-obj-ptrn-prop-obj-value-undef.js | 11 +++++++---
 .../async-func-dstr-let-obj-ptrn-prop-obj.js  |  4 ++--
 ...sync-func-dstr-let-obj-ptrn-rest-getter.js |  4 ++--
 ...-func-dstr-let-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...-dstr-let-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...dstr-let-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...r-let-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...ync-func-dstr-let-obj-ptrn-rest-val-obj.js |  4 ++--
 ...async-func-dstr-var-ary-init-iter-close.js |  8 +++----
 ...ync-func-dstr-var-ary-init-iter-get-err.js | 14 ++++++++-----
 ...nc-func-dstr-var-ary-init-iter-no-close.js |  8 +++----
 .../async-func-dstr-var-ary-name-iter-val.js  | 13 ++++++------
 ...nc-dstr-var-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...nc-dstr-var-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...dstr-var-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...dstr-var-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...c-dstr-var-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...c-dstr-var-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...nc-dstr-var-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...nc-dstr-var-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...unc-dstr-var-ary-ptrn-elem-ary-val-null.js | 16 ++++++++------
 ...str-var-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...var-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...var-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...var-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...tr-var-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...r-var-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...unc-dstr-var-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...-dstr-var-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...c-dstr-var-ary-ptrn-elem-id-init-throws.js | 18 +++++++++-------
 ...nc-dstr-var-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...-var-ary-ptrn-elem-id-init-unresolvable.js | 20 +++++++++++-------
 ...dstr-var-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...unc-dstr-var-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...dstr-var-ary-ptrn-elem-id-iter-step-err.js | 17 +++++++++------
 ...-dstr-var-ary-ptrn-elem-id-iter-val-err.js | 17 +++++++++------
 ...func-dstr-var-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...func-dstr-var-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...sync-func-dstr-var-ary-ptrn-elem-obj-id.js |  6 +++---
 ...dstr-var-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...func-dstr-var-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...unc-dstr-var-ary-ptrn-elem-obj-val-null.js | 13 ++++++++----
 ...nc-dstr-var-ary-ptrn-elem-obj-val-undef.js | 13 ++++++++----
 ...unc-dstr-var-ary-ptrn-elision-exhausted.js |  4 ++--
 ...nc-dstr-var-ary-ptrn-elision-iter-close.js |  4 ++--
 ...func-dstr-var-ary-ptrn-elision-step-err.js | 16 +++++++-------
 .../async-func-dstr-var-ary-ptrn-elision.js   |  4 ++--
 .../async-func-dstr-var-ary-ptrn-empty.js     |  4 ++--
 ...nc-func-dstr-var-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...func-dstr-var-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...c-func-dstr-var-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...nc-func-dstr-var-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...r-var-ary-ptrn-rest-id-elision-next-err.js | 11 +++++++---
 ...-func-dstr-var-ary-ptrn-rest-id-elision.js |  4 ++--
 ...unc-dstr-var-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...nc-dstr-var-ary-ptrn-rest-id-iter-close.js |  4 ++--
 ...dstr-var-ary-ptrn-rest-id-iter-step-err.js | 15 ++++++-------
 ...-dstr-var-ary-ptrn-rest-id-iter-val-err.js | 13 ++++++++----
 .../async-func-dstr-var-ary-ptrn-rest-id.js   |  4 ++--
 ...nc-func-dstr-var-ary-ptrn-rest-init-ary.js |  4 ++--
 ...ync-func-dstr-var-ary-ptrn-rest-init-id.js |  4 ++--
 ...nc-func-dstr-var-ary-ptrn-rest-init-obj.js |  4 ++--
 ...nc-dstr-var-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...unc-dstr-var-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...nc-dstr-var-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...sync-func-dstr-var-ary-ptrn-rest-obj-id.js |  4 ++--
 ...func-dstr-var-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...func-dstr-var-async-ary-init-iter-close.js |  8 +++----
 ...c-dstr-var-async-ary-init-iter-no-close.js |  8 +++----
 ...c-func-dstr-var-async-ary-name-iter-val.js | 13 ++++++------
 ...r-var-async-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...r-var-async-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...ar-async-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...ar-async-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...-var-async-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...-var-async-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...r-var-async-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...r-var-async-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...r-async-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...ync-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...-async-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...async-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...tr-var-async-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...var-async-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...r-var-async-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...ar-async-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...tr-var-async-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...str-var-async-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...str-var-async-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...unc-dstr-var-async-ary-ptrn-elem-obj-id.js |  6 +++---
 ...ar-async-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...str-var-async-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...tr-var-async-ary-ptrn-elision-exhausted.js |  4 ++--
 ...nc-func-dstr-var-async-ary-ptrn-elision.js |  4 ++--
 ...sync-func-dstr-var-async-ary-ptrn-empty.js |  4 ++--
 ...c-dstr-var-async-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...str-var-async-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...-dstr-var-async-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...c-dstr-var-async-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...dstr-var-async-ary-ptrn-rest-id-elision.js |  4 ++--
 ...tr-var-async-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...nc-func-dstr-var-async-ary-ptrn-rest-id.js |  4 ++--
 ...c-dstr-var-async-ary-ptrn-rest-init-ary.js |  4 ++--
 ...nc-dstr-var-async-ary-ptrn-rest-init-id.js |  4 ++--
 ...c-dstr-var-async-ary-ptrn-rest-init-obj.js |  4 ++--
 ...r-var-async-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...tr-var-async-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...r-var-async-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...unc-dstr-var-async-ary-ptrn-rest-obj-id.js |  4 ++--
 ...str-var-async-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...sync-func-dstr-var-async-obj-ptrn-empty.js |  4 ++--
 ...ar-async-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...ar-async-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...ar-async-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...r-var-async-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...-var-async-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...dstr-var-async-obj-ptrn-id-init-skipped.js |  6 +++---
 ...tr-var-async-obj-ptrn-id-trailing-comma.js |  4 ++--
 ...c-dstr-var-async-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...-async-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...c-func-dstr-var-async-obj-ptrn-prop-ary.js |  4 ++--
 ...var-async-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...nc-dstr-var-async-obj-ptrn-prop-id-init.js |  8 +++----
 ...r-async-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 ...nc-func-dstr-var-async-obj-ptrn-prop-id.js |  8 +++----
 ...c-dstr-var-async-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...c-func-dstr-var-async-obj-ptrn-prop-obj.js |  4 ++--
 ...unc-dstr-var-async-obj-ptrn-rest-getter.js |  4 ++--
 ...dstr-var-async-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...var-async-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...ar-async-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...async-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...nc-dstr-var-async-obj-ptrn-rest-val-obj.js |  4 ++--
 .../async-func-dstr-var-obj-init-null.js      | 11 +++++++---
 .../async-func-dstr-var-obj-init-undefined.js | 11 +++++++---
 .../async-func-dstr-var-obj-ptrn-empty.js     |  4 ++--
 ...func-dstr-var-obj-ptrn-id-get-value-err.js | 13 ++++++++----
 ...dstr-var-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...dstr-var-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...dstr-var-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...nc-dstr-var-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...c-dstr-var-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...-func-dstr-var-obj-ptrn-id-init-skipped.js |  6 +++---
 ...c-func-dstr-var-obj-ptrn-id-init-throws.js | 13 ++++++++----
 ...-dstr-var-obj-ptrn-id-init-unresolvable.js | 20 +++++++++++-------
 ...unc-dstr-var-obj-ptrn-id-trailing-comma.js |  4 ++--
 .../async-func-dstr-var-obj-ptrn-list-err.js  | 13 +++++++-----
 ...nc-func-dstr-var-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...tr-var-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...c-dstr-var-obj-ptrn-prop-ary-value-null.js | 11 +++++++---
 .../async-func-dstr-var-obj-ptrn-prop-ary.js  |  4 ++--
 ...nc-func-dstr-var-obj-ptrn-prop-eval-err.js | 11 +++++++---
 ...dstr-var-obj-ptrn-prop-id-get-value-err.js | 15 +++++++------
 ...-dstr-var-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...c-dstr-var-obj-ptrn-prop-id-init-throws.js | 18 +++++++++-------
 ...-var-obj-ptrn-prop-id-init-unresolvable.js | 20 +++++++++++-------
 ...ync-func-dstr-var-obj-ptrn-prop-id-init.js |  8 +++----
 ...str-var-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 .../async-func-dstr-var-obj-ptrn-prop-id.js   |  8 +++----
 ...nc-func-dstr-var-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...c-dstr-var-obj-ptrn-prop-obj-value-null.js | 11 +++++++---
 ...-dstr-var-obj-ptrn-prop-obj-value-undef.js | 11 +++++++---
 .../async-func-dstr-var-obj-ptrn-prop-obj.js  |  4 ++--
 ...sync-func-dstr-var-obj-ptrn-rest-getter.js |  4 ++--
 ...-func-dstr-var-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...-dstr-var-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...dstr-var-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...r-var-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...ync-func-dstr-var-obj-ptrn-rest-val-obj.js |  4 ++--
 ...sync-gen-dstr-const-ary-init-iter-close.js |  8 +++----
 ...nc-gen-dstr-const-ary-init-iter-get-err.js | 15 +++++++------
 ...c-gen-dstr-const-ary-init-iter-no-close.js |  8 +++----
 .../async-gen-dstr-const-ary-name-iter-val.js | 13 ++++++------
 ...-dstr-const-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...-dstr-const-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...tr-const-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...tr-const-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...dstr-const-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...dstr-const-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...-dstr-const-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...-dstr-const-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...n-dstr-const-ary-ptrn-elem-ary-val-null.js | 17 ++++++++-------
 ...r-const-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...nst-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...nst-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...nst-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...-const-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...const-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...n-dstr-const-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...str-const-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...dstr-const-ary-ptrn-elem-id-init-throws.js | 19 ++++++++++-------
 ...-dstr-const-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...onst-ary-ptrn-elem-id-init-unresolvable.js | 21 +++++++++++--------
 ...tr-const-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...n-dstr-const-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...tr-const-ary-ptrn-elem-id-iter-step-err.js | 18 +++++++++-------
 ...str-const-ary-ptrn-elem-id-iter-val-err.js | 18 +++++++++-------
 ...en-dstr-const-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...en-dstr-const-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...ync-gen-dstr-const-ary-ptrn-elem-obj-id.js |  6 +++---
 ...tr-const-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...en-dstr-const-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...n-dstr-const-ary-ptrn-elem-obj-val-null.js | 14 ++++++++-----
 ...-dstr-const-ary-ptrn-elem-obj-val-undef.js | 14 ++++++++-----
 ...n-dstr-const-ary-ptrn-elision-exhausted.js |  4 ++--
 ...-dstr-const-ary-ptrn-elision-iter-close.js |  4 ++--
 ...en-dstr-const-ary-ptrn-elision-step-err.js | 17 ++++++++-------
 .../async-gen-dstr-const-ary-ptrn-elision.js  |  4 ++--
 .../async-gen-dstr-const-ary-ptrn-empty.js    |  4 ++--
 ...c-gen-dstr-const-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...en-dstr-const-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...-gen-dstr-const-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...c-gen-dstr-const-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...const-ary-ptrn-rest-id-elision-next-err.js | 12 +++++++----
 ...gen-dstr-const-ary-ptrn-rest-id-elision.js |  4 ++--
 ...n-dstr-const-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...-dstr-const-ary-ptrn-rest-id-iter-close.js |  4 ++--
 ...tr-const-ary-ptrn-rest-id-iter-step-err.js | 16 +++++++-------
 ...str-const-ary-ptrn-rest-id-iter-val-err.js | 14 ++++++++-----
 .../async-gen-dstr-const-ary-ptrn-rest-id.js  |  4 ++--
 ...c-gen-dstr-const-ary-ptrn-rest-init-ary.js |  4 ++--
 ...nc-gen-dstr-const-ary-ptrn-rest-init-id.js |  4 ++--
 ...c-gen-dstr-const-ary-ptrn-rest-init-obj.js |  4 ++--
 ...-dstr-const-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...n-dstr-const-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...-dstr-const-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...ync-gen-dstr-const-ary-ptrn-rest-obj-id.js |  4 ++--
 ...en-dstr-const-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...en-dstr-const-async-ary-init-iter-close.js |  8 +++----
 ...dstr-const-async-ary-init-iter-no-close.js |  8 +++----
 ...-gen-dstr-const-async-ary-name-iter-val.js | 13 ++++++------
 ...const-async-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...const-async-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...st-async-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...st-async-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...onst-async-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...onst-async-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...const-async-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...const-async-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...t-async-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...ync-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...-async-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...async-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...-const-async-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...nst-async-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...const-async-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...st-async-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...-const-async-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...r-const-async-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...r-const-async-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...n-dstr-const-async-ary-ptrn-elem-obj-id.js |  6 +++---
 ...st-async-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...r-const-async-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...-const-async-ary-ptrn-elision-exhausted.js |  4 ++--
 ...c-gen-dstr-const-async-ary-ptrn-elision.js |  4 ++--
 ...ync-gen-dstr-const-async-ary-ptrn-empty.js |  4 ++--
 ...dstr-const-async-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...r-const-async-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...str-const-async-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...dstr-const-async-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...tr-const-async-ary-ptrn-rest-id-elision.js |  4 ++--
 ...-const-async-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...c-gen-dstr-const-async-ary-ptrn-rest-id.js |  4 ++--
 ...dstr-const-async-ary-ptrn-rest-init-ary.js |  4 ++--
 ...-dstr-const-async-ary-ptrn-rest-init-id.js |  4 ++--
 ...dstr-const-async-ary-ptrn-rest-init-obj.js |  4 ++--
 ...const-async-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...-const-async-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...const-async-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...n-dstr-const-async-ary-ptrn-rest-obj-id.js |  4 ++--
 ...r-const-async-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...ync-gen-dstr-const-async-obj-ptrn-empty.js |  4 ++--
 ...st-async-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...st-async-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...st-async-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...const-async-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...onst-async-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...tr-const-async-obj-ptrn-id-init-skipped.js |  6 +++---
 ...-const-async-obj-ptrn-id-trailing-comma.js |  4 ++--
 ...dstr-const-async-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...-async-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...-gen-dstr-const-async-obj-ptrn-prop-ary.js |  4 ++--
 ...nst-async-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...-dstr-const-async-obj-ptrn-prop-id-init.js |  8 +++----
 ...t-async-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 ...c-gen-dstr-const-async-obj-ptrn-prop-id.js |  8 +++----
 ...dstr-const-async-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...-gen-dstr-const-async-obj-ptrn-prop-obj.js |  4 ++--
 ...n-dstr-const-async-obj-ptrn-rest-getter.js |  4 ++--
 ...tr-const-async-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...nst-async-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...st-async-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...async-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...-dstr-const-async-obj-ptrn-rest-val-obj.js |  4 ++--
 .../async-gen-dstr-const-obj-init-null.js     | 12 +++++++----
 ...async-gen-dstr-const-obj-init-undefined.js | 12 +++++++----
 .../async-gen-dstr-const-obj-ptrn-empty.js    |  4 ++--
 ...en-dstr-const-obj-ptrn-id-get-value-err.js | 14 ++++++++-----
 ...tr-const-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...tr-const-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...tr-const-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...-dstr-const-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...dstr-const-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...gen-dstr-const-obj-ptrn-id-init-skipped.js |  6 +++---
 ...-gen-dstr-const-obj-ptrn-id-init-throws.js | 14 ++++++++-----
 ...str-const-obj-ptrn-id-init-unresolvable.js | 21 +++++++++++--------
 ...n-dstr-const-obj-ptrn-id-trailing-comma.js |  4 ++--
 .../async-gen-dstr-const-obj-ptrn-list-err.js | 14 +++++++------
 ...c-gen-dstr-const-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...-const-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...dstr-const-obj-ptrn-prop-ary-value-null.js | 12 +++++++----
 .../async-gen-dstr-const-obj-ptrn-prop-ary.js |  4 ++--
 ...c-gen-dstr-const-obj-ptrn-prop-eval-err.js | 12 +++++++----
 ...tr-const-obj-ptrn-prop-id-get-value-err.js | 16 +++++++-------
 ...str-const-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...dstr-const-obj-ptrn-prop-id-init-throws.js | 19 ++++++++++-------
 ...onst-obj-ptrn-prop-id-init-unresolvable.js | 21 +++++++++++--------
 ...nc-gen-dstr-const-obj-ptrn-prop-id-init.js |  8 +++----
 ...r-const-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 .../async-gen-dstr-const-obj-ptrn-prop-id.js  |  8 +++----
 ...c-gen-dstr-const-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...dstr-const-obj-ptrn-prop-obj-value-null.js | 12 +++++++----
 ...str-const-obj-ptrn-prop-obj-value-undef.js | 12 +++++++----
 .../async-gen-dstr-const-obj-ptrn-prop-obj.js |  4 ++--
 ...ync-gen-dstr-const-obj-ptrn-rest-getter.js |  4 ++--
 ...gen-dstr-const-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...str-const-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...tr-const-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...const-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...nc-gen-dstr-const-obj-ptrn-rest-val-obj.js |  4 ++--
 .../async-gen-dstr-let-ary-init-iter-close.js |  8 +++----
 ...sync-gen-dstr-let-ary-init-iter-get-err.js | 14 ++++++++-----
 ...ync-gen-dstr-let-ary-init-iter-no-close.js |  8 +++----
 .../async-gen-dstr-let-ary-name-iter-val.js   | 13 ++++++------
 ...en-dstr-let-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...en-dstr-let-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...dstr-let-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...dstr-let-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...n-dstr-let-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...n-dstr-let-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...en-dstr-let-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...en-dstr-let-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...gen-dstr-let-ary-ptrn-elem-ary-val-null.js | 16 ++++++++------
 ...str-let-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...let-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...let-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...let-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...tr-let-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...r-let-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...gen-dstr-let-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...-dstr-let-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...n-dstr-let-ary-ptrn-elem-id-init-throws.js | 18 +++++++++-------
 ...en-dstr-let-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...-let-ary-ptrn-elem-id-init-unresolvable.js | 20 +++++++++++-------
 ...dstr-let-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...gen-dstr-let-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...dstr-let-ary-ptrn-elem-id-iter-step-err.js | 17 +++++++++------
 ...-dstr-let-ary-ptrn-elem-id-iter-val-err.js | 17 +++++++++------
 ...-gen-dstr-let-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...-gen-dstr-let-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...async-gen-dstr-let-ary-ptrn-elem-obj-id.js |  6 +++---
 ...dstr-let-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...-gen-dstr-let-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...gen-dstr-let-ary-ptrn-elem-obj-val-null.js | 13 ++++++++----
 ...en-dstr-let-ary-ptrn-elem-obj-val-undef.js | 13 ++++++++----
 ...gen-dstr-let-ary-ptrn-elision-exhausted.js |  4 ++--
 ...en-dstr-let-ary-ptrn-elision-iter-close.js |  4 ++--
 ...-gen-dstr-let-ary-ptrn-elision-step-err.js | 16 +++++++-------
 .../async-gen-dstr-let-ary-ptrn-elision.js    |  4 ++--
 .../async-gen-dstr-let-ary-ptrn-empty.js      |  4 ++--
 ...ync-gen-dstr-let-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...-gen-dstr-let-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...nc-gen-dstr-let-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...ync-gen-dstr-let-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...r-let-ary-ptrn-rest-id-elision-next-err.js | 11 +++++++---
 ...c-gen-dstr-let-ary-ptrn-rest-id-elision.js |  4 ++--
 ...gen-dstr-let-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...en-dstr-let-ary-ptrn-rest-id-iter-close.js |  4 ++--
 ...dstr-let-ary-ptrn-rest-id-iter-step-err.js | 15 ++++++-------
 ...-dstr-let-ary-ptrn-rest-id-iter-val-err.js | 13 ++++++++----
 .../async-gen-dstr-let-ary-ptrn-rest-id.js    |  4 ++--
 ...ync-gen-dstr-let-ary-ptrn-rest-init-ary.js |  4 ++--
 ...sync-gen-dstr-let-ary-ptrn-rest-init-id.js |  4 ++--
 ...ync-gen-dstr-let-ary-ptrn-rest-init-obj.js |  4 ++--
 ...en-dstr-let-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...gen-dstr-let-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...en-dstr-let-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...async-gen-dstr-let-ary-ptrn-rest-obj-id.js |  4 ++--
 ...-gen-dstr-let-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...-gen-dstr-let-async-ary-init-iter-close.js |  8 +++----
 ...n-dstr-let-async-ary-init-iter-no-close.js |  8 +++----
 ...nc-gen-dstr-let-async-ary-name-iter-val.js | 13 ++++++------
 ...r-let-async-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...r-let-async-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...et-async-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...et-async-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...-let-async-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...-let-async-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...r-let-async-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...r-let-async-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...t-async-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...ync-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...-async-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...async-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...tr-let-async-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...let-async-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...r-let-async-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...et-async-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...tr-let-async-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...str-let-async-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...str-let-async-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...gen-dstr-let-async-ary-ptrn-elem-obj-id.js |  6 +++---
 ...et-async-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...str-let-async-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...tr-let-async-ary-ptrn-elision-exhausted.js |  4 ++--
 ...ync-gen-dstr-let-async-ary-ptrn-elision.js |  4 ++--
 ...async-gen-dstr-let-async-ary-ptrn-empty.js |  4 ++--
 ...n-dstr-let-async-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...str-let-async-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...-dstr-let-async-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...n-dstr-let-async-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...dstr-let-async-ary-ptrn-rest-id-elision.js |  4 ++--
 ...tr-let-async-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...ync-gen-dstr-let-async-ary-ptrn-rest-id.js |  4 ++--
 ...n-dstr-let-async-ary-ptrn-rest-init-ary.js |  4 ++--
 ...en-dstr-let-async-ary-ptrn-rest-init-id.js |  4 ++--
 ...n-dstr-let-async-ary-ptrn-rest-init-obj.js |  4 ++--
 ...r-let-async-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...tr-let-async-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...r-let-async-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...gen-dstr-let-async-ary-ptrn-rest-obj-id.js |  4 ++--
 ...str-let-async-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...async-gen-dstr-let-async-obj-ptrn-empty.js |  4 ++--
 ...et-async-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...et-async-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...et-async-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...r-let-async-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...-let-async-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...dstr-let-async-obj-ptrn-id-init-skipped.js |  6 +++---
 ...tr-let-async-obj-ptrn-id-trailing-comma.js |  4 ++--
 ...n-dstr-let-async-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...-async-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...nc-gen-dstr-let-async-obj-ptrn-prop-ary.js |  4 ++--
 ...let-async-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...en-dstr-let-async-obj-ptrn-prop-id-init.js |  8 +++----
 ...t-async-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 ...ync-gen-dstr-let-async-obj-ptrn-prop-id.js |  8 +++----
 ...n-dstr-let-async-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...nc-gen-dstr-let-async-obj-ptrn-prop-obj.js |  4 ++--
 ...gen-dstr-let-async-obj-ptrn-rest-getter.js |  4 ++--
 ...dstr-let-async-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...let-async-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...et-async-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...async-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...en-dstr-let-async-obj-ptrn-rest-val-obj.js |  4 ++--
 .../async-gen-dstr-let-obj-init-null.js       | 11 +++++++---
 .../async-gen-dstr-let-obj-init-undefined.js  | 11 +++++++---
 .../async-gen-dstr-let-obj-ptrn-empty.js      |  4 ++--
 ...-gen-dstr-let-obj-ptrn-id-get-value-err.js | 13 ++++++++----
 ...dstr-let-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...dstr-let-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...dstr-let-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...en-dstr-let-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...n-dstr-let-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...c-gen-dstr-let-obj-ptrn-id-init-skipped.js |  6 +++---
 ...nc-gen-dstr-let-obj-ptrn-id-init-throws.js | 13 ++++++++----
 ...-dstr-let-obj-ptrn-id-init-unresolvable.js | 20 +++++++++++-------
 ...gen-dstr-let-obj-ptrn-id-trailing-comma.js |  4 ++--
 .../async-gen-dstr-let-obj-ptrn-list-err.js   | 13 +++++++-----
 ...ync-gen-dstr-let-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...tr-let-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...n-dstr-let-obj-ptrn-prop-ary-value-null.js | 11 +++++++---
 .../async-gen-dstr-let-obj-ptrn-prop-ary.js   |  4 ++--
 ...ync-gen-dstr-let-obj-ptrn-prop-eval-err.js | 11 +++++++---
 ...dstr-let-obj-ptrn-prop-id-get-value-err.js | 15 +++++++------
 ...-dstr-let-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...n-dstr-let-obj-ptrn-prop-id-init-throws.js | 18 +++++++++-------
 ...-let-obj-ptrn-prop-id-init-unresolvable.js | 20 +++++++++++-------
 ...sync-gen-dstr-let-obj-ptrn-prop-id-init.js |  8 +++----
 ...str-let-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 .../async-gen-dstr-let-obj-ptrn-prop-id.js    |  8 +++----
 ...ync-gen-dstr-let-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...n-dstr-let-obj-ptrn-prop-obj-value-null.js | 11 +++++++---
 ...-dstr-let-obj-ptrn-prop-obj-value-undef.js | 11 +++++++---
 .../async-gen-dstr-let-obj-ptrn-prop-obj.js   |  4 ++--
 ...async-gen-dstr-let-obj-ptrn-rest-getter.js |  4 ++--
 ...c-gen-dstr-let-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...-dstr-let-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...dstr-let-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...r-let-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...sync-gen-dstr-let-obj-ptrn-rest-val-obj.js |  4 ++--
 .../async-gen-dstr-var-ary-init-iter-close.js |  8 +++----
 ...sync-gen-dstr-var-ary-init-iter-get-err.js | 14 ++++++++-----
 ...ync-gen-dstr-var-ary-init-iter-no-close.js |  8 +++----
 .../async-gen-dstr-var-ary-name-iter-val.js   | 13 ++++++------
 ...en-dstr-var-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...en-dstr-var-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...dstr-var-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...dstr-var-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...n-dstr-var-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...n-dstr-var-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...en-dstr-var-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...en-dstr-var-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...gen-dstr-var-ary-ptrn-elem-ary-val-null.js | 16 ++++++++------
 ...str-var-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...var-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...var-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...var-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...tr-var-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...r-var-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...gen-dstr-var-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...-dstr-var-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...n-dstr-var-ary-ptrn-elem-id-init-throws.js | 18 +++++++++-------
 ...en-dstr-var-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...-var-ary-ptrn-elem-id-init-unresolvable.js | 20 +++++++++++-------
 ...dstr-var-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...gen-dstr-var-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...dstr-var-ary-ptrn-elem-id-iter-step-err.js | 17 +++++++++------
 ...-dstr-var-ary-ptrn-elem-id-iter-val-err.js | 17 +++++++++------
 ...-gen-dstr-var-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...-gen-dstr-var-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...async-gen-dstr-var-ary-ptrn-elem-obj-id.js |  6 +++---
 ...dstr-var-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...-gen-dstr-var-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...gen-dstr-var-ary-ptrn-elem-obj-val-null.js | 13 ++++++++----
 ...en-dstr-var-ary-ptrn-elem-obj-val-undef.js | 13 ++++++++----
 ...gen-dstr-var-ary-ptrn-elision-exhausted.js |  4 ++--
 ...en-dstr-var-ary-ptrn-elision-iter-close.js |  4 ++--
 ...-gen-dstr-var-ary-ptrn-elision-step-err.js | 16 +++++++-------
 .../async-gen-dstr-var-ary-ptrn-elision.js    |  4 ++--
 .../async-gen-dstr-var-ary-ptrn-empty.js      |  4 ++--
 ...ync-gen-dstr-var-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...-gen-dstr-var-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...nc-gen-dstr-var-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...ync-gen-dstr-var-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...r-var-ary-ptrn-rest-id-elision-next-err.js | 11 +++++++---
 ...c-gen-dstr-var-ary-ptrn-rest-id-elision.js |  4 ++--
 ...gen-dstr-var-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...en-dstr-var-ary-ptrn-rest-id-iter-close.js |  4 ++--
 ...dstr-var-ary-ptrn-rest-id-iter-step-err.js | 15 ++++++-------
 ...-dstr-var-ary-ptrn-rest-id-iter-val-err.js | 13 ++++++++----
 .../async-gen-dstr-var-ary-ptrn-rest-id.js    |  4 ++--
 ...ync-gen-dstr-var-ary-ptrn-rest-init-ary.js |  4 ++--
 ...sync-gen-dstr-var-ary-ptrn-rest-init-id.js |  4 ++--
 ...ync-gen-dstr-var-ary-ptrn-rest-init-obj.js |  4 ++--
 ...en-dstr-var-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...gen-dstr-var-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...en-dstr-var-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...async-gen-dstr-var-ary-ptrn-rest-obj-id.js |  4 ++--
 ...-gen-dstr-var-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...-gen-dstr-var-async-ary-init-iter-close.js |  8 +++----
 ...n-dstr-var-async-ary-init-iter-no-close.js |  8 +++----
 ...nc-gen-dstr-var-async-ary-name-iter-val.js | 13 ++++++------
 ...r-var-async-ary-ptrn-elem-ary-elem-init.js |  6 +++---
 ...r-var-async-ary-ptrn-elem-ary-elem-iter.js |  6 +++---
 ...ar-async-ary-ptrn-elem-ary-elision-init.js |  6 +++---
 ...ar-async-ary-ptrn-elem-ary-elision-iter.js |  6 +++---
 ...-var-async-ary-ptrn-elem-ary-empty-init.js |  6 +++---
 ...-var-async-ary-ptrn-elem-ary-empty-iter.js |  6 +++---
 ...r-var-async-ary-ptrn-elem-ary-rest-init.js |  6 +++---
 ...r-var-async-ary-ptrn-elem-ary-rest-iter.js |  6 +++---
 ...r-async-ary-ptrn-elem-id-init-exhausted.js | 14 ++++++-------
 ...ync-ary-ptrn-elem-id-init-fn-name-arrow.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-class.js | 17 +++++++--------
 ...ync-ary-ptrn-elem-id-init-fn-name-cover.js | 17 +++++++--------
 ...-async-ary-ptrn-elem-id-init-fn-name-fn.js | 17 +++++++--------
 ...async-ary-ptrn-elem-id-init-fn-name-gen.js | 17 +++++++--------
 ...tr-var-async-ary-ptrn-elem-id-init-hole.js | 10 ++++-----
 ...var-async-ary-ptrn-elem-id-init-skipped.js |  8 +++----
 ...r-var-async-ary-ptrn-elem-id-init-undef.js | 12 +++++------
 ...ar-async-ary-ptrn-elem-id-iter-complete.js | 12 +++++------
 ...tr-var-async-ary-ptrn-elem-id-iter-done.js | 12 +++++------
 ...str-var-async-ary-ptrn-elem-id-iter-val.js | 13 ++++++------
 ...str-var-async-ary-ptrn-elem-obj-id-init.js |  6 +++---
 ...gen-dstr-var-async-ary-ptrn-elem-obj-id.js |  6 +++---
 ...ar-async-ary-ptrn-elem-obj-prop-id-init.js |  6 +++---
 ...str-var-async-ary-ptrn-elem-obj-prop-id.js |  6 +++---
 ...tr-var-async-ary-ptrn-elision-exhausted.js |  4 ++--
 ...ync-gen-dstr-var-async-ary-ptrn-elision.js |  4 ++--
 ...async-gen-dstr-var-async-ary-ptrn-empty.js |  4 ++--
 ...n-dstr-var-async-ary-ptrn-rest-ary-elem.js | 13 ++++++------
 ...str-var-async-ary-ptrn-rest-ary-elision.js |  4 ++--
 ...-dstr-var-async-ary-ptrn-rest-ary-empty.js |  4 ++--
 ...n-dstr-var-async-ary-ptrn-rest-ary-rest.js |  4 ++--
 ...dstr-var-async-ary-ptrn-rest-id-elision.js |  4 ++--
 ...tr-var-async-ary-ptrn-rest-id-exhausted.js |  4 ++--
 ...ync-gen-dstr-var-async-ary-ptrn-rest-id.js |  4 ++--
 ...n-dstr-var-async-ary-ptrn-rest-init-ary.js |  4 ++--
 ...en-dstr-var-async-ary-ptrn-rest-init-id.js |  4 ++--
 ...n-dstr-var-async-ary-ptrn-rest-init-obj.js |  4 ++--
 ...r-var-async-ary-ptrn-rest-not-final-ary.js |  4 ++--
 ...tr-var-async-ary-ptrn-rest-not-final-id.js |  4 ++--
 ...r-var-async-ary-ptrn-rest-not-final-obj.js |  4 ++--
 ...gen-dstr-var-async-ary-ptrn-rest-obj-id.js |  4 ++--
 ...str-var-async-ary-ptrn-rest-obj-prop-id.js |  4 ++--
 ...async-gen-dstr-var-async-obj-ptrn-empty.js |  4 ++--
 ...ar-async-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...ar-async-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...ar-async-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...r-var-async-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...-var-async-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...dstr-var-async-obj-ptrn-id-init-skipped.js |  6 +++---
 ...tr-var-async-obj-ptrn-id-trailing-comma.js |  4 ++--
 ...n-dstr-var-async-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...-async-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...nc-gen-dstr-var-async-obj-ptrn-prop-ary.js |  4 ++--
 ...var-async-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...en-dstr-var-async-obj-ptrn-prop-id-init.js |  8 +++----
 ...r-async-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 ...ync-gen-dstr-var-async-obj-ptrn-prop-id.js |  8 +++----
 ...n-dstr-var-async-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...nc-gen-dstr-var-async-obj-ptrn-prop-obj.js |  4 ++--
 ...gen-dstr-var-async-obj-ptrn-rest-getter.js |  4 ++--
 ...dstr-var-async-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...var-async-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...ar-async-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...async-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...en-dstr-var-async-obj-ptrn-rest-val-obj.js |  4 ++--
 .../async-gen-dstr-var-obj-init-null.js       | 11 +++++++---
 .../async-gen-dstr-var-obj-init-undefined.js  | 11 +++++++---
 .../async-gen-dstr-var-obj-ptrn-empty.js      |  4 ++--
 ...-gen-dstr-var-obj-ptrn-id-get-value-err.js | 13 ++++++++----
 ...dstr-var-obj-ptrn-id-init-fn-name-arrow.js |  6 +++---
 ...dstr-var-obj-ptrn-id-init-fn-name-class.js |  6 +++---
 ...dstr-var-obj-ptrn-id-init-fn-name-cover.js |  6 +++---
 ...en-dstr-var-obj-ptrn-id-init-fn-name-fn.js |  6 +++---
 ...n-dstr-var-obj-ptrn-id-init-fn-name-gen.js |  6 +++---
 ...c-gen-dstr-var-obj-ptrn-id-init-skipped.js |  6 +++---
 ...nc-gen-dstr-var-obj-ptrn-id-init-throws.js | 13 ++++++++----
 ...-dstr-var-obj-ptrn-id-init-unresolvable.js | 20 +++++++++++-------
 ...gen-dstr-var-obj-ptrn-id-trailing-comma.js |  4 ++--
 .../async-gen-dstr-var-obj-ptrn-list-err.js   | 13 +++++++-----
 ...ync-gen-dstr-var-obj-ptrn-prop-ary-init.js |  9 ++++----
 ...tr-var-obj-ptrn-prop-ary-trailing-comma.js |  4 ++--
 ...n-dstr-var-obj-ptrn-prop-ary-value-null.js | 11 +++++++---
 .../async-gen-dstr-var-obj-ptrn-prop-ary.js   |  4 ++--
 ...ync-gen-dstr-var-obj-ptrn-prop-eval-err.js | 11 +++++++---
 ...dstr-var-obj-ptrn-prop-id-get-value-err.js | 15 +++++++------
 ...-dstr-var-obj-ptrn-prop-id-init-skipped.js |  6 +++---
 ...n-dstr-var-obj-ptrn-prop-id-init-throws.js | 18 +++++++++-------
 ...-var-obj-ptrn-prop-id-init-unresolvable.js | 20 +++++++++++-------
 ...sync-gen-dstr-var-obj-ptrn-prop-id-init.js |  8 +++----
 ...str-var-obj-ptrn-prop-id-trailing-comma.js |  4 ++--
 .../async-gen-dstr-var-obj-ptrn-prop-id.js    |  8 +++----
 ...ync-gen-dstr-var-obj-ptrn-prop-obj-init.js |  9 ++++----
 ...n-dstr-var-obj-ptrn-prop-obj-value-null.js | 11 +++++++---
 ...-dstr-var-obj-ptrn-prop-obj-value-undef.js | 11 +++++++---
 .../async-gen-dstr-var-obj-ptrn-prop-obj.js   |  4 ++--
 ...async-gen-dstr-var-obj-ptrn-rest-getter.js |  4 ++--
 ...c-gen-dstr-var-obj-ptrn-rest-nested-obj.js |  4 ++--
 ...-dstr-var-obj-ptrn-rest-obj-nested-rest.js |  4 ++--
 ...dstr-var-obj-ptrn-rest-obj-own-property.js |  4 ++--
 ...r-var-obj-ptrn-rest-skip-non-enumerable.js |  4 ++--
 ...sync-gen-dstr-var-obj-ptrn-rest-val-obj.js |  4 ++--
 978 files changed, 4200 insertions(+), 3703 deletions(-)

diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-close.js
index c9b56db4b6..7295a3e9da 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-get-err.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-get-err.js
index 7f74d1b272..fe4066561b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-get-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-get-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-get-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-init-iter-get-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Abrupt completion returned by GetIterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -39,8 +39,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 
 ---*/
 var iter = {};
@@ -55,6 +54,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-no-close.js
index cc61e9a191..1d59880139 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-name-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-name-iter-val.js
index 5ecfc3def1..a7e2641ea9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elem-init.js
index ebb2390f9b..26d410f7a7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elem-iter.js
index 804b6f009f..3abc7c7f75 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elision-init.js
index 50c630be79..6ba7b80435 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elision-iter.js
index 6e38728548..39763683bf 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-empty-init.js
index 2ad358d4fd..a5f98b2dce 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-empty-iter.js
index 9944b961b9..7bd670b4f0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-rest-init.js
index 54921b6a80..1ed5e5dce3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-rest-iter.js
index 924fd122b0..a7d875e5b6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-val-null.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-val-null.js
index 219497ed10..d9ae1b657b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-val-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-ary-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Nested array destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -51,8 +51,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 ---*/
 
 async function fn() {
@@ -62,6 +61,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-exhausted.js
index 3bce739aa7..bb30ac0513 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-arrow.js
index f738e43e5e..5b95e079d3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
index 6b4dc0b82f..600e12d80d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js
index 84527569eb..b9d65faebc 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js
index 9d41ba05ec..30d7575aaf 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js
index 79fa43eaf6..cea862e75d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-hole.js
index b7de310bd1..b6eb13567d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-skipped.js
index 7fff360bc0..facf7379eb 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-throws.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-throws.js
index 18831cbb6b..ab94b0e7d8 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 
 async function fn() {
@@ -53,6 +52,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-undef.js
index 47379aacaf..c01f1fa09c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-unresolvable.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-unresolvable.js
index 958f04ee32..a39603b323 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-complete.js
index 33acb8e557..abc29dea7e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-done.js
index c66b20bc01..67bd79217e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-step-err.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-step-err.js
index 5c390f79c9..db266b4e1b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -48,7 +48,7 @@ info: |
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       throw new Test262Error();
     }
   };
@@ -61,6 +61,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-val-err.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-val-err.js
index d87b1a3bf4..e8a35760a8 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -59,7 +59,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -72,6 +72,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-val.js
index 4cdfa5781b..b25fabf685 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-id-init.js
index 9bf1a7af9d..44b5d51e61 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-id.js
index ed039bb39c..248af59fff 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-prop-id-init.js
index 16cf0b1efc..381cbfa756 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-prop-id.js
index 321f84675a..c7a38ec802 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-val-null.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-val-null.js
index 1e7c84aaeb..b92d340312 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-val-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Nested object destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,6 +62,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-val-undef.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-val-undef.js
index 33e86e68a1..3d8d1770fa 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-val-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-obj-val-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Nested object destructuring with a value of `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,6 +62,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-exhausted.js
index 94cb3c42f9..fcf6703d85 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-iter-close.js
index bd274136bf..db6bb2a2d0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-func-const.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement in an async function)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-step-err.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-step-err.js
index b249fd2eef..e331b1f4c7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-step-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-step-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -54,7 +54,7 @@ info: |
 
 ---*/
 var following = 0;
-var iter =function* () {
+var iter = function* () {
   throw new Test262Error();
   following += 1;
 }();
@@ -66,9 +66,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    assert.sameValue(following, 0, "iterator is properly closed");
+  })
   .then($DONE, $DONE);
 
-
-iter.next();
-assert.sameValue(following, 0, 'Iterator was properly closed.');
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision.js
index 0e4ec8f220..22d928d0cb 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-empty.js
index 53c659572e..59e07bcfbb 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-elem.js
index 7a7589ec6d..5773970bc7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-elision.js
index 159a8b5317..de0a2b97e8 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-empty.js
index 4a913c5967..8756778470 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-rest.js
index 9216fda1da..f16645e63c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-elision-next-err.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-elision-next-err.js
index d73910b70a..0b20e4e31c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-elision-next-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-elision-next-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision-next-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,6 +55,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-elision.js
index 751b17f437..d5f0c50ee8 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-exhausted.js
index 19526cf630..93af5a5883 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-close.js
index 4056efeb46..1b97581d1c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-func-const.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement in an async function)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-step-err.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-step-err.js
index c29c514b9f..5cd8a163c5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -62,10 +62,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
-
-iter.next();
-assert.sameValue(first, 1);
-assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-val-err.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-val-err.js
index 1392aa2984..4403384521 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,7 +55,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -68,6 +68,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id.js
index 159258c241..70a84895de 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-ary.js
index 98910ad613..7fbc379f16 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-id.js
index 8a532a9cbb..1ba7fc2875 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-obj.js
index 66e49cf83f..01e4f12410 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-ary.js
index a6affef838..2bbb58986c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-id.js
index e32d81521d..2c9b11373b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-obj.js
index 1360ad4ecf..eeeee2da95 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-obj-id.js
index d6abf9d219..aa6bc98b5d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-obj-prop-id.js
index d85c53967e..a2de0e7e00 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-init-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-init-iter-close.js
index eba337271a..1e456ce270 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-init-iter-no-close.js
index 0dfc920caa..3ab60e87c2 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-name-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-name-iter-val.js
index c6e4588bb9..eebd6e2f3e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elem-init.js
index 21be8c7662..b9a994ef3c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elem-iter.js
index 64d1e65efb..5315bb0047 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elision-init.js
index b008d06ec6..381ec91488 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elision-iter.js
index 7b8ad2fccf..697837000e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-empty-init.js
index a7814dc91b..6ad9cf139a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-empty-iter.js
index 5abf021c64..20c6f0cec6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-rest-init.js
index f16b0775dd..193251527f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-rest-iter.js
index 7b85064694..13e95cee77 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-exhausted.js
index 744201c51f..174eadc945 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-arrow.js
index 073900accd..9c7e20a482 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-class.js
index e544004cdb..7c5db4e9df 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-cover.js
index 8ec716384b..65258e7d01 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-fn.js
index 954196eb9f..0fbde77fa4 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-gen.js
index de40d651b8..1d7ad09392 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-hole.js
index 794fa0a8e5..68ed2be7de 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-skipped.js
index 9130c6a693..9484649170 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-undef.js
index e9484712de..2771715740 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-complete.js
index 302e91c7f6..703b5fb122 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-done.js
index 8120d00a8a..31eda65923 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-val.js
index 7c3dca13ab..f6016fb3d7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-id-init.js
index 8a56b7f00f..c643f6918e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-id.js
index 7adfce8eed..0b711e8b86 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-prop-id-init.js
index ded1f42337..d7206e8e81 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-prop-id.js
index 8f4be17b7f..59ba00ac9d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elision-exhausted.js
index 8c1fe66550..217d730d41 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elision.js
index 4b39ae3729..fa2c4c81a8 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-empty.js
index 6ec277ac01..09d6e819f6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-elem.js
index 1b07b18968..7142a54dc5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-elision.js
index 2b31699dcb..062556d0aa 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-empty.js
index 52510433ea..7b67a28f97 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-rest.js
index c4ba453373..67b3d6d787 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id-elision.js
index afb1252516..00004d9747 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id-exhausted.js
index effcfc3622..400b8147bf 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id.js
index b0cce464af..b85c487406 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-ary.js
index 5bdfcb5502..ad85679de9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-id.js
index 7b028d2279..1b0875f040 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-obj.js
index 865bbf365d..b5043aa0bc 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-ary.js
index 4110ded90f..f8b9e341df 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-id.js
index 8f5dea0e33..92cb0493dd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-obj.js
index f68ecb5124..6d2fab978c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-obj-id.js
index e37b6f53be..e1b99509b5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-obj-prop-id.js
index 9fe2e241b3..0cbe1c7f12 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-empty.js
index ea327b594d..30c54872d7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-arrow.js
index 9312b58ed3..d1407a661c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-class.js
index 57abee7c53..942649eca4 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-cover.js
index 07cd9b241f..a06c12771c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-fn.js
index 1842788fdb..2be4d848d7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-gen.js
index c5587df7ff..1cbe88c162 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-skipped.js
index d72111b6ca..43dc45b297 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-trailing-comma.js
index 032eaa430e..0be58f42f3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary-init.js
index b4b8f6f56e..d57b783cc5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary-trailing-comma.js
index 2901548ce4..ab0159e9c0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary.js
index 1fc91a8d7d..e5fb57a858 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-init-skipped.js
index 0d3c412c1b..49bd81b042 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-init.js
index 4b12eca9a3..4926a6d63d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-trailing-comma.js
index 314757b15e..c2b1f62be0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id.js
index 33278b9480..cbd0f519b1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-obj-init.js
index 3695afc8f3..330479ba68 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-obj.js
index 6a4b31edb8..85c6aaf474 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-getter.js
index 522972b6e1..a55e98df7c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-nested-obj.js
index b67f6bd417..5b79371dea 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js
index 6e671982d6..e960685b11 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-own-property.js
index 224963260e..95394838f6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js
index 218409b566..5c21293502 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-val-obj.js
index 25bfc0ae85..e4c95c22b3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const-async.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-init-null.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-init-null.js
index 8b0a89b79c..fb45aee39a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-init-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-init-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-null.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-init-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,6 +49,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-init-undefined.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-init-undefined.js
index 4fb0ea48bf..c54ae70724 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-init-undefined.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-init-undefined.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-undefined.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-init-undefined.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,6 +49,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-empty.js
index 3bc5dd2ed8..ead75b9715 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-get-value-err.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-get-value-err.js
index 0a50226a40..29bde1a8ff 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     4. Let v be GetV(value, propertyName).
@@ -56,6 +56,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-arrow.js
index 5e3ecd27fd..a92908d16f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-class.js
index 9353a4ee97..f3b3067374 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-cover.js
index 49704c4f3f..8b52db48b0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-fn.js
index 47c8bc2ba7..28a302e17f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-gen.js
index 97074e7e40..8acacee74a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-skipped.js
index fb1c5158ed..1b36270b0f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-throws.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-throws.js
index 829dffe76d..573df23103 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
@@ -56,6 +56,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-unresolvable.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-unresolvable.js
index d98d28f2c6..abcf7b0bf6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-trailing-comma.js
index 02fb88d16e..b1779106a7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-list-err.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-list-err.js
index e37bcbdfc2..a6ec15f162 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-list-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-list-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-list-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-list-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,8 +55,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
-
-assert.sameValue(initCount, 0);
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-init.js
index a0477e965b..478fe16fb6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-trailing-comma.js
index 001aab5e32..51b3adc674 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-value-null.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-value-null.js
index 5f4e98d128..e6c8be2827 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-value-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary.js
index 9cb463ffd0..27e4075244 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-eval-err.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-eval-err.js
index 3bdd7c6fd1..229b3fd1d7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-eval-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-eval-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-eval-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-eval-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Evaluation of property name returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -53,6 +53,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-get-value-err.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-get-value-err.js
index ab2ef7c461..2246269a2e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. Let v be GetV(value, propertyName).
     2. ReturnIfAbrupt(v).
@@ -56,8 +56,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
-
-assert.sameValue(initEvalCount, 0);
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-skipped.js
index c7c6920daa..8c908cc940 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-throws.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-throws.js
index 9a9fffe76a..136e505dfb 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 function thrower() {
   throw new Test262Error();
@@ -56,6 +55,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-unresolvable.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-unresolvable.js
index 2ec54e3ce9..928600acb9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init.js
index 914807a35b..d38dab6293 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-trailing-comma.js
index adbe01fd01..9d5dbe33f5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id.js
index d1940c75af..892ea59150 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-init.js
index 779ff62325..73553b46ca 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-value-null.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-value-null.js
index 899e6709ca..99ac754196 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-value-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-null.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-value-undef.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-value-undef.js
index a0d082d80c..b78d7d781c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-value-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj-value-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-undef.case
-// - src/dstr-binding/error/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-const.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj.js
index f5a3fed3f2..c612385c76 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-getter.js
index 6b5a443a47..4bbb88b0ff 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-nested-obj.js
index 37427d0585..39cafc08f5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-nested-rest.js
index 450c85fa15..2df7a1847a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-own-property.js
index d98c6ea676..404f73be52 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-skip-non-enumerable.js
index b28c1d9513..b619c4ab87 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-val-obj.js
index 45bbbdf6b7..e1eeb5dfdc 100644
--- a/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-const.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-close.js
index ee04b176a1..2a327cd305 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-get-err.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-get-err.js
index 53356d8e58..cd3d4c5bd3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-get-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-get-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-get-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-init-iter-get-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Abrupt completion returned by GetIterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -39,8 +39,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 
 ---*/
 var iter = {};
@@ -55,6 +54,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-no-close.js
index 699d61086c..bb69bb6e36 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-name-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-name-iter-val.js
index 9a77672859..7479086465 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elem-init.js
index a69ed9edec..73a1e1e35b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elem-iter.js
index dc4d5fa3f2..b55dff3b62 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elision-init.js
index d84b82d381..8353b4eda3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elision-iter.js
index f6bf5adcd8..3cf41e50ed 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-empty-init.js
index 8dc810bcb6..0e4e595cc0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-empty-iter.js
index b04a49fee6..4170dc60fe 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-rest-init.js
index 77b76eab44..3174b1d18f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-rest-iter.js
index 5ef582799f..0b5dcd28a1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-val-null.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-val-null.js
index c4e8a5b56a..21230e963e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-val-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-ary-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Nested array destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -51,8 +51,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 ---*/
 
 async function fn() {
@@ -62,6 +61,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-exhausted.js
index 554ff21c37..fbf731e135 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-arrow.js
index 7628c2f87f..c379105cf3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
index 7f020866e2..ee8540b2bc 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js
index 9077d6dedd..0b6aaedbc5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js
index 92751b857f..fcda7fc0c6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js
index 17b25482b2..b510798933 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-hole.js
index a09c5bab72..b7b92e4be9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-skipped.js
index 0f899edf09..7d1194d659 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-throws.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-throws.js
index 88da5ae807..981d370dfd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 
 async function fn() {
@@ -53,6 +52,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-undef.js
index 9423b8cda4..88db698700 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-unresolvable.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-unresolvable.js
index 4dd930c037..04c7da70f8 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-complete.js
index ec56f90531..249d996bfe 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-done.js
index 290d80b304..b1270529b5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-step-err.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-step-err.js
index 383d37d27a..234accf758 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -48,7 +48,7 @@ info: |
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       throw new Test262Error();
     }
   };
@@ -61,6 +61,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-val-err.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-val-err.js
index 8473eb939f..a9bbb4e5e5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -59,7 +59,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -72,6 +72,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-val.js
index bc4eec7f18..6ac04bab7b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-id-init.js
index 68385226b7..a48da5cdbd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-id.js
index aac482acf5..f46bea0532 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-prop-id-init.js
index 5544813025..b8ed93139d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-prop-id.js
index f40915bec5..d91461aa7d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-val-null.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-val-null.js
index ce125433de..4e3f81fd1a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-val-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Nested object destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,6 +62,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-val-undef.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-val-undef.js
index 262a572a4a..a150a7c613 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-val-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-obj-val-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Nested object destructuring with a value of `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,6 +62,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-exhausted.js
index bcc6088cfe..2e52270791 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-iter-close.js
index b92c8a4fd2..d156ff2b8f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-func-let.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-step-err.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-step-err.js
index 7abaa288e6..a49aaefa13 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-step-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-step-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -54,7 +54,7 @@ info: |
 
 ---*/
 var following = 0;
-var iter =function* () {
+var iter = function* () {
   throw new Test262Error();
   following += 1;
 }();
@@ -66,9 +66,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    assert.sameValue(following, 0, "iterator is properly closed");
+  })
   .then($DONE, $DONE);
 
-
-iter.next();
-assert.sameValue(following, 0, 'Iterator was properly closed.');
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision.js
index 4dffb5daca..2e27366924 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-empty.js
index cdb54202a2..151088698f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-elem.js
index 4c8c1a2e40..f1000b904f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-elision.js
index 38e2ef4f6b..3b8195bc27 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-empty.js
index 43b425c793..088fdb9588 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-rest.js
index b31b345157..2e8dc1a6e9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-elision-next-err.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-elision-next-err.js
index 32bad54f2a..8be17ad5ba 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-elision-next-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-elision-next-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision-next-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,6 +55,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-elision.js
index 7ed735db2c..67ea422a46 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-exhausted.js
index 8f3f7dc9d1..20b96f6c0a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-close.js
index 797ef147f8..8eb33fdb41 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-func-let.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-step-err.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-step-err.js
index 3d8c480999..440785123c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -62,10 +62,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
-
-iter.next();
-assert.sameValue(first, 1);
-assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-val-err.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-val-err.js
index a45531ed32..bfe84544ef 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,7 +55,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -68,6 +68,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id.js
index 459c351a2a..4a9813d142 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-ary.js
index 8b05b78a38..f5b44922ce 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-id.js
index 61de2df4e0..ceb1411189 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-obj.js
index 1b885ec818..658b963a8a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-ary.js
index 8584d0ce38..57c5abf501 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-id.js
index 74f92029ae..f8e3c48e0f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-obj.js
index 65783cfbc0..71fb2b646c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-obj-id.js
index 692810ac98..7a54a56e36 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-obj-prop-id.js
index a3929d0e70..4f21924cdc 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-init-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-init-iter-close.js
index 89ca96204d..a1b31e14ef 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-init-iter-no-close.js
index 6f4c9e35dd..6b59095af1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-name-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-name-iter-val.js
index 150b2b6fa5..05218d9081 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elem-init.js
index 0c373c5f60..7b4cb71c55 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elem-iter.js
index 67a3720ac1..2203b6d41c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elision-init.js
index e350d5e42f..7f0a6849de 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elision-iter.js
index f76dcc5f9f..a9fc3ad0c5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-empty-init.js
index 235714cf65..a19aa261f5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-empty-iter.js
index 35bcf39b05..8f6f1cfcb1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-rest-init.js
index ea51a1d30d..bd107a097b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-rest-iter.js
index 87d89dec16..cd4d06cfba 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-exhausted.js
index cc6bfb62fd..afabc4bd27 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-arrow.js
index fddee0a259..e4db6777b9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-class.js
index 40e89f2876..31c5c335bd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-cover.js
index 779318b324..61b5471f96 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-fn.js
index b66557b77c..8433831960 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-gen.js
index f9753954e8..62394147b4 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-hole.js
index cc468edee0..f413d33d5c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-skipped.js
index 40f5a7096a..9630fc9884 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-undef.js
index aeb52b58a0..7c7cf2fa68 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-complete.js
index cab1bbf67f..a4764ad8f2 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-done.js
index 12e0d09c62..ee2cbd6b85 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-val.js
index f035c1d090..e926da2c68 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-id-init.js
index 9bb94ca087..5b89ddc4c5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-id.js
index da37fef834..d6cc12bc8e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-prop-id-init.js
index 0fadab5912..f17195bd74 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-prop-id.js
index 00ab0f076b..7ce0a9ac65 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elision-exhausted.js
index b3ed5edbd4..427695e835 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elision.js
index c78aa50717..8c52cf0409 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-empty.js
index b6cc6912e8..0c8bd96915 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-elem.js
index 5a4c816619..20c4cdcb06 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-elision.js
index 29fb962c88..8303f7f708 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-empty.js
index dbcc88af2c..be2fb21423 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-rest.js
index 0faa4dbf16..880f5fd678 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id-elision.js
index e111cb1811..a6ddb66c77 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id-exhausted.js
index fddf10d574..fdd3f5092b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id.js
index 5eaa9e14d3..450ef508b4 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-ary.js
index 88a93910ef..e36c46691a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-id.js
index b9b64dd4ca..6ddd9d4746 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-obj.js
index 9c40a15f9f..cce62fe3b6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-ary.js
index f13533ca8d..a8ecd434b0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-id.js
index 4c09dd7f46..3288685a43 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-obj.js
index 6255f00fdb..6a704463c1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-obj-id.js
index cfb6caef8c..374f794583 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-obj-prop-id.js
index a3686b5658..1504c29dbd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-empty.js
index 442b59f9ce..d612401b44 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-arrow.js
index 1deabbc454..50d4df98fd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-class.js
index 0af1abc181..a54f2b2201 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-cover.js
index 3a0a9a4f85..af76f38b8c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-fn.js
index 80f255e45a..d78c45b53b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-gen.js
index 4d122d3e98..33374b5733 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-skipped.js
index 31ca7171af..bd06b95c57 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-trailing-comma.js
index 9f32a86d26..c4e455f6b4 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary-init.js
index 8983357d36..bd77d1bddd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary-trailing-comma.js
index f4c09486c3..b334f8b8cd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary.js
index 6ee201d9e4..2a5307c7b0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-init-skipped.js
index be2c745522..45fd703da2 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-init.js
index 83c5f68f56..d41060961c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-trailing-comma.js
index 6bc04fa8ff..05dcc2eef8 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id.js
index 801755c156..2dda39f456 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-obj-init.js
index 37f0e1107a..14e2cfca43 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-obj.js
index 60f704eefd..adf5f284c7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-getter.js
index 857d7101c2..c1ea7beb2b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-nested-obj.js
index e43f13c8a8..077519e9d3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js
index cc2cfc885a..7906c8d668 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-own-property.js
index ff715eb126..1eccbf33dc 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js
index 2fc39d1c09..d36b5fb8b3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-val-obj.js
index c1a732dc2c..e5e3d99db1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let-async.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-init-null.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-init-null.js
index dbdab0a47d..43f93a0e41 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-init-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-init-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-null.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-init-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,6 +49,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-init-undefined.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-init-undefined.js
index 0ecf2b2ffb..43a05efc58 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-init-undefined.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-init-undefined.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-undefined.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-init-undefined.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,6 +49,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-empty.js
index 222d34f5f6..47b49456d2 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-get-value-err.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-get-value-err.js
index be24e507c0..6b242e3036 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     4. Let v be GetV(value, propertyName).
@@ -56,6 +56,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-arrow.js
index 74d62a1379..c8e49c23e5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-class.js
index dd1a28d8ed..fb5c253310 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-cover.js
index d83e4695a5..e6ebb44596 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-fn.js
index 7f24ce02ee..0b0eef5469 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-gen.js
index f9841fd862..8e378bdb9b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-skipped.js
index 87d5047438..fd73d5c948 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-throws.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-throws.js
index b0afd151cd..0f7c478bd1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
@@ -56,6 +56,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-unresolvable.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-unresolvable.js
index f64640d0e0..fc617d2191 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-trailing-comma.js
index 0899ad8da5..8cbd7cbca9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-list-err.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-list-err.js
index 43ebe82541..284b8f2822 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-list-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-list-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-list-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-list-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,8 +55,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
-
-assert.sameValue(initCount, 0);
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-init.js
index fb006a1af2..9838ad0309 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-trailing-comma.js
index 8e77a7d329..931a0567d3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-value-null.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-value-null.js
index 65e7fc5a5c..d11eddaf69 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-value-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary.js
index 22dc0a9409..70775e4098 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-eval-err.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-eval-err.js
index 2c0586bfaf..fced0b0860 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-eval-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-eval-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-eval-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-eval-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Evaluation of property name returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -53,6 +53,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-get-value-err.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-get-value-err.js
index 3c538f1690..b14aad0499 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. Let v be GetV(value, propertyName).
     2. ReturnIfAbrupt(v).
@@ -56,8 +56,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
-
-assert.sameValue(initEvalCount, 0);
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-skipped.js
index 6f003d7f1e..79039234b5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-throws.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-throws.js
index 825458c4e2..7956c2638e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 function thrower() {
   throw new Test262Error();
@@ -56,6 +55,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-unresolvable.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-unresolvable.js
index cf8464d69d..b0af4fba62 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init.js
index ae8eb8de7f..ba840bd7ac 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-trailing-comma.js
index 1adcbf79d7..3a8111fd41 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id.js
index 66be749d53..b38ed5aa18 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-init.js
index 5089380706..663cd8e8f6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-value-null.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-value-null.js
index 144919852e..37c11d0761 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-value-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-null.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-value-undef.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-value-undef.js
index 81f3209837..1100d272ed 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-value-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj-value-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-undef.case
-// - src/dstr-binding/error/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-let.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,11 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj.js
index 0c108d1fd5..74ec43242e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-getter.js
index 2fc78747ff..891538b3f5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-nested-obj.js
index e5725c3e4f..6bdd1c3f9c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-nested-rest.js
index 3e3a88deb5..5d7dc9bb07 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-own-property.js
index 5379209b11..33981973e2 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-skip-non-enumerable.js
index 1d74c3aafc..840ba6cc9c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-val-obj.js
index 9eb47d4c77..c5410f346f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-let.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-close.js
index 27b31e6181..47d0799336 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -46,10 +46,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-get-err.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-get-err.js
index c09e0e152c..18cd722211 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-get-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-get-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-get-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-init-iter-get-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Abrupt completion returned by GetIterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -39,8 +39,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 
 ---*/
 var iter = {};
@@ -55,5 +54,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-no-close.js
index df031acf1d..1d3d2f16b1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -46,10 +46,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-name-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-name-iter-val.js
index 6eb6bd849d..57ddce4eb1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,23 +34,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elem-init.js
index 0ed5d56ff1..26bf8f0dcf 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elem-iter.js
index 65951baaa8..b43ff3a6c9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elision-init.js
index 625dadd9ed..9bee0d95f9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elision-iter.js
index aa43eb95f8..329761eaee 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-empty-init.js
index cf52eb7722..148b900f88 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-empty-iter.js
index eb10259862..e36c1295b5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-rest-init.js
index cf7c9135af..bedf260853 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-rest-iter.js
index 07cd286bf5..5f22e83500 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-val-null.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-val-null.js
index 251c81466a..9521b2e4b3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-val-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-ary-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Nested array destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -51,8 +51,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 ---*/
 
 async function fn() {
@@ -62,5 +61,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-exhausted.js
index c31b35584b..832128ec20 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,16 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-arrow.js
index 400f502f78..e70ecfba9a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
index 5682379720..3f6f004bf1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js
index 87c1e95e88..c3353d3c11 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js
index 47cd2f68c1..2e170afc33 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js
index 28263d1e0d..38c2e7c6f8 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-hole.js
index 9084a691d0..bf6e44573e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -33,12 +33,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-skipped.js
index 7586cce729..272db39b4c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,13 +34,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-throws.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-throws.js
index 0a15bf6c94..339293907f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 
 async function fn() {
@@ -53,5 +52,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-undef.js
index c26a66e1df..68bb91d46f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,15 +34,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-unresolvable.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-unresolvable.js
index 4d90195ec8..bbd279162a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,5 +59,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-complete.js
index 90aa918637..668ce3952c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,19 +34,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-done.js
index 936d89bac3..3b95726763 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,14 +34,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-step-err.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-step-err.js
index 7a7e676931..39159deab2 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -48,7 +48,7 @@ info: |
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       throw new Test262Error();
     }
   };
@@ -61,5 +61,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-val-err.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-val-err.js
index a80a43a4d7..e5ce20f525 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -59,7 +59,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -72,5 +72,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-val.js
index baf1ab3417..f58ec1b32b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,23 +34,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-id-init.js
index ec7dfbdd39..4a051632b5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-id.js
index 73797fbcf1..53f0e920ef 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-prop-id-init.js
index c1bf5caf93..4fd25a375c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-prop-id.js
index 24bf014624..28ebb2ab09 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-val-null.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-val-null.js
index b0c0d748c5..59b6b5b94a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-val-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Nested object destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,5 +62,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-val-undef.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-val-undef.js
index 63dde3d756..0381260077 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-val-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-obj-val-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Nested object destructuring with a value of `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,5 +62,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-exhausted.js
index e0a1d85eb0..4c2c2b890a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-iter-close.js
index 1c1fe12e3a..fb6fc16823 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-func-var.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-step-err.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-step-err.js
index 838aafc87c..489f1881c9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-step-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-step-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -54,7 +54,7 @@ info: |
 
 ---*/
 var following = 0;
-var iter =function* () {
+var iter = function* () {
   throw new Test262Error();
   following += 1;
 }();
@@ -66,8 +66,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    assert.sameValue(following, 0, "iterator is properly closed");
+  })
   .then($DONE, $DONE);
-
-iter.next();
-assert.sameValue(following, 0, 'Iterator was properly closed.');
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision.js
index 64c07e8719..df265c9f83 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-empty.js
index c43287a640..05c7a8b7f0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-elem.js
index afa58a81a3..c340dea34a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -47,23 +47,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-elision.js
index e29f682722..2175f0bb4f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-empty.js
index f022e2877b..fbb554ca1e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-rest.js
index 7210eb1e51..537070c14f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-elision-next-err.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-elision-next-err.js
index 27a1c063fa..f7ed0ef28d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-elision-next-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-elision-next-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision-next-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,5 +55,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-elision.js
index 7911863e79..7300b65618 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-exhausted.js
index 5cf395ff6c..69d8d71c1f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-close.js
index e58ce4b28b..c21307123b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-func-var.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-step-err.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-step-err.js
index fcf8a39f44..a191b3f795 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -62,9 +62,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
-iter.next();
-assert.sameValue(first, 1);
-assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-val-err.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-val-err.js
index 48332e26bb..8f478b47e0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,7 +55,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -68,5 +68,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id.js
index 69d0065bd7..cc3fe426cb 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-ary.js
index b08c8cc90a..43c419a29d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-id.js
index 0725f89b6b..72ccd14585 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-obj.js
index e6b50cd1c9..3900ed2d63 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-ary.js
index c990ecf539..aacf641545 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-id.js
index db176495ae..8ea77ba47c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-obj.js
index e6602b2a00..6865a4e05b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-obj-id.js
index db45d7e2e5..ee673552c3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-obj-prop-id.js
index 4803214e57..b908735de9 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-init-iter-close.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-init-iter-close.js
index 3d64352fa2..a46bb256f5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-init-iter-no-close.js
index 2a8b27f6d0..bbe81b8ed6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-name-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-name-iter-val.js
index ffb4c03723..bcde52cab1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elem-init.js
index b6f692f23b..ecdde48130 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elem-iter.js
index 3118d453f3..b2297f9892 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elision-init.js
index 935fbe20b8..1636ea82cd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elision-iter.js
index 279603fa7f..9de35a45ae 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-empty-init.js
index 32f0130df2..24c8ca7b44 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-empty-iter.js
index 5893efc900..fab1ca716f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-rest-init.js
index 1748701596..98147bc00c 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-rest-iter.js
index e56dde9f13..be774f8547 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-exhausted.js
index 1607455627..4fc8a9ba1f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-arrow.js
index 966b522507..748c355575 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-class.js
index 3b594b8d76..09ece47eeb 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-cover.js
index a04e3fe5a6..6d7f97105f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-fn.js
index 030f4a7beb..29d455e14d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-gen.js
index a9ef7113e1..8e4a43b2aa 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-hole.js
index 9dc0844557..8a999e323a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-skipped.js
index 2e054ddd28..a6fe5c6791 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-undef.js
index 119b954088..09d1e54827 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-complete.js
index bdf6257fc6..b562fe1127 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-done.js
index 36f1612d96..d8749af5be 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-val.js
index b1991f50da..f8b4a2f461 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-id-init.js
index 3a5c0567b7..5533242f74 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-id.js
index 77989c0c5f..848b47e87b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-prop-id-init.js
index 7b2bdf870f..b85770dbec 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-prop-id.js
index 3b3205f6ac..3449215ff7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elision-exhausted.js
index c2a92d6b19..a2adcebcc1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elision.js
index b214ab9540..c006949e5f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-empty.js
index 6eb948798f..d35ffbbfae 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-elem.js
index cb8f1355f1..e861a2b17a 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-elision.js
index fc9285fc58..45b829cb17 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-empty.js
index d4523026b0..2e406b6050 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-rest.js
index 676d705266..4e6d5e1c7d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id-elision.js
index 671542740d..17fa0285fc 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id-exhausted.js
index 29dab2740e..59f5b16b4b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id.js
index 34e1663c23..e12f29b907 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-ary.js
index c6999d3578..f8a840b798 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-id.js
index e9aafea0ef..5e67a8d904 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-obj.js
index fb517fa378..4d201cf5b4 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-ary.js
index ffe7b062dc..d1263e0d14 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-id.js
index 539c7701ac..4c1f44ccf4 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-obj.js
index 87e714cee0..50ae14fc12 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-obj-id.js
index 616cac3882..d014682604 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-obj-prop-id.js
index f224e00219..bcfd217805 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-empty.js
index 50635bff9f..13722fc1de 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-arrow.js
index 12cec7f4ec..c2ca047875 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-class.js
index aee417404b..98078587f2 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-cover.js
index a09c6b646d..1f15d93204 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-fn.js
index 96a25c8d93..2b8c5b9c19 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-gen.js
index a7747873cc..776d591db6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-skipped.js
index f92c695c1f..3d8ea4b738 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-trailing-comma.js
index 35d763515f..94e8194920 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary-init.js
index 835b4ac563..b0e17df0fe 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary-trailing-comma.js
index 7afeb0dcdf..321da15b86 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary.js
index 719d73f6a6..b3843756e6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-init-skipped.js
index 118c1d010a..2e1affe313 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-init.js
index eee0d11bb4..0e8376cc86 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-trailing-comma.js
index ff706f64f3..3195ed5801 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id.js
index d060f1b30f..63bf50dda0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-obj-init.js
index a62f5955c2..fb3c945719 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-obj.js
index f531e0e7f3..1bb5bce733 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-getter.js
index 0e3f879f3a..b66863ad6b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-nested-obj.js
index 2741c5fc7d..da562ea3b1 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js
index f675813c1b..9b4002a25f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-own-property.js
index c02173fbca..68c6c4ad42 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js
index 2f914454a9..5d5dba0d06 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-val-obj.js
index 87edd0d287..d52a1b6697 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var-async.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-init-null.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-init-null.js
index ab9469b3d5..5325842c6b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-init-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-init-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-null.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-init-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,5 +49,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-init-undefined.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-init-undefined.js
index d2026d788d..572ea5d50e 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-init-undefined.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-init-undefined.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-undefined.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-init-undefined.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,5 +49,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-empty.js
index 802d869fdd..24bb90c5e5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-get-value-err.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-get-value-err.js
index 59a250c047..78dcbfa939 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     4. Let v be GetV(value, propertyName).
@@ -56,5 +56,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-arrow.js
index 9b3f1da3f6..a4b83541da 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-class.js
index 99367ee72d..376637fdd0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-cover.js
index 60cec3cf04..e8b4e5c41b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-fn.js
index 79c22534b9..cdd2bcf296 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-gen.js
index 0c2b31302a..f0f05a1ab5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-skipped.js
index ae150b10ca..dfa6faa527 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-throws.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-throws.js
index 546834c49a..87a6b2dbae 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
@@ -56,5 +56,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-unresolvable.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-unresolvable.js
index c502db5658..b918b2f350 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,5 +59,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-trailing-comma.js
index 2ad826dfe1..21c3b2906b 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-list-err.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-list-err.js
index f8c8473f5f..7eccde28d8 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-list-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-list-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-list-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-list-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,7 +55,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
-assert.sameValue(initCount, 0);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-init.js
index c96936a632..1d80b153b3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -35,10 +35,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-trailing-comma.js
index 090f991e6d..7aac48f205 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-value-null.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-value-null.js
index c28b7f0f38..2129067bff 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-value-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,5 +51,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary.js
index 9ca95e6d43..ee616eb044 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-eval-err.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-eval-err.js
index 6163b5943b..5dfaec59be 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-eval-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-eval-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-eval-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-eval-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Evaluation of property name returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -53,5 +53,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-get-value-err.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-get-value-err.js
index efd46c54a4..0d9f3bd2c5 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. Let v be GetV(value, propertyName).
     2. ReturnIfAbrupt(v).
@@ -56,7 +56,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
-assert.sameValue(initEvalCount, 0);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-skipped.js
index 0fa429ed50..4b6ff735d6 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-throws.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-throws.js
index fdbba6ad72..bb65484058 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 function thrower() {
   throw new Test262Error();
@@ -56,5 +55,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-unresolvable.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-unresolvable.js
index 3992c982de..757bf5574f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,5 +59,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init.js
index 378d4cbac1..73707c1ab3 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,10 +34,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-trailing-comma.js
index e7f454f5de..9f5b13e422 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id.js
index 9de2f864f0..cae2c206c7 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,10 +34,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-init.js
index fa0b3cf577..3cfedb1345 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -35,10 +35,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-value-null.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-value-null.js
index ac04f8bbe7..d6230154ef 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-value-null.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-null.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,5 +51,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-value-undef.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-value-undef.js
index 0938b44550..d3d8a562ce 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-value-undef.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj-value-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-undef.case
-// - src/dstr-binding/error/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-func-var.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,5 +51,10 @@ async function fn() {
 }
 
 fn()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj.js
index 6079eea226..e66158e634 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-getter.js
index 2dad6f9c20..0216926657 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-nested-obj.js
index 9e94f053c9..f7db9989bd 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-nested-rest.js
index 76e247f6bc..9ff701111d 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-own-property.js
index dc4b7135b0..c90cae8de0 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-skip-non-enumerable.js
index c5404d2160..ddbf1c1e3f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-val-obj.js
index e6397f6d45..943fa84a7f 100644
--- a/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-func-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-func-var.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-close.js
index 26eb8f2905..5701efd107 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-get-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-get-err.js
index d9409274ff..17705fef9e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-get-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-get-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-get-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-init-iter-get-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Abrupt completion returned by GetIterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -39,8 +39,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 
 ---*/
 var iter = {};
@@ -55,6 +54,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-no-close.js
index 03e3299dda..ce3016a146 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-name-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-name-iter-val.js
index f8ed8249f1..31fce01924 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elem-init.js
index af0eaac662..0a643bd4b7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elem-iter.js
index cc85c0612e..c8436c65d6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elision-init.js
index 5f95a9399d..42176a7f51 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elision-iter.js
index 26d3265821..2fedcc4c6e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-empty-init.js
index 63699ca516..a5c5cd3a6d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-empty-iter.js
index afeee856b3..afdb853f4a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-rest-init.js
index 6778f3a109..fdf8687d6c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-rest-iter.js
index 6fc3f1e7bc..7384d46dbc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-val-null.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-val-null.js
index 08b0984ce5..5d39ebda70 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-val-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-ary-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Nested array destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -51,8 +51,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 ---*/
 
 async function * gen() {
@@ -62,6 +61,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-exhausted.js
index 4292a2d2aa..d160dd90cf 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-arrow.js
index 925db70782..1f37260175 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
index f0822486da..97dbe80a8f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js
index 1aaf9d3a33..d4119ad7bf 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js
index e1ea08f359..e1e7af3d46 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js
index 297ee9f624..890fc70ff2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-hole.js
index cd05aad97b..0db5f797cc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-skipped.js
index 86afe4ac80..99ad19eaf0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-throws.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-throws.js
index 06bb647b07..7c1aa69447 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 
 async function * gen() {
@@ -53,6 +52,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-undef.js
index ef427fdd29..71ca6618d3 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-unresolvable.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-unresolvable.js
index 49ebff0aec..b75b74cf5c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-complete.js
index 2a9395086d..51b4810271 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-done.js
index 7aed0b37cb..a886651ddf 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-step-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-step-err.js
index 56503b9946..fe1b8b5021 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -48,7 +48,7 @@ info: |
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       throw new Test262Error();
     }
   };
@@ -61,6 +61,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-val-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-val-err.js
index 8be2a16a10..ee179c99f7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -59,7 +59,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -72,6 +72,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-val.js
index bf6ec309ac..c6c46c93c2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-id-init.js
index e0d1a04385..dccf38fc37 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-id.js
index d7c93891f3..2d3c6d2823 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-prop-id-init.js
index 36f0e288c6..053fb3d752 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-prop-id.js
index 85b6d95985..f8a8f520c7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-val-null.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-val-null.js
index ebda36b6a7..b2ccc4fffa 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-val-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Nested object destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,6 +62,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-val-undef.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-val-undef.js
index 7f30dcac7a..35ac5d8928 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-val-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-obj-val-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Nested object destructuring with a value of `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,6 +62,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-exhausted.js
index 196fa8c856..3fb2a0cd32 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-iter-close.js
index 80abd7a031..fd8d14770b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-gen-const.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-step-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-step-err.js
index cea351065b..c20cb981a7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-step-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-step-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -54,7 +54,7 @@ info: |
 
 ---*/
 var following = 0;
-var iter =function* () {
+var iter = function* () {
   throw new Test262Error();
   following += 1;
 }();
@@ -66,9 +66,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    assert.sameValue(following, 0, "iterator is properly closed");
+  })
   .then($DONE, $DONE);
-
-
-iter.next();
-assert.sameValue(following, 0, 'Iterator was properly closed.');
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision.js
index b6bc1c31d0..903528725b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-empty.js
index dd8987b298..5f3d2528e6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-elem.js
index 7fd4c0465b..42b56396ba 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-elision.js
index 0c6fea0228..fb78bf0e5e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-empty.js
index 1c800b9ac3..81bc2cbdd0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-rest.js
index 371265d1f9..a5837f4700 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-elision-next-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-elision-next-err.js
index ed6ab32edb..b7afb57a24 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-elision-next-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-elision-next-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision-next-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,6 +55,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-elision.js
index 05d1ed7e9b..f42c20af9c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-exhausted.js
index e8a49e6611..9c76f2a5bc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-close.js
index 45c51309f9..af61e2889a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-gen-const.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-step-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-step-err.js
index a8d4e2584d..7d2f240606 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -62,10 +62,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
-
-iter.next();
-assert.sameValue(first, 1);
-assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-val-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-val-err.js
index deb85fcb54..a7f05d4c17 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,7 +55,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -68,6 +68,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id.js
index 7fab5dee4a..fe9baa8bd6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-ary.js
index a95b0cf301..7d1ad86a76 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-id.js
index 634b007b19..646e7ec996 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-obj.js
index bca2b3034d..17bb60da94 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-ary.js
index 83eb75df96..506977174d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-id.js
index 3edb3c6db1..1e575fa418 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-obj.js
index 7ff192df0b..143a5e26bc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-obj-id.js
index 9e09997860..e2e998e58e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-obj-prop-id.js
index 78f06cd961..2624a59d20 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-init-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-init-iter-close.js
index 94d5b939ea..988d61c578 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-init-iter-no-close.js
index 6fa1d2c066..4a8a2be3a4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-name-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-name-iter-val.js
index 73d3a0b51a..7547f41b87 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elem-init.js
index a3a5fc455c..a48a6a17dd 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elem-iter.js
index d35829005e..3f7aba2e39 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elision-init.js
index 82ced4fd9f..dffa7bc867 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elision-iter.js
index 76e27d6642..b040879c67 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-empty-init.js
index a32f0d12f0..90dd99c29b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-empty-iter.js
index 5952154252..979825ed0e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-rest-init.js
index 1c2c909982..fd6d66196a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-rest-iter.js
index bee246f414..c46731351a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-exhausted.js
index 8c17b68f41..d1afd52044 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-arrow.js
index 1977874a42..749d88463a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-class.js
index d60c465b2b..390c3d71cc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-cover.js
index 586ee276ad..6e786ee30f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-fn.js
index bf6f1e2b7c..637c55a961 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-gen.js
index 3ca26a31e0..82bddc49fb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-hole.js
index b8211c42bf..1dbe43d192 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-skipped.js
index bd3ab2b97b..80eab158bf 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-undef.js
index 3c2e209c9b..bf9dd65cf9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-complete.js
index 3f7ff1017c..438d816490 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-done.js
index 96730f7f3d..4e26237f86 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-val.js
index 0192acef77..48cfa883a1 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-id-init.js
index 17b6913d49..eb30e258a4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-id.js
index e495d3ecb7..942bc6df1b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-prop-id-init.js
index 7257b001d0..1f9b23d541 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-prop-id.js
index c19221c92c..d7cc7f16a5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elision-exhausted.js
index 2af9650914..3cb9c38207 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elision.js
index b6d981909a..d30e65524a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-empty.js
index c562e057ac..ccd3bab303 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-elem.js
index 45086a2ec1..cd76ff486a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-elision.js
index 661c0a4c8b..c04f5c1ede 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-empty.js
index be4dac13fc..896a7a2e72 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-rest.js
index 2b44ec30e0..ee353a253c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id-elision.js
index 7fdcd7119a..1ea937b560 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id-exhausted.js
index e8417f5ad0..3e66922bab 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id.js
index 0d991672b4..ddad5ca97f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-ary.js
index 685341687c..82d92099c4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-id.js
index b4e256e6a7..ef29973517 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-obj.js
index 405d946ee3..eab2400372 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-ary.js
index 2a62d2e5a4..54a2d9b468 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-id.js
index fb0fff162d..b87b8bdcc2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-obj.js
index 3791b544f7..54bb1d3662 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-obj-id.js
index 993b15abb8..d89902ee82 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-obj-prop-id.js
index 028a44af38..cc970bf2cb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-empty.js
index 08320a99e5..0875f719ed 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-arrow.js
index e1598d40e8..8b525dca41 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-class.js
index 137bd77343..4fe3a745d5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-cover.js
index 484d3f4fe2..f8a69db36c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-fn.js
index ce632b77e9..02b7e3c6f1 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-gen.js
index 575b7a0dfb..9d1f48d453 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-skipped.js
index 3497ef78c9..f332e06017 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-trailing-comma.js
index 5ace88ecf7..53717f0e43 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary-init.js
index d6c5976d5e..b403cc55a8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary-trailing-comma.js
index 1f3e852fbc..a9fa356135 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary.js
index 898d446146..0c7915f1d4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-init-skipped.js
index 009100990b..e54e793be0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-init.js
index 2d65396991..cf677cf738 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-trailing-comma.js
index a6fcec9926..65ec325709 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id.js
index 99e56ea379..decbac6ac2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-obj-init.js
index 095118c761..2220694886 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-obj.js
index 404cff1d40..ad767c3837 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-getter.js
index f7a85a7590..4cbc6f46e6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-nested-obj.js
index e490e3d192..8bb992f7c0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js
index 78bbe16d3e..9282e01d4e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-own-property.js
index c5089cda6e..b287d8119e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js
index 074bc0f0c3..0c6882f2a6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-val-obj.js
index 09a31e9c45..f1eb5f5abd 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const-async.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-init-null.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-init-null.js
index 6f1aaf9fec..b202e2f7be 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-init-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-init-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-init-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,6 +49,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-init-undefined.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-init-undefined.js
index 911c21a523..537d3e655b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-init-undefined.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-init-undefined.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-undefined.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-init-undefined.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,6 +49,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-empty.js
index 056f8c4713..e85219d9bb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-get-value-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-get-value-err.js
index 2e158d68c8..6ee0fd4860 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     4. Let v be GetV(value, propertyName).
@@ -56,6 +56,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-arrow.js
index f39cc654af..f63ed252c9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-class.js
index 12387e7f10..23300bf423 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-cover.js
index 8c8dcfb5a1..903ee6ca54 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-fn.js
index 60753e35b7..31b15e2091 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-gen.js
index 3c314bfeb0..2f82a8fe1f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-skipped.js
index 45bd195da3..7d6fdeac6f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-throws.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-throws.js
index 7ce139cb16..59cdd4493c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
@@ -56,6 +56,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-unresolvable.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-unresolvable.js
index 14839e6f1c..5e630561aa 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-trailing-comma.js
index 2e0c5b739f..39a4ac9643 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-list-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-list-err.js
index b1390a8e52..e43b30cba9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-list-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-list-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-list-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-list-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,8 +55,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
-
-assert.sameValue(initCount, 0);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-init.js
index 31e080138f..16089ba9e2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-trailing-comma.js
index 3fda2d6833..0a8710b8dc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-value-null.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-value-null.js
index dd0be9ae33..2911d4cb85 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-value-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary.js
index 2870f17913..12127f395e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-eval-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-eval-err.js
index 05bd8c2f75..4756fea455 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-eval-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-eval-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-eval-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-eval-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Evaluation of property name returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -53,6 +53,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-get-value-err.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-get-value-err.js
index fe9f3e29fb..6ef2f58b4e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. Let v be GetV(value, propertyName).
     2. ReturnIfAbrupt(v).
@@ -56,8 +56,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
-
-assert.sameValue(initEvalCount, 0);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-skipped.js
index 9bcec7b156..2b6c7a97e9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-throws.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-throws.js
index 6b3e5569d4..c742ffb7d2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 function thrower() {
   throw new Test262Error();
@@ -56,6 +55,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-unresolvable.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-unresolvable.js
index 60b8d6f3e2..5d5fded794 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init.js
index e67c67c396..019c7a5376 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-trailing-comma.js
index b69fa747fc..c68a7116a0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id.js
index 4f874cf317..e256317b59 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-init.js
index ac3097d1ac..fa4f9f5ec6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-value-null.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-value-null.js
index 8d06d6c94c..16a6db2977 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-value-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-value-undef.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-value-undef.js
index f255baac25..12aa1d43bc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-value-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj-value-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-undef.case
-// - src/dstr-binding/error/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-const.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
-
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj.js
index a280d6deeb..685afb2311 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-getter.js
index ebc5eb16c0..3285763ffb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-nested-obj.js
index 07004dea4f..8f8f338c56 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-nested-rest.js
index b70de9e475..cefb9ba33c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-own-property.js
index 874d6abd44..e9ac410a5a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-skip-non-enumerable.js
index 7d76cf75d9..fc238c55c6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-val-obj.js
index f45b3c2952..a43c7411b1 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-const.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-const.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-close.js
index 7f2ce824d3..41d78b1077 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-get-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-get-err.js
index b5430dee8c..4904a73882 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-get-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-get-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-get-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-init-iter-get-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Abrupt completion returned by GetIterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -39,8 +39,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 
 ---*/
 var iter = {};
@@ -55,5 +54,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-no-close.js
index 24931586ab..4b9bff7913 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-name-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-name-iter-val.js
index 81a3c72896..6da083bfaa 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elem-init.js
index f6f15d1c3e..a2983cd8ba 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elem-iter.js
index 637607a06c..73cbc8a9bb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elision-init.js
index 66de3a27df..bfef9fd3e5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elision-iter.js
index 88bdb7b933..251680f04e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-empty-init.js
index d8b0a43ac7..1ebbc56325 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-empty-iter.js
index da355666af..ad5c805e46 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-rest-init.js
index a46b20a9ef..dfbe84b1e4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-rest-iter.js
index 3f8d5d837a..1d87383393 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-val-null.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-val-null.js
index 58eef04c7f..1436e66469 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-val-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-ary-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Nested array destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -51,8 +51,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 ---*/
 
 async function * gen() {
@@ -62,5 +61,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-exhausted.js
index 4608fe25c9..20c5e52a7d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-arrow.js
index eea3724be2..cddbb8d5b1 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
index 296fe71fbc..3b3988fb1e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js
index c155f58a9d..86b8c6b2c5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js
index b9048334ea..8e04c770a0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js
index 33b9451bbc..937825c24b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-hole.js
index a02b27a0d6..e4c86e2f48 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-skipped.js
index 26fa7ba869..cdd537836f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-throws.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-throws.js
index 9d186db3cc..751d1bf2fe 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 
 async function * gen() {
@@ -53,5 +52,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-undef.js
index 816f0cce02..4732b66d72 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-unresolvable.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-unresolvable.js
index ad09d560f4..33aca3f6cd 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,5 +59,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-complete.js
index 9a98dcaf3c..a9862f4397 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-done.js
index 4b3f91a4cc..d6d5d83bb8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-step-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-step-err.js
index 54920fc280..e6a31a611c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -48,7 +48,7 @@ info: |
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       throw new Test262Error();
     }
   };
@@ -61,5 +61,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-val-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-val-err.js
index f953460b6e..e96774cfc7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -59,7 +59,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -72,5 +72,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-val.js
index 854f9a38fa..5aca6af1e0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-id-init.js
index 25f87afe59..445f09924b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-id.js
index 030fc748c5..51a7992597 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-prop-id-init.js
index 9ea084e18d..6b5b30c291 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-prop-id.js
index d7ada5cd1d..8af127470d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-val-null.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-val-null.js
index 99e52283e1..dcc8626666 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-val-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Nested object destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,5 +62,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-val-undef.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-val-undef.js
index b3d2ecbd67..e865f9692b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-val-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-obj-val-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Nested object destructuring with a value of `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,5 +62,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-exhausted.js
index 438cbf18ba..27aca3cdf8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-iter-close.js
index bec872509a..58306e76b8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-gen-let.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-step-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-step-err.js
index ef7ee36861..5a7ce09722 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-step-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-step-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -54,7 +54,7 @@ info: |
 
 ---*/
 var following = 0;
-var iter =function* () {
+var iter = function* () {
   throw new Test262Error();
   following += 1;
 }();
@@ -66,8 +66,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    assert.sameValue(following, 0, "iterator is properly closed");
+  })
   .then($DONE, $DONE);
-
-iter.next();
-assert.sameValue(following, 0, 'Iterator was properly closed.');
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision.js
index b5e4bc53c6..1a70969e18 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-empty.js
index 9e5f2785ae..04e9a70cb8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-elem.js
index ae7d7560d0..70bc7fd158 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-elision.js
index 810feed77d..03d0aa50ea 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-empty.js
index 193c6a765d..c8205348be 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-rest.js
index 070106dd6c..7fbd9c56ae 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-elision-next-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-elision-next-err.js
index be6b5fd3ca..4f89b55a15 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-elision-next-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-elision-next-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision-next-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,5 +55,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-elision.js
index f82bd2af95..199e53651f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-exhausted.js
index bb405c2f7d..8a1fc26d39 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-close.js
index ba369dde4c..8cd3f727f8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-gen-let.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-step-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-step-err.js
index 1c4fa51cd7..9be4234a2a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -62,9 +62,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
-iter.next();
-assert.sameValue(first, 1);
-assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-val-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-val-err.js
index 634306e0c8..40a3cecf20 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,7 +55,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -68,5 +68,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id.js
index 1561b01d39..1a6526df1f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-ary.js
index 0c2c9de210..b1c6a70c57 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-id.js
index 0a7410e643..79bf21ef7e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-obj.js
index e25751802f..9563a8d111 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-ary.js
index acc348f312..a7a37017d9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-id.js
index 5598b78327..e17ad0b1f2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-obj.js
index a883cce35e..dcc9284da1 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-obj-id.js
index e0511618b4..c0b02bec7d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-obj-prop-id.js
index 688d5a5314..0bc1867c34 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-init-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-init-iter-close.js
index 105b085dc1..fa5d8addbc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-init-iter-no-close.js
index ef51abc67d..1c5819f3bd 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-name-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-name-iter-val.js
index 588330ddb6..e631def198 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elem-init.js
index 01d9eb38e1..018a5bfaee 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elem-iter.js
index 3cd0e902b0..84dead268d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elision-init.js
index afe206ba12..2f19d481fc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elision-iter.js
index 647aa4cd04..64ad8a47d3 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-empty-init.js
index d83c4312ac..16a9eb3a72 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-empty-iter.js
index 74d126e4f7..f3ef73fc7f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-rest-init.js
index 7cbf95219c..de78f1d039 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-rest-iter.js
index 790e24cc71..333d749626 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-exhausted.js
index c3842c1cdf..7b68ed272b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-arrow.js
index 3ab8334626..cee17b6c88 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-class.js
index e24437e7a3..5d4190cb16 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-cover.js
index a78c9d193d..9c48270503 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-fn.js
index 0603be91c0..408c6cea8d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-gen.js
index f9e825dc52..6e319e753d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-hole.js
index a9d94cb0b2..46484a884b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-skipped.js
index 2c2093fa51..b1acd7a9e4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-undef.js
index 3b9a6f3410..bdf416115e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-complete.js
index 122e1c1672..24f782ea76 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-done.js
index a9fb3f0abb..e44eacafb4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-val.js
index d31c94dcb2..ae98f3ab0c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-id-init.js
index 06f12fa124..8a9b9b72b0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-id.js
index 557a31fd68..6f9d6f1e92 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-prop-id-init.js
index e984783260..46b9a5c750 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-prop-id.js
index 71506bbe6a..91479693c9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elision-exhausted.js
index 7edd76f6e5..97f6953fd5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elision.js
index 2871051b4f..250175f264 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-empty.js
index 9de73e04e5..1e649dce01 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-elem.js
index ccb2c1f1a5..3f6e5760b8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-elision.js
index df112ef2cb..a8d48faa82 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-empty.js
index f39b0cdc0c..1f0450dc0c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-rest.js
index f5e808c784..c4035df6c5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id-elision.js
index 491081feec..09584fcb81 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id-exhausted.js
index b267cda1d0..9437daf71a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id.js
index 07fe2e0361..cd48b905a4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-ary.js
index 63237664fc..43baa92fab 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-id.js
index ebdba4e66e..a771249321 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-obj.js
index df2ea0c015..5c9e29d8f6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-ary.js
index b06ced0e10..38b1394534 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-id.js
index 46d33ca952..1f96f5147b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-obj.js
index 6e1ac77707..0b0a47369d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-obj-id.js
index ec4d6b3723..43938aacfc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-obj-prop-id.js
index f465a8f8d4..17207788c3 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-empty.js
index 5c04bbf9d5..5d4ba5dbde 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-arrow.js
index 8e95c3d7a1..0b08285d9f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-class.js
index d74ecb6984..7a14a27d8f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-cover.js
index bfd6096848..1a636e1f20 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-fn.js
index e613678b4d..1622b8d740 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-gen.js
index f6d474be34..d8a9002f15 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-skipped.js
index aebc133d72..f5527a1aa7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-trailing-comma.js
index e2554571c9..6a0d347502 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary-init.js
index 8645bf1bdb..35c0d004e0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary-trailing-comma.js
index 2b771ad15f..7b57c3a082 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary.js
index 048d1135f7..5ced064edc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-init-skipped.js
index 76ffc91b03..1ef8f8b010 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-init.js
index ab25220a3d..2b81755e77 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-trailing-comma.js
index 42942794bb..9ea81dda0e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id.js
index b30295d801..87b0587362 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-obj-init.js
index 66c05e0ce2..f4ef8b0af0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-obj.js
index 431b5aa01a..927807d33f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-getter.js
index 7bc9307bb9..497a95c8ed 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-nested-obj.js
index 03f9d10606..d2539313d5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js
index 0853db839f..c0f58913f2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-own-property.js
index 77e6c82678..0b54ea246b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js
index ead8aa0eb3..03c817114e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-val-obj.js
index 1d941ef790..72ffe96188 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let-async.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-init-null.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-init-null.js
index 34dde4ad40..ebeeadc839 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-init-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-init-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-init-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,5 +49,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-init-undefined.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-init-undefined.js
index fdac18e5cf..5965925c62 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-init-undefined.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-init-undefined.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-undefined.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-init-undefined.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,5 +49,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-empty.js
index 999c394f8a..3db9f48622 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-get-value-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-get-value-err.js
index c3a436c71a..b5352aff5a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     4. Let v be GetV(value, propertyName).
@@ -56,5 +56,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-arrow.js
index dc4f8f4354..630b98d2d7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-class.js
index ea6be8e5e3..bcd2faf491 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-cover.js
index 41dd6d9d48..fe011cd94a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-fn.js
index 357b0eb1f0..9c69331efc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-gen.js
index 5d6d2e8f60..428770a315 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-skipped.js
index b2f558310c..9099555ac3 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-throws.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-throws.js
index c4c4b667ca..2d1f3ec801 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
@@ -56,5 +56,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-unresolvable.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-unresolvable.js
index f8144bc174..60ee189151 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,5 +59,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-trailing-comma.js
index 96911f79dd..d2f2dee7a8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-list-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-list-err.js
index bb9a55a527..845ccdd651 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-list-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-list-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-list-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-list-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,7 +55,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
-assert.sameValue(initCount, 0);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-init.js
index fbb7ae3d5c..51a77613ca 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-trailing-comma.js
index ee83b7150a..431e660ff5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-value-null.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-value-null.js
index 36873e5b13..204d2efda2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-value-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,5 +51,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary.js
index bf66995da8..ec3d06a354 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-eval-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-eval-err.js
index 11b33ff65f..c49ffa8fc7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-eval-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-eval-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-eval-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-eval-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Evaluation of property name returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -53,5 +53,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-get-value-err.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-get-value-err.js
index 7ee5d99b6d..8da6bffca7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. Let v be GetV(value, propertyName).
     2. ReturnIfAbrupt(v).
@@ -56,7 +56,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
-
-assert.sameValue(initEvalCount, 0);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-skipped.js
index 79caadb22e..58dc504d00 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-throws.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-throws.js
index 7888a773d6..1585043af8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 function thrower() {
   throw new Test262Error();
@@ -56,5 +55,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-unresolvable.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-unresolvable.js
index 2bcbb2f3ab..f50edf3e09 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,5 +59,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init.js
index 45c7ae9239..a7c72aeb69 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-trailing-comma.js
index e2fa16843c..2379be6d4e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id.js
index 962877e2f3..bf7c9cc4b8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-init.js
index aa4744af8a..1f59a1115b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-value-null.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-value-null.js
index ee2d6245d2..b93ed1deb7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-value-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,5 +51,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-value-undef.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-value-undef.js
index 8cf6ea33ae..00fd8bf1b8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-value-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj-value-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-undef.case
-// - src/dstr-binding/error/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-let.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,5 +51,10 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj.js
index 4f1c4ce538..3a8ed9ee6a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-getter.js
index f29ee0d310..106588bfe8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-nested-obj.js
index 8dad546a99..3689765563 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-nested-rest.js
index a8a3db625c..06b449bd3e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-own-property.js
index 5bdee94c5e..8c451fc5a7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-skip-non-enumerable.js
index c46f6a267f..92dd4d8c1c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-val-obj.js
index 12e5e48d45..486a915ac5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-let.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-let.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-close.js
index 8b3887938d..f422b11b8e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -46,10 +46,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-get-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-get-err.js
index 53f66b170e..2113f66e21 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-get-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-get-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-get-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-init-iter-get-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Abrupt completion returned by GetIterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -39,8 +39,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 
 ---*/
 var iter = {};
@@ -55,6 +54,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-no-close.js
index b75e766d1c..419c0a51f3 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -46,10 +46,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-name-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-name-iter-val.js
index 7c7e4070e9..10781c9c66 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,23 +34,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elem-init.js
index cb65260053..a941c11047 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elem-iter.js
index ee93351f39..6bcad390be 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elision-init.js
index 468f3ae51d..8a56edc671 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elision-iter.js
index d9075265e4..420e6a360c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-empty-init.js
index 656c29412a..b579f35429 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-empty-iter.js
index 18267654c6..2692f01fc5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-rest-init.js
index 860188e6ce..187f1aeb36 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-rest-iter.js
index 2f2cd45d65..bd259c156b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-val-null.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-val-null.js
index 0676e7df69..5f2386b970 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-val-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-ary-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Nested array destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -51,8 +51,7 @@ info: |
 
     BindingPattern : ArrayBindingPattern
 
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
+    1. Let iterator be ? GetIterator(value).
 ---*/
 
 async function * gen() {
@@ -62,6 +61,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-exhausted.js
index 0aca3d4caa..7860f017dd 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,16 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-arrow.js
index 724965a17e..76ffafb2c9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
index 12887a6e97..48f7f8a938 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js
index ac67c794ce..6cbf484d71 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js
index 4a468f0aa2..58d8eb56fb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js
index c5d34a6b68..7d904485e4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,17 +34,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-hole.js
index d6d5a7e2d1..823911204e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -33,12 +33,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-skipped.js
index 20260c6407..0b6770d1d7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,13 +34,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-throws.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-throws.js
index e7c78ecaa5..230f32f0e1 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 
 async function * gen() {
@@ -53,6 +52,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-undef.js
index c0cab837b6..7ce243c032 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,15 +34,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-unresolvable.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-unresolvable.js
index 174882ee59..d9042814da 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-complete.js
index ba79edf715..63ac7d05ff 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,19 +34,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-done.js
index 371554bfc4..7554df592b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,14 +34,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-step-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-step-err.js
index 9c0461c2e8..e0088da1c4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -48,7 +48,7 @@ info: |
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       throw new Test262Error();
     }
   };
@@ -61,6 +61,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-val-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-val-err.js
index 01dfb67cfd..aa60786906 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
@@ -59,7 +59,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var g = {};
 g[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -72,6 +72,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-val.js
index 3eb794c7b1..5deb10c628 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,23 +34,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-id-init.js
index 525d7d247a..373d4c9ada 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-id.js
index a38669b2de..6793eb93c6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-prop-id-init.js
index 06278958b1..3a6151a5c6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-prop-id.js
index 53761b1724..f866459500 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-val-null.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-val-null.js
index f35a0f6936..d8d05a8c7d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-val-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-val-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Nested object destructuring with a null value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,6 +62,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-val-undef.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-val-undef.js
index 81ba2fd0fc..d90d72d5f1 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-val-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-obj-val-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-val-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Nested object destructuring with a value of `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        [...]
@@ -62,6 +62,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-exhausted.js
index 51f9c7c64e..2913f372be 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-iter-close.js
index c73d7f3024..71f956e2eb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-gen-var.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-step-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-step-err.js
index e3853f3bd2..3a97a7e5d9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-step-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-step-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -54,7 +54,7 @@ info: |
 
 ---*/
 var following = 0;
-var iter =function* () {
+var iter = function* () {
   throw new Test262Error();
   following += 1;
 }();
@@ -66,9 +66,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    assert.sameValue(following, 0, "iterator is properly closed");
+  })
   .then($DONE, $DONE);
 
-
-iter.next();
-assert.sameValue(following, 0, 'Iterator was properly closed.');
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision.js
index 62927c2c45..b85a18d081 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-empty.js
index 0af3dc0534..3b02785133 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-elem.js
index a61804c91b..9da29fb556 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -47,23 +47,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-elision.js
index 5fd82a2a3b..97e70ce83e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-empty.js
index e087d0c083..5f4333d716 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-rest.js
index 6c1965e63b..6329a9e5f5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-elision-next-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-elision-next-err.js
index 63a3b6137f..6b2db24e62 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-elision-next-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-elision-next-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision-next-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,6 +55,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-elision.js
index 56a55c3308..bfcaeccccd 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-exhausted.js
index deeb8a2226..69d7ace52a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-close.js
index 7366db129e..ff17a59707 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-close.case
-// - src/dstr-binding/iter-close/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-close.case
+// - src/dstr-binding-for-await/iter-close/for-await-of-async-gen-var.template
 /*---
 description: The iterator is properly consumed by the destructuring pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-step-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-step-err.js
index 3469341af9..587ed3a78a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-step-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-step-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-step-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -62,10 +62,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
-
-iter.next();
-assert.sameValue(first, 1);
-assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-val-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-val-err.js
index c50287ea69..fa2d701478 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-val-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-val-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-iter-val-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,7 +55,7 @@ var poisonedValue = Object.defineProperty({}, 'value', {
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return poisonedValue;
     }
   };
@@ -68,6 +68,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id.js
index 3d6e936f79..2331fd6ab4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-ary.js
index 7cab299377..a463b99bd9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-id.js
index 5ea538a369..b785029bf6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-obj.js
index 1d84266848..d16ac1786d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-ary.js
index bb1079e379..39cdef4c90 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-id.js
index b37e2fe0ad..18d6a649d5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-obj.js
index 5b4397969a..933966fced 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-obj-id.js
index 81c12aa93a..1a41de3422 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-obj-prop-id.js
index 3a4cf15360..585e6c2be5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-init-iter-close.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-init-iter-close.js
index 03d9db542e..2aa372b764 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-init-iter-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-init-iter-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-init-iter-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Iterator is closed when not exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: false };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-init-iter-no-close.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-init-iter-no-close.js
index 7c0d60c32b..0a2d27c127 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-init-iter-no-close.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-init-iter-no-close.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-init-iter-no-close.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-init-iter-no-close.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Iterator is not closed when exhausted by pattern evaluation (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,10 +49,10 @@ var doneCallCount = 0;
 var iter = {};
 iter[Symbol.iterator] = function() {
   return {
-    next: function() {
+    next() {
       return { value: null, done: true };
     },
-    return: function() {
+    return() {
       doneCallCount += 1;
       return {};
     }
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-name-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-name-iter-val.js
index 8717837466..e04ef78c16 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-name-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-name-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-name-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-name-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding with normal value iteration (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elem-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elem-init.js
index e8d497685a..fde8b01e43 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elem-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elem-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elem-iter.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elem-iter.js
index 9443e4ed27..75d890c1f6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elem-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elem-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elem-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elem-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elision-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elision-init.js
index 54f8f49ab7..4da03bcf09 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elision-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elision-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elision-iter.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elision-iter.js
index 100d6d7870..fcfe3c7312 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elision-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-elision-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-elision-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-elision-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-empty-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-empty-init.js
index 9f78cf5ce9..6f5f9ff77e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-empty-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-empty-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-empty-iter.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-empty-iter.js
index 64fcc5a287..cfb7e52130 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-empty-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-empty-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-empty-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-empty-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-rest-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-rest-init.js
index 70014c0dcb..f416d7fe29 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-rest-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-rest-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-rest-iter.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-rest-iter.js
index 9dbb33316e..19eb582f79 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-rest-iter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-ary-rest-iter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-ary-rest-iter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-ary-rest-iter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with array binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     1. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-exhausted.js
index 4227bcf652..5c86c381f2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Destructuring initializer with an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,16 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
-    6. If Initializer is present and v is undefined, then
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-arrow.js
index 03fa653229..379753693f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding does assign name to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-class.js
index 52b93a0248..ce7f5eb6df 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-cover.js
index 8d42170b6e..8510324d2f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding does assign name to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-fn.js
index 99ce34b7f0..8bfe91fc8e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-gen.js
index 9fb58367d9..e252e7b779 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,17 +37,16 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
+       b. Set v to ? GetValue(defaultValue).
+       c. If IsAnonymousFunctionDefinition(Initializer) is true, then
           [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-hole.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-hole.js
index 49b02c4669..b2f4cf2fce 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-hole.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-hole.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-hole.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-hole.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Destructuring initializer with a "hole" (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -36,12 +36,12 @@ info: |
           [...]
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
-    SingleNameBinding : BindingIdentifier Initializeropt
-    [...] 6. If Initializer is present and v is undefined, then
+    SingleNameBinding : BindingIdentifier Initializer_opt
+    [...] 5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v). 8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v). 7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-skipped.js
index 9cdaaf662e..002797c004 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,13 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
        [...]
     7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 var initCount = 0;
 function counter() {
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-undef.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-undef.js
index eb3553930d..3151096b9c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-init-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-init-undef.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-init-undef.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Destructuring initializer with an undefined value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,15 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
        b. Let v be GetValue(defaultValue).
        [...]
-    7. If environment is undefined, return PutValue(lhs, v).
-    8. Return InitializeReferencedBinding(lhs, v).
+    6. If environment is undefined, return PutValue(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-complete.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-complete.js
index 870d1683d4..c4f117daed 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-complete.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-complete.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-complete.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-complete.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding when value iteration completes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,19 +37,19 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
           [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-done.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-done.js
index 8cf1f20d60..5e9771f978 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-done.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-done.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-done.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-done.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,14 +37,14 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        [...]
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-val.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-val.js
index 563786d6b5..737df81d9f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-val.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-id-iter-val.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-id-iter-val.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-id-iter-val.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding when value iteration was completed previously (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,23 +37,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-id-init.js
index 5023e2bf27..952480afa3 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-id.js
index 003b341be0..a373236f1a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-prop-id-init.js
index 3a0c85c2f8..09081347a0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-prop-id.js
index c192aa63c3..eb79271ef7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elem-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elem-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elem-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: BindingElement with object binding pattern and initializer is not used (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    BindingElement : BindingPatternInitializer opt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     2. If iteratorRecord.[[done]] is true, let v be undefined.
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elision-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elision-exhausted.js
index 16ae92a4b6..1dea1435ff 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elision-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elision-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Elision accepts exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elision.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elision.js
index 8a1d796ca4..02cc149bec 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Elision advances iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-empty.js
index 793cdc441d..6392596f66 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: No iteration occurs for an "empty" array binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-elem.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-elem.js
index 75116da7c1..18bcd690f7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-elem.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-elem.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elem.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element containing an array BindingElementList pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -50,23 +50,22 @@ info: |
 
     13.3.3.6 Runtime Semantics: IteratorBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    4. If iteratorRecord.[[done]] is false, then
+    3. If iteratorRecord.[[done]] is false, then
        a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
        d. If next is false, set iteratorRecord.[[done]] to true.
        e. Else,
-          [...]
           i. Let v be IteratorValue(next).
           ii. If v is an abrupt completion, set
               iteratorRecord.[[done]] to true.
           iii. ReturnIfAbrupt(v).
-    5. If iteratorRecord.[[done]] is true, let v be undefined.
+    4. If iteratorRecord.[[done]] is true, let v be undefined.
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-elision.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-elision.js
index db5607c2d6..da8a87178e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element containing an elision (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-empty.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-empty.js
index e1ecf8d8ec..c745692883 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element containing an "empty" array pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-rest.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-rest.js
index 76df2f222c..91329a4f99 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-ary-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-ary-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-ary-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element containing a rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id-elision.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id-elision.js
index d341b096a5..f5959adbc8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id-elision.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id-elision.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-elision.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-elision.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element following elision elements (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id-exhausted.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id-exhausted.js
index d6a9d18ee0..4f04aeba7c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id-exhausted.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id-exhausted.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id-exhausted.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id-exhausted.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: RestElement applied to an exhausted iterator (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id.js
index f9d74bf06e..4d38a6c5a6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Lone rest element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-ary.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-ary.js
index e30e423fb9..f00c5c9662 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Reset element (nested array pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-id.js
index 7d90f03364..389477477e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Reset element (identifier) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-obj.js
index df323d0a8f..967658ac1a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-init-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-init-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Reset element (nested object pattern) does not support initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-ary.js
index 5b8668b12f..7c43ad3edd 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element (array binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-id.js
index c2aec63548..efe610f4f0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element (identifier) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-obj.js
index 3a095e909c..61678299d0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-not-final-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-not-final-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element (object binding pattern) may not be followed by any element (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-obj-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-obj-id.js
index ab1dc5f5a3..372007da45 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-obj-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-obj-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-obj-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-obj-prop-id.js
index aef73a7468..0a8d3eb772 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-obj-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-obj-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/ary-ptrn-rest-obj-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/ary-ptrn-rest-obj-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest element containing an object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-empty.js
index ba538f7776..3c0f9fa06d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-arrow.js
index 9ef53e8836..41e160fe85 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-class.js
index ba481e7c38..25ab0c5710 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-cover.js
index 36d310ab1b..fbba7807e5 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-fn.js
index 8f12ee8edf..c16cb1c166 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-gen.js
index f3a9bd8545..83ce4bb018 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-skipped.js
index 2767600537..1294967c10 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-trailing-comma.js
index 8a8a604609..0b92b3d44e 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary-init.js
index d43318b9f9..43bd7e1996 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary-trailing-comma.js
index a32d543f92..70f5f4afd8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary.js
index b741c3e432..e941fa576d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-init-skipped.js
index fd7832b9a6..fdf32b910d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-init.js
index 608374835c..076d562180 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-trailing-comma.js
index 90e557ab3d..3eb7fad196 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id.js
index 90fc74e89e..94550d916f 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,10 +37,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-obj-init.js
index 3330515154..1f58176f18 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -38,10 +38,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-obj.js
index b4b5d99369..3e8ced4dce 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-getter.js
index 5eeb41d48a..c0a8ee6b43 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-nested-obj.js
index cd9062e905..4c31804ef7 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js
index b81c71e52a..02f50138f3 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-own-property.js
index db8d2a4b4d..f80efb1d2c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js
index 0f5545826c..2126cab5df 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-val-obj.js
index 52dcba15fe..3de3cfe6ca 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var-async.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var-async.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-init-null.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-init-null.js
index fc7ba6fd7b..5c794a7604 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-init-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-init-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-init-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,6 +49,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-init-undefined.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-init-undefined.js
index 6dbb142f45..a4bd48d925 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-init-undefined.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-init-undefined.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-init-undefined.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-init-undefined.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -49,6 +49,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-empty.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-empty.js
index 734deb8799..1e1bcc42b3 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-empty.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-empty.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-empty.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-empty.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: No property access occurs for an "empty" object binding pattern (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-get-value-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-get-value-err.js
index 78a5187a4e..a3239d9828 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     4. Let v be GetV(value, propertyName).
@@ -56,6 +56,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-arrow.js
index 723823a93f..28c7558763 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-arrow.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-arrow.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-arrow.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-arrow.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding assigns `name` to arrow functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-class.js
index 31161d0336..cfd531f915 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-class.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-class.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" classes (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-cover.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-cover.js
index 5b0895b4ac..fd5f5edb65 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-cover.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-cover.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-cover.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-cover.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding assigns `name` to "anonymous" functions "through" cover grammar (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-fn.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-fn.js
index 05e666a397..f7e37d0dd4 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-fn.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-fn.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-fn.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-fn.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-gen.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-gen.js
index e6e5e31a02..429f03b34b 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-gen.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-fn-name-gen.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-fn-name-gen.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-fn-name-gen.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: SingleNameBinding assigns name to "anonymous" generator functions (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-skipped.js
index 03c23e5527..fde6600428 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-throws.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-throws.js
index be7c673a1f..e1af8aa4ac 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
     6. If Initializer is present and v is undefined, then
@@ -56,6 +56,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-unresolvable.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-unresolvable.js
index 5d3f986cff..bf120e726c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    6. If Initializer is present and v is undefined, then
+    5. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-trailing-comma.js
index 855262f333..fe2b5efac8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-list-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-list-err.js
index c47cc288c0..719e42e66c 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-list-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-list-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-list-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-list-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -55,8 +55,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
-
-assert.sameValue(initCount, 0);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-init.js
index 423217c732..c94f124afc 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Object binding pattern with "nested" array binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -35,10 +35,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-trailing-comma.js
index 1e99e48a45..8ba6bff36d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-value-null.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-value-null.js
index a212dc8673..2abe49b562 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-value-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary.js
index df3745be7f..6ea48d05e6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-ary.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-ary.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-ary.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Object binding pattern with "nested" array binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-eval-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-eval-err.js
index 58a568c33d..9ef497d8f2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-eval-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-eval-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-eval-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-eval-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Evaluation of property name returns an abrupt completion (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -53,6 +53,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-get-value-err.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-get-value-err.js
index 03eb78ef38..6a0f1ebb6d 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-get-value-err.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-get-value-err.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-get-value-err.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-get-value-err.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,7 +37,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     1. Let v be GetV(value, propertyName).
     2. ReturnIfAbrupt(v).
@@ -56,8 +56,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
-
-assert.sameValue(initEvalCount, 0);
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-skipped.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-skipped.js
index 4daf8adebd..66047ac4d0 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-skipped.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-skipped.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-skipped.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer is not evaluated when value is not `undefined` (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,7 +34,7 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
     3. If Initializer is present and v is undefined, then
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-throws.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-throws.js
index cbdafa9390..d44e5f627a 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-throws.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-throws.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-throws.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-throws.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Error thrown when evaluating the initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,13 +37,12 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 ---*/
 function thrower() {
   throw new Test262Error();
@@ -56,6 +55,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, Test262Error);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-unresolvable.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-unresolvable.js
index 5d2f42a843..20494578b8 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-unresolvable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-unresolvable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init-unresolvable.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init-unresolvable.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Destructuring initializer is an unresolvable reference (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -37,15 +37,14 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    BindingElement : BindingPattern Initializeropt
+    BindingElement : BindingPattern Initializer_opt
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
 
-    6.2.3.1 GetValue (V)
+    6.2.4.1 GetValue ( V )
 
     1. ReturnIfAbrupt(V).
     2. If Type(V) is not Reference, return V.
@@ -60,6 +59,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, ReferenceError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init.js
index 3d3d9f9578..f42e023edb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Binding as specified via property name, identifier, and initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,10 +34,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-trailing-comma.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-trailing-comma.js
index 79d99003ba..9eb555b454 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-trailing-comma.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-trailing-comma.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id-trailing-comma.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Trailing comma is allowed following BindingPropertyList (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id.js
index 85aa8ce866..b8708bcfbb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-id.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-id.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Binding as specified via property name and identifier (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -34,10 +34,10 @@ info: |
 
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
-    SingleNameBinding : BindingIdentifier Initializeropt
+    SingleNameBinding : BindingIdentifier Initializer_opt
 
     [...]
-    8. Return InitializeReferencedBinding(lhs, v).
+    7. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
 var iterCount = 0;
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-init.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-init.js
index ee23df9cce..11b75f9130 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-init.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-init.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-init.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-init.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Object binding pattern with "nested" object binding pattern using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -35,10 +35,9 @@ info: |
     13.3.3.7 Runtime Semantics: KeyedBindingInitialization
 
     [...]
-    3. If Initializer is present and v is undefined, then
+    4. If Initializer is present and v is undefined, then
        a. Let defaultValue be the result of evaluating Initializer.
-       b. Let v be GetValue(defaultValue).
-       c. ReturnIfAbrupt(v).
+       b. Set v to ? GetValue(defaultValue).
     4. Return the result of performing BindingInitialization for BindingPattern
        passing v and environment as arguments.
 ---*/
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-value-null.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-value-null.js
index b273cd5454..9363b678f6 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-value-null.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-value-null.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-null.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-null.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-value-undef.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-value-undef.js
index 60ccd93a75..6dadc851e9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-value-undef.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj-value-undef.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj-value-undef.case
-// - src/dstr-binding/error/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj-value-undef.case
+// - src/dstr-binding-for-await/error/for-await-of-async-gen-var.template
 /*---
 description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
@@ -51,6 +51,11 @@ async function * gen() {
 }
 
 gen().next()
-  .then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
+  .then(_ => {
+    throw new Test262Error("Expected async function to reject, but resolved.");
+  }, ({ constructor }) => {
+    assert.sameValue(constructor, TypeError);
+    
+  })
   .then($DONE, $DONE);
 
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj.js
index 53cdc27ebd..868c303f76 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-prop-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-prop-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Object binding pattern with "nested" object binding pattern not using initializer (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-getter.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-getter.js
index 635c978a2c..2f44b1d8eb 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-getter.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-getter.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-getter.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-nested-obj.js
index ae9548a17d..1936e3ffe9 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-nested-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-nested-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-nested-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-nested-rest.js
index 975c568581..a0a0fd71ef 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-nested-rest.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-nested-rest.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-nested-rest.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-own-property.js
index f592fcec94..204323c1ab 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-own-property.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-obj-own-property.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-obj-own-property.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest object contains just soruce object's own properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-skip-non-enumerable.js
index 1fa9d7a50e..86590f05a2 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-skip-non-enumerable.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-skip-non-enumerable.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-skip-non-enumerable.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
diff --git a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-val-obj.js b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-val-obj.js
index 49b4c8beee..bc73068432 100644
--- a/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-val-obj.js
@@ -1,6 +1,6 @@
 // This file was procedurally generated from the following sources:
-// - src/dstr-binding/obj-ptrn-rest-val-obj.case
-// - src/dstr-binding/default/for-await-of-async-gen-var.template
+// - src/dstr-binding-for-await/obj-ptrn-rest-val-obj.case
+// - src/dstr-binding-for-await/default/for-await-of-async-gen-var.template
 /*---
 description: Rest object contains just unextracted data (for-await-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-- 
GitLab