nativeInterface("IObject", iObjectIndexTemplateKey, iObjectElementTemplateKey); registerNativeType(JSTypeNative.I_OBJECT_FUNCTION_TYPE, iObjectFunctionType); registerNativeType(JSTypeNative.I_OBJECT_TYPE, iObjectFunctionType.getInstanceType()); FunctionType iterableFunctionType = nativeInterface("Iterable", iterableTemplate); registerNativeType(JSTypeNative.ITERABLE_FUNCTION_TYPE, iterableFunctionType); ObjectType iterableType = iterableFunctionType.getInstanceType(); registerNativeType(JSTypeNative.ITERABLE_TYPE, iterableType); FunctionType iteratorFunctionType = nativeInterface("Iterator", iteratorTemplate); registerNativeType(JSTypeNative.ITERATOR_FUNCTION_TYPE, iteratorFunctionType); ObjectType iteratorType = iteratorFunctionType.getInstanceType(); FunctionType generatorFunctionType = nativeInterface("Generator", generatorTemplate); nativeInterface("AsyncIterator", asyncIteratorTemplate); registerNativeType(JSTypeNative.ASYNC_ITERATOR_FUNCTION_TYPE, asyncIteratorFunctionType); registerNativeType( nativeInterface("AsyncIterable", asyncIterableTemplate); registerNativeType(JSTypeNative.ASYNC_ITERABLE_FUNCTION_TYPE, asyncIterableFunctionType); registerNativeType( nativeInterface("AsyncGenerator", asyncGeneratorTemplate); registerNativeType(JSTypeNative.ASYNC_GENERATOR_FUNCTION_TYPE, asyncGeneratorFunctionType); registerNativeType( JSTypeNative.ASYNC_GENERATOR_TYPE, asyncGeneratorFunctionType.getInstanceType()); FunctionType ithenableFunctionType = nativeInterface("IThenable", iThenableTemplateKey);