| buildClassCtor(Scriptable, Class, boolean, boolean) |   | 0% |   | 0% | 66 | 66 | 129 | 129 | 1 | 1 | 
| defineProperty(String, Object, Method, Method, int) |   | 0% |   | 0% | 24 | 24 | 57 | 57 | 1 | 1 | 
| checkPropertyChangeForSlot(Object, Slot, ScriptableObject.DescriptorInfo) |   | 0% |   | 0% | 18 | 18 | 30 | 30 | 1 | 1 | 
| getIds(CompoundOperationMap, boolean, boolean) |   | 0% |   | 0% | 16 | 16 | 26 | 26 | 1 | 1 | 
| getDefaultValue(Scriptable, Class) |   | 0% |   | 0% | 16 | 16 | 24 | 24 | 1 | 1 | 
| setSlotValue(ScriptableObject, ScriptableObject.DescriptorInfo, Object, Slot, CompoundOperationMap, Slot) |   | 0% |   | 0% | 13 | 13 | 23 | 23 | 1 | 1 | 
| putConstImpl(String, int, Scriptable, Object, int) |   | 0% |   | 0% | 12 | 12 | 24 | 24 | 1 | 1 | 
| setGetterOrSetter(Object, int, Callable, boolean) |   | 0% |   | 0% | 9 | 9 | 20 | 20 | 1 | 1 | 
| getPropertyName(String, String, Annotation) |   | 0% |   | 0% | 14 | 14 | 22 | 22 | 1 | 1 | 
| putImpl(Object, int, Scriptable, Object, boolean) |   | 0% |   | 0% | 15 | 15 | 18 | 18 | 1 | 1 | 
| defineProperty(String, Class, int) |   | 0% |   | 0% | 4 | 4 | 17 | 17 | 1 | 1 | 
| findSetterMethod(Method[], String, String) |   | 0% |   | 0% | 8 | 8 | 13 | 13 | 1 | 1 | 
| getPropertyIds(Scriptable) |   | 0% |   | 0% | 9 | 9 | 24 | 24 | 1 | 1 | 
| sealObject() |   | 0% |   | 0% | 7 | 7 | 19 | 19 | 1 | 1 | 
| defineOwnProperties(Context, ScriptableObject) |   | 0% |   | 0% | 3 | 3 | 11 | 11 | 1 | 1 | 
| defineOwnProperty(Context, Object, ScriptableObject, boolean) |   | 0% |   | 0% | 4 | 4 | 14 | 14 | 1 | 1 | 
| defineFunctionProperties(String[], Class, int) |   | 0% |   | 0% | 3 | 3 | 8 | 8 | 1 | 1 | 
| lambda$defineOrdinaryProperty$0(boolean, ScriptableObject, Object, ScriptableObject.DescriptorInfo, ScriptableObject.PropDescValueSetter, Object, Object, int, Slot, CompoundOperationMap, SlotMapOwner) |   | 0% |   | 0% | 3 | 3 | 13 | 13 | 1 | 1 | 
| put(int, Scriptable, Object) |   | 0% |   | 0% | 5 | 5 | 11 | 11 | 1 | 1 | 
| get(Object) |   | 0% |   | 0% | 7 | 7 | 12 | 12 | 1 | 1 | 
| sameValue(Object, Object) |   | 0% |   | 0% | 9 | 9 | 12 | 12 | 1 | 1 | 
| ensureType(Object, Class, String) |   | 0% |   | 0% | 3 | 3 | 8 | 8 | 1 | 1 | 
| checkPropertyDefinition(ScriptableObject) |   | 0% |   | 0% | 9 | 9 | 9 | 9 | 1 | 1 | 
| applyDescriptorToAttributeBitset(int, Object, Object, Object) |   | 0% |   | 0% | 7 | 7 | 13 | 13 | 1 | 1 | 
| hasInstance(Scriptable) |   | 0% |   | 0% | 3 | 3 | 9 | 9 | 1 | 1 | 
| setCommonDescriptorProperties(int, boolean) |   | 0% |   | 0% | 5 | 5 | 5 | 5 | 1 | 1 | 
| redefineProperty(Scriptable, String, boolean) |   | 0% |   | 0% | 5 | 5 | 7 | 7 | 1 | 1 | 
| getGetterOrSetter(String, int, Scriptable, boolean) |   | 0% |   | 0% | 6 | 6 | 7 | 7 | 1 | 1 | 
| getClassPrototype(Scriptable, String) |   | 0% |   | 0% | 4 | 4 | 12 | 12 | 1 | 1 | 
| writeObject(ObjectOutputStream) |   | 0% |   | 0% | 3 | 3 | 10 | 10 | 1 | 1 | 
| callMethod(Context, Scriptable, String, Object[]) |   | 0% |   | 0% | 3 | 3 | 8 | 8 | 1 | 1 | 
| putConst(String, Scriptable, Object) |   | 0% |   | 0% | 4 | 4 | 6 | 6 | 1 | 1 | 
| addLazilyInitializedValue(Symbol, int, LazilyLoadedCtor, int) |   | 0% |   | 0% | 3 | 3 | 6 | 6 | 1 | 1 | 
| get(int, Scriptable) |   | 0% |   | 0% | 4 | 4 | 8 | 8 | 1 | 1 | 
| addLazilyInitializedValue(String, int, LazilyLoadedCtor, int) |   | 0% |   | 0% | 3 | 3 | 6 | 6 | 1 | 1 | 
| querySlot(Context, Object) |   | 0% |   | 0% | 3 | 3 | 6 | 6 | 1 | 1 | 
| replaceExistingLambdaSlot(Context, Object, Slot, LambdaAccessorSlot) |   | 0% |   | 0% | 2 | 2 | 7 | 7 | 1 | 1 | 
| getAttributeSlot(String, int) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| readObject(ObjectInputStream) |   | 0% |   | 0% | 2 | 2 | 7 | 7 | 1 | 1 | 
| checkSlotRemoval(Object, int, Slot, CompoundOperationMap, SlotMapOwner) |   | 0% |   | 0% | 4 | 4 | 6 | 6 | 1 | 1 | 
| findAnnotatedMember(AccessibleObject[], Class) |   | 0% |   | 0% | 3 | 3 | 4 | 4 | 1 | 1 | 
| ensureScriptableObject(Object) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| getTopScopeValue(Scriptable, Object) |   | 0% |   | 0% | 4 | 4 | 9 | 9 | 1 | 1 | 
| has(int, Scriptable) |   | 0% |   | 0% | 4 | 4 | 3 | 3 | 1 | 1 | 
| defineConst(String, Scriptable) |   | 0% |   | 0% | 4 | 4 | 4 | 4 | 1 | 1 | 
| deleteProperty(Scriptable, Symbol) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| associateValue(Object, Object) |   | 0% |   | 0% | 3 | 3 | 6 | 6 | 1 | 1 | 
| ScriptableObject(Scriptable, Scriptable) |   | 0% |   | 0% | 2 | 2 | 7 | 7 | 1 | 1 | 
| defineClass(Scriptable, Class, boolean, boolean) |   | 0% |   | 0% | 2 | 2 | 5 | 5 | 1 | 1 | 
| defineProperty(Context, String, ScriptableObject.LambdaGetterFunction, ScriptableObject.LambdaSetterFunction, int) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| defineProperty(Context, Symbol, ScriptableObject.LambdaGetterFunction, ScriptableObject.LambdaSetterFunction, int) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| replaceLambdaAccessorSlot(Context, Object, LambdaAccessorSlot) |   | 0% |  | n/a | 1 | 1 | 4 | 4 | 1 | 1 | 
| checkNotSealed(Object, int) |   | 0% |   | 0% | 3 | 3 | 3 | 3 | 1 | 1 | 
| put(Symbol, Scriptable, Object) |   | 0% |   | 0% | 3 | 3 | 4 | 4 | 1 | 1 | 
| isConst(String) |   | 0% |   | 0% | 3 | 3 | 4 | 4 | 1 | 1 | 
| deleteProperty(Scriptable, String) |   | 0% |   | 0% | 3 | 3 | 4 | 4 | 1 | 1 | 
| deleteProperty(Scriptable, int) |   | 0% |   | 0% | 3 | 3 | 4 | 4 | 1 | 1 | 
| buildDataDescriptor(Scriptable, Object, int) |   | 0% |  | n/a | 1 | 1 | 5 | 5 | 1 | 1 | 
| put(String, Scriptable, Object) |   | 0% |   | 0% | 3 | 3 | 4 | 4 | 1 | 1 | 
| defineProperty(String, Supplier, Consumer, int) |   | 0% |  | n/a | 1 | 1 | 5 | 5 | 1 | 1 | 
| createLambdaAccessorSlot(Object, int, ScriptableObject.LambdaGetterFunction, ScriptableObject.LambdaSetterFunction, int) |   | 0% |  | n/a | 1 | 1 | 5 | 5 | 1 | 1 | 
| getAttributeSlot(Symbol) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| ensureAccessorSlot(Object, int, Slot, SlotMap, SlotMapOwner) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| ensureLazySlot(Object, int, Slot, SlotMap, SlotMapOwner) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| ensureLambdaSlot(Object, int, Slot, SlotMap, SlotMapOwner) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| defineProperty(Scriptable, String, Object, int) |   | 0% |   | 0% | 2 | 2 | 6 | 6 | 1 | 1 | 
| defineProperty(Scriptable, String, int, SerializableCallable, int, int) |   | 0% |  | n/a | 1 | 1 | 4 | 4 | 1 | 1 | 
| defineBuiltinProperty(Scriptable, String, int, SerializableCallable, int, int) |   | 0% |  | n/a | 1 | 1 | 4 | 4 | 1 | 1 | 
| putConstProperty(Scriptable, String, Object) |   | 0% |   | 0% | 3 | 3 | 4 | 4 | 1 | 1 | 
| setExternalArrayData(ExternalArrayData) |   | 0% |   | 0% | 2 | 2 | 5 | 5 | 1 | 1 | 
| defineConstProperty(Scriptable, String) |   | 0% |   | 0% | 2 | 2 | 5 | 5 | 1 | 1 | 
| getPropWalkingPrototypeChain(Scriptable, Scriptable, Symbol) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| setAttributes(String, int) |   | 0% |  | n/a | 1 | 1 | 4 | 4 | 1 | 1 | 
| setAttributes(int, int) |   | 0% |  | n/a | 1 | 1 | 4 | 4 | 1 | 1 | 
| setAttributes(Symbol, int) |   | 0% |  | n/a | 1 | 1 | 4 | 4 | 1 | 1 | 
| defineOrdinaryProperty(ScriptableObject.PropDescValueSetter, ScriptableObject, CompoundOperationMap, Object, ScriptableObject.DescriptorInfo, boolean, Object, int) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| ensureScriptable(Object) |   | 0% |   | 0% | 2 | 2 | 3 | 3 | 1 | 1 | 
| ensureSymbolScriptable(Object) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| ensureScriptableObjectButNotSymbol(Object) |   | 0% |   | 0% | 2 | 2 | 3 | 3 | 1 | 1 | 
| getPropWalkingPrototypeChain(Scriptable, String, Scriptable) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| getPropWalkingPrototypeChain(Scriptable, int, Scriptable) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| getBase(Scriptable, Symbol) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| defineBuiltInProperty(ScriptableObject, String, int, BuiltInSlot.Getter, BuiltInSlot.Setter, BuiltInSlot.AttributeSetter, BuiltInSlot.PropDescriptionSetter) |   | 0% |  | n/a | 1 | 1 | 3 | 3 | 1 | 1 | 
| lambda$replaceLambdaAccessorSlot$1(Context, Object, LambdaAccessorSlot, ScriptableObject, Object, int, Slot, CompoundOperationMap, SlotMapOwner) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| getTypedProperty(Scriptable, int, Class) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| getTypedProperty(Scriptable, String, Class) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| putProperty(Scriptable, Symbol, Object) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| putSuperProperty(Scriptable, Scriptable, Symbol, Object) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| getBase(Scriptable, String) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| getBase(Scriptable, int) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| defineBuiltInProperty(ScriptableObject, Object, int, BuiltInSlot.Getter, BuiltInSlot.Setter, BuiltInSlot.AttributeSetter) |   | 0% |  | n/a | 1 | 1 | 3 | 3 | 1 | 1 | 
| get(String, Scriptable) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| get(Symbol, Scriptable) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| isGetterOrSetter(CompoundOperationMap, String, int, boolean) |   | 0% |   | 0% | 3 | 3 | 2 | 2 | 1 | 1 | 
| defineProperty(String, Object, int) |   | 0% |  | n/a | 1 | 1 | 4 | 4 | 1 | 1 | 
| defineProperty(Symbol, Object, int) |   | 0% |  | n/a | 1 | 1 | 4 | 4 | 1 | 1 | 
| putProperty(Scriptable, String, Object) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| putSuperProperty(Scriptable, Scriptable, String, Object) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| putProperty(Scriptable, int, Object) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| putSuperProperty(Scriptable, Scriptable, int, Object) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| getOwnPropertyDescriptor(Context, Object) |   | 0% |   | 0% | 2 | 2 | 3 | 3 | 1 | 1 | 
| defineBuiltInProperty(ScriptableObject, String, int, BuiltInSlot.Getter, BuiltInSlot.Setter) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| checkValidAttributes(int) |   | 0% |   | 0% | 2 | 2 | 4 | 4 | 1 | 1 | 
| delete(String) |   | 0% |  | n/a | 1 | 1 | 3 | 3 | 1 | 1 | 
| delete(int) |   | 0% |  | n/a | 1 | 1 | 3 | 3 | 1 | 1 | 
| delete(Symbol) |   | 0% |  | n/a | 1 | 1 | 3 | 3 | 1 | 1 | 
| isGetterOrSetter(String, int, boolean) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| defineBuiltInProperty(ScriptableObject, Object, int, BuiltInSlot.Getter) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| getIds() |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| getAllIds() |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| isDataDescriptor(ScriptableObject) |   | 0% |   | 0% | 3 | 3 | 1 | 1 | 1 | 1 | 
| isDataDescriptor(ScriptableObject.DescriptorInfo) |   | 0% |   | 0% | 3 | 3 | 1 | 1 | 1 | 1 | 
| isAccessorDescriptor(ScriptableObject) |   | 0% |   | 0% | 3 | 3 | 1 | 1 | 1 | 1 | 
| has(String, Scriptable) |   | 0% |   | 0% | 2 | 2 | 1 | 1 | 1 | 1 | 
| has(Symbol, Scriptable) |   | 0% |   | 0% | 2 | 2 | 1 | 1 | 1 | 1 | 
| getAssociatedValue(Object) |   | 0% |   | 0% | 2 | 2 | 3 | 3 | 1 | 1 | 
| ScriptableObject() |   | 0% |  | n/a | 1 | 1 | 4 | 4 | 1 | 1 | 
| getExternalArrayLength() |   | 0% |   | 0% | 2 | 2 | 1 | 1 | 1 | 1 | 
| defineOwnProperty(Context, Object, ScriptableObject) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| isTrue(Object) |   | 0% |   | 0% | 3 | 3 | 1 | 1 | 1 | 1 | 
| isGenericDescriptor(ScriptableObject) |   | 0% |   | 0% | 3 | 3 | 1 | 1 | 1 | 1 | 
| getTopLevelScope(Scriptable) |   | 0% |   | 0% | 2 | 2 | 5 | 5 | 1 | 1 | 
| defineProperty(Scriptable, String, int, SerializableCallable) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| defineBuiltinProperty(Scriptable, String, int, SerializableCallable) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| checkPropertyChangeForSlot(Object, Slot, ScriptableObject) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| hasProperty(Scriptable, String) |   | 0% |   | 0% | 2 | 2 | 1 | 1 | 1 | 1 | 
| hasProperty(Scriptable, int) |   | 0% |   | 0% | 2 | 2 | 1 | 1 | 1 | 1 | 
| hasProperty(Scriptable, Symbol) |   | 0% |   | 0% | 2 | 2 | 1 | 1 | 1 | 1 | 
| static {...} |    | 68% |  | 50% | 1 | 2 | 2 | 6 | 0 | 1 | 
| putOwnProperty(String, Scriptable, Object, boolean) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| putOwnProperty(int, Scriptable, Object, boolean) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| putOwnProperty(Symbol, Scriptable, Object, boolean) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| extendsScriptable(Class) |   | 0% |   | 0% | 2 | 2 | 2 | 2 | 1 | 1 | 
| defineProperty(Context, String, ScriptableObject.LambdaGetterFunction, int) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| getTypeOf() |   | 0% |   | 0% | 2 | 2 | 1 | 1 | 1 | 1 | 
| getGetterOrSetter(String, int, boolean) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| equivalentValues(Object) |   | 0% |   | 0% | 2 | 2 | 1 | 1 | 1 | 1 | 
| defineClass(Scriptable, Class) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| defineClass(Scriptable, Class, boolean) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| isFalse(Object) |   | 0% |   | 0% | 2 | 2 | 1 | 1 | 1 | 1 | 
| getAttributes(String) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getAttributes(int) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| callMethod(Scriptable, String, Object[]) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| setAttributes(String, Scriptable, int) |  | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| setAttributes(int, Scriptable, int) |  | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| getAttributes(Symbol) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getObjectPrototype(Scriptable) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getFunctionPrototype(Scriptable) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getGeneratorFunctionPrototype(Scriptable) |  | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| getArrayPrototype(Scriptable) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| preventExtensions() |  | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| checkNotSealed(ScriptableObject, Object, int) |  | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| getProperty(Scriptable, String) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getSuperProperty(Scriptable, Scriptable, String) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getProperty(Scriptable, Symbol) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getSuperProperty(Scriptable, Scriptable, Symbol) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getProperty(Scriptable, int) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getSuperProperty(Scriptable, Scriptable, int) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getAttributes(String, Scriptable) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getAttributes(int, Scriptable) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| setPrototype(Scriptable) |  | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| setParentScope(Scriptable) |  | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| getDefaultValue(Class) |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| size() |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| isEmpty() |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getExternalArrayData() |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getPrototype() |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getParentScope() |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| isExtensible() |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| isSealed() |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| avoidObjectDetection() |  | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 |