+ JSObjectRef ArrayInstance(JSObjectMakeConstructor(context, ArrayInstance_, NULL));
+ JSObjectRef ArrayInstance_prototype(CYCastJSObject(context, CYGetProperty(context, ArrayInstance, prototype_s)));
+ CYSetProperty(context, cy, CYJSString("ArrayInstance_prototype"), ArrayInstance_prototype);
+ JSObjectRef Array_prototype(CYGetCachedObject(context, CYJSString("Array_prototype")));
+ CYSetPrototype(context, ArrayInstance_prototype, Array_prototype);
+
+ JSObjectRef BooleanInstance(JSObjectMakeConstructor(context, BooleanInstance_, NULL));
+ JSObjectRef BooleanInstance_prototype(CYCastJSObject(context, CYGetProperty(context, BooleanInstance, prototype_s)));
+ CYSetProperty(context, cy, CYJSString("BooleanInstance_prototype"), BooleanInstance_prototype);
+ JSObjectRef Boolean_prototype(CYGetCachedObject(context, CYJSString("Boolean_prototype")));
+ CYSetPrototype(context, BooleanInstance_prototype, Boolean_prototype);
+
+ JSObjectRef ClassInstance(JSObjectMakeConstructor(context, ClassInstance_, NULL));
+ JSObjectRef ClassInstance_prototype(CYCastJSObject(context, CYGetProperty(context, ClassInstance, prototype_s)));
+ CYSetProperty(context, cy, CYJSString("ClassInstance_prototype"), ClassInstance_prototype);
+ // XXX: this doesn't fit the pattern of the other ones; maybe it sort of should?
+ CYSetPrototype(context, ClassInstance_prototype, Instance_prototype);
+
+ JSObjectRef FunctionInstance(JSObjectMakeConstructor(context, FunctionInstance_, NULL));
+ JSObjectRef FunctionInstance_prototype(CYCastJSObject(context, CYGetProperty(context, FunctionInstance, prototype_s)));
+ CYSetProperty(context, cy, CYJSString("FunctionInstance_prototype"), FunctionInstance_prototype);
+ JSObjectRef Function_prototype(CYGetCachedObject(context, CYJSString("Function_prototype")));
+ CYSetPrototype(context, FunctionInstance_prototype, Function_prototype);
+
+ JSObjectRef NumberInstance(JSObjectMakeConstructor(context, NumberInstance_, NULL));
+ JSObjectRef NumberInstance_prototype(CYCastJSObject(context, CYGetProperty(context, NumberInstance, prototype_s)));
+ CYSetProperty(context, cy, CYJSString("NumberInstance_prototype"), NumberInstance_prototype);
+ JSObjectRef Number_prototype(CYGetCachedObject(context, CYJSString("Number_prototype")));
+ CYSetPrototype(context, NumberInstance_prototype, Number_prototype);
+
+ JSObjectRef ObjectInstance(JSObjectMakeConstructor(context, ObjectInstance_, NULL));
+ JSObjectRef ObjectInstance_prototype(CYCastJSObject(context, CYGetProperty(context, ObjectInstance, prototype_s)));
+ CYSetProperty(context, cy, CYJSString("ObjectInstance_prototype"), ObjectInstance_prototype);
+ JSObjectRef Object_prototype(CYGetCachedObject(context, CYJSString("Object_prototype")));
+ CYSetPrototype(context, ObjectInstance_prototype, Object_prototype);
+
+ JSObjectRef StringInstance(JSObjectMakeConstructor(context, StringInstance_, NULL));
+ JSObjectRef StringInstance_prototype(CYCastJSObject(context, CYGetProperty(context, StringInstance, prototype_s)));
+ CYSetProperty(context, cy, CYJSString("StringInstance_prototype"), StringInstance_prototype);
+ JSObjectRef String_prototype(CYGetCachedObject(context, CYJSString("String_prototype")));
+ CYSetPrototype(context, StringInstance_prototype, String_prototype);
+