public static Scriptable ToIterator(Context cx, Scriptable scope, Scriptable obj, bool keyOnly)
{
if (ScriptableObject.HasProperty(obj, NativeIterator.ITERATOR_PROPERTY_NAME))
{
object v = ScriptableObject.GetProperty(obj, NativeIterator.ITERATOR_PROPERTY_NAME);
if (!(v is Callable))
{
throw TypeError0("msg.invalid.iterator");
}
Callable f = (Callable)v;
object[] args = new object[] { keyOnly ? true : false };
v = f.Call(cx, scope, obj, args);
if (!(v is Scriptable))
{
throw TypeError0("msg.iterator.primitive");
}
return (Scriptable)v;
}
return null;
}