diff --git a/index.bs b/index.bs
index c0fff164..fad3af0c 100644
--- a/index.bs
+++ b/index.bs
@@ -7442,7 +7442,7 @@ values are represented by ECMAScript Object values (including [=function objects
to an IDL [=interface type=] value by running the following algorithm (where |I| is the [=interface=]):
1. If Type(|V|) is not Object, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
- 1. If |V| is a [=platform object=] that implements |I|, then return the IDL [=interface type=] value that represents a reference to that platform object.
+ 1. If |V| [=implements=] |I|, then return the IDL [=interface type=] value that represents a reference to that platform object.
1. If |V| is a [=user object=]
that is considered to implement |I| according to the rules in [[#es-user-objects]], then return the IDL [=interface type=] value that represents a reference to that
user object, with the [=incumbent settings object=] as the [=callback context=].
@@ -7939,9 +7939,9 @@ that correspond to the union’s [=member types=].
1. If |V| is [Constructor]
, has the same meaning as
using an empty argument list, [Constructor()]
. For each
[{{Constructor}}] extended attribute
-on the interface, there will be a way to construct an object that implements
+on the interface, there will be a way to construct an object that [=implements=]
the interface by passing the specified arguments.
The prose definition of a constructor must
@@ -8408,7 +8408,7 @@ for an interface is to be implemented.
An ECMAScript implementation supporting these interfaces would
have a \[[Construct]] property on the
Circle
interface object which would
- return a new object that implements the interface. It would take
+ return a new object that [=implements=] the interface. It would take
either zero or one argument. The
NodeList
interface object would not
have a \[[Construct]] property.
@@ -8852,7 +8852,7 @@ or more than one [=iterable declaration=],
across those interfaces.
Note: This is because all of the [=members=] of the interface
-get flattened down on to the object that implements the interface.
+get flattened down on to the object that [=implements=] the interface.
The [{{Global}}] extended attribute
can also be used to give a name to one or more global interfaces,
@@ -9226,7 +9226,7 @@ If the [{{LenientThis}}]
appears on a [=regular attribute=],
it indicates that invocations of the attribute’s getter or setter
with a [NamedConstructor=
.
For each [{{NamedConstructor}}] extended attribute on the interface,
there will be a way to construct an object that
-implements the interface by passing the specified arguments to the [=constructor=]
+[=implements=] the interface by passing the specified arguments to the [=constructor=]
that is the value of the aforementioned property.
The [=NamedConstructor identifier|identifier=] used for the named constructor must not
@@ -10266,7 +10266,7 @@ If the [{{Unscopable}}]
[=extended attribute=]
appears on a [=regular attribute=]
or [=regular operation=], it
-indicates that an object that implements an interface with the given
+indicates that an object that [=implements=] an interface with the given
interface member will not include its property name in any object
environment record with it as its base object. The result of this is
that bare identifiers matching the property name will not resolve to
@@ -10394,9 +10394,9 @@ Note: The HTML Standard defines how a security check is performed. [[!HTML]]
then remove from |S| all other entries.
- 1. Otherwise: if |V| is a [=platform object=], and
+ 1. Otherwise: if |V| [=is a platform object=], and
there is an entry in |S| that has one of the following types at position |i| of its type list,
- * an [=interface type=] that |V| implements
+ * an [=interface type=] that |V| [=implements=]
* {{object}}
* a [=nullable type|nullable=] version of any of the above types
* an [=annotated type=] whose [=annotated types/inner type=] is one of the above types
@@ -10682,7 +10682,7 @@ as described in sections [[#es-constants]] and [[#es-operations]].
If the [=interface=] is declared with a [{{Constructor}}] [=extended attribute=],
then the [=interface object=] can be called as a [=constructor=]
-to create an object that implements that interface.
+to create an object that [=implements=] that interface.
Calling that interface as a function will throw an exception.
[=Interface objects=] whose [=interfaces=] are not declared
@@ -10726,7 +10726,7 @@ the typeof
operator will return "function" when applied to an inter
and |object| as the
toString
".
* If the [=stringifier=] is [=unforgeable=] on the interface
or if the interface was declared with the [{{Global}}] [=extended attribute=],
- then the property exists on every object that implements the interface.
+ then the property exists on every object that [=implements=] the interface.
Otherwise, the property exists on the [=interface prototype object=].
* The property has attributes
{ \[[Writable]]: |B|, \[[Enumerable]]: method
".
- 1. If |O| is not an object that implements the [=interface=]
+ 1. If |O| does not [=implement=] the [=interface=]
on which the stringifier was declared, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |V| be an uninitialized variable.
1. Depending on where stringifier
was specified:
@@ -11599,7 +11598,7 @@ and whose value is a [=function object=].
The location of the property is determined as follows:
* If the interface was declared with the [{{Global}}] [=extended attribute=],
- then the property exists on the single object that implements the interface.
+ then the property exists on the single object that [=implements=] the interface.
* Otherwise, the property exists solely on the interface’s [=interface prototype object=].
If the interface defines an [=indexed property getter=],
@@ -11611,14 +11610,14 @@ then the [=function object=] is {{%ArrayProto_values%}}.
when invoked, must behave as follows:
1. Let |object| be the result of calling ToObject on the @@iterator
", and
* the type "method
".
1. Let |interface| be the [=interface=]
the [=iterable declaration=] is on.
- 1. If |object| is not a [=platform object=] that implements |interface|,
+ 1. If |object| does not [=implement=] |interface|,
then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |iterator| be a newly created [=default iterator object=]
for |interface| with |object| as its target and iterator kind "key+value
".
@@ -11632,13 +11631,12 @@ then the [=function object=] is {{%ArrayProto_values%}}.
when invoked, must behave as follows:
1. Let |object| be the result of calling ToObject on the @@iterator
", and
* the type "method
".
- 1. If |object| is not a [=platform object=]
- that implements the [=interface=]
+ 1. If |object| does not [=implement=] the [=interface=]
on which the [=maplike declaration=]
or [=setlike declaration=] is defined,
then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
@@ -11675,7 +11673,7 @@ and whose value is a [=function object=].
The location of the property is determined as follows:
* If the interface was declared with the [{{Global}}] [=extended attribute=],
- then the property exists on the single object that implements the interface.
+ then the property exists on the single object that [=implements=] the interface.
* Otherwise, the property exists solely on the interface’s [=interface prototype object=].
If the interface defines an [=indexed property getter=],
@@ -11719,7 +11717,7 @@ then the [=function object=] is {{%ArrayProto_forEach%}}.
the method, when invoked, must behave as follows:
1. Let |object| be the result of calling ToObject on the forEach
", and
@@ -11727,8 +11725,7 @@ then the [=function object=] is {{%ArrayProto_forEach%}}.
1. Let |interface| be the [=interface=]
on which the [=maplike declaration=]
or [=setlike declaration=] is declared.
- 1. If |object| is not a [=platform object=]
- that implements |interface|,
+ 1. If |object| does not [=implement=] |interface|,
then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |callbackFn| be the value of the first argument passed to the function, or keys
", and
* the type "method
".
1. Let |interface| be the [=interface=]
on which the [=iterable declaration=] is declared on.
- 1. If |object| is not a [=platform object=]
- that implements |interface|,
+ 1. If |object| does not [=implement=] |interface|,
then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |iterator| be a newly created [=default iterator object=]
for |interface| with |object| as its target and iterator kind "key
".
@@ -11839,7 +11835,7 @@ and whose value is a [=function object=].
The location of the property is determined as follows:
* If the interface was declared with the [{{Global}}] [=extended attribute=],
- then the property exists on the single object that implements the interface.
+ then the property exists on the single object that [=implements=] the interface.
* Otherwise, the property exists solely on the interface’s [=interface prototype object=].
If the interface has a [=value iterator=],
@@ -11852,15 +11848,14 @@ the value of the {{@@iterator}} property.
then the method, when invoked, must behave as follows:
1. Let |object| be the result of calling ToObject on the entries
", and
* the type "method
".
1. Let |interface| be the [=interface=]
on which the [=iterable declaration=] is declared on.
- 1. If |object| is not a [=platform object=]
- that implements |interface|,
+ 1. If |object| does not [=implement=] |interface|,
then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |iterator| be a newly created [=default iterator object=]
for |interface| with |object| as its target and iterator kind "value
".
@@ -11923,7 +11918,7 @@ must be {{%IteratorPrototype%}}.
1. Let |interface| be the [=interface=] for which the
[=iterator prototype object=] exists.
1. Let |object| be the result of calling ToObject on the next
", and
@@ -11968,7 +11963,7 @@ and the string " Iterator
".
method
".
- 1. If |O| is not an object that implements A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
+ 1. If |O| does not [=implement=] A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |map| be the {{ECMAScript/Map}} object that is the value of |O|’s \[[BackingMap]] [=internal slot=].
1. Let |function| be [=?=] GetMethod(|map|, |name|).
1. If |function| is size
", and
* the type "getter
".
- 1. If |O| is not an object that implements A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
+ 1. If |O| does not [=implement=] A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |map| be the {{ECMAScript/Map}} object that is the value of |O|’s \[[BackingMap]] [=internal slot=].
1. Return Get(|map|, "size
").
get
and has
, there
1. Let |O| be the get
" or "has
".
- 1. If |O| is a [=platform object=],
+ 1. If |O| [=is a platform object=],
then [=perform a security check=], passing:
* the platform object |O|,
* an identifier equal to |name|, and
* the type "method
".
- 1. If |O| is not an object that implements A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
+ 1. If |O| does not [=implement=] A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |map| be the {{ECMAScript/Map}} object that is the value of |O|’s \[[BackingMap]] [=internal slot=].
1. Let |keyType| be the key type specified in the [=maplike declaration=].
1. Let |function| be [=!=] Get(|map|, |name|).
@@ -12123,12 +12118,12 @@ must exist on |A|’s
The value of the property is a [=built-in function object=] that behaves as follows when invoked:
1. Let |O| be the delete
", and
* the type "method
".
- 1. If |O| is not an object that implements A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
+ 1. If |O| does not [=implement=] A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |map| be the {{ECMAScript/Map}} object that is the value of |O|’s \[[BackingMap]] [=internal slot=].
1. Let |keyType| be the key type specified in the [=maplike declaration=].
1. Let |function| be [=!=] Get(|map|, "delete
").
@@ -12157,12 +12152,12 @@ must exist on |A|’s [=interface prototype object=]:
The value of the property is a [=built-in function object=] that behaves as follows when invoked:
1. Let |O| be the set
", and
* the type "method
".
- 1. If |O| is not an object that implements A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
+ 1. If |O| does not [=implement=] A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |map| be the {{ECMAScript/Map}} object that is the value of |O|’s \[[BackingMap]] [=internal slot=].
1. Let |keyType| and |valueType| be the key and value types specified in the [=maplike declaration=].
1. Let |function| be [=!=] Get(|map|, "set
").
@@ -12183,7 +12178,7 @@ The value of the [=function object=]’s name
property
method
".
- 1. If |O| is not an object that implements A,
+ 1. If |O| does not [=implement=] A,
then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |set| be the {{ECMAScript/Set}} object that is
the value of |O|’s \[[BackingSet]] [=internal slot=].
@@ -12234,12 +12229,12 @@ with the following characteristics:
whose behavior when invoked is as follows:
1. Let |O| be the size
", and
* the type "getter
".
- 1. If |O| is not an object that implements A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
+ 1. If |O| does not [=implement=] A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |set| be the {{ECMAScript/Set}} object that is the value of |O|’s \[[BackingSet]] [=internal slot=].
1. Return the result of calling the \[[Get]] internal method of |set| passing "size
" and |set| as arguments.
has
", and
* the type "method
".
- 1. If |O| is not an object that implements A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
+ 1. If |O| does not [=implement=] A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |set| be the {{ECMAScript/Set}} object that is the value of |O|’s \[[BackingSet]] [=internal slot=].
1. Let |type| be the value type specified in the [=setlike declaration=].
1. Let |function| be [=!=] Get(|set|, "has
").
@@ -12323,12 +12318,12 @@ must exist on |A|’s [=interface prototype object=]:
1. Let |O| be the add
" or "delete
".
- 1. If |O| is a [=platform object=],
+ 1. If |O| [=is a platform object=],
then [=perform a security check=], passing:
* the platform object |O|,
* an identifier equal to |name|, and
* the type "method
".
- 1. If |O| is not an object that implements A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
+ 1. If |O| does not [=implement=] A, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
1. Let |set| be the {{ECMAScript/Set}} object that is the value of |O|’s \[[BackingSet]] [=internal slot=].
1. Let |type| be the value type specified in the [=setlike declaration=].
1. Let |function| be [=?=] Get(|set|, |name|).
@@ -12364,6 +12359,20 @@ The value of the [=function object=]’s name
property