public static IEnumerator JScriptGetEnumerator(Object coll){
if (coll is IEnumerator)
return (IEnumerator)coll;
if (coll is ScriptObject)
return new ScriptObjectPropertyEnumerator((ScriptObject)coll);
if (coll is Array){
Array arr = (Array)coll;
return new RangeEnumerator(arr.GetLowerBound(0), arr.GetUpperBound(0));
}
if (coll is IEnumerable){
IEnumerator result = ((IEnumerable)coll).GetEnumerator();
if (result != null) return result;
return new ScriptObjectPropertyEnumerator(new JSObject());
}
throw new JScriptException(JSError.NotCollection);
}