         ]
         Proxy: [
           o 'defineClass0(L!/!/ClassLoader;L!/!/String;[BII)L!/!/Class;', (rs,cl,name,bytes,offset,len) ->
-              raw_bytes = ((256+b)%256 for b in bytes.array[offset...offset+len])  # convert to unsigned bytes
-              rs.define_class util.int_classname(name.jvm2js_str()), raw_bytes, cl
+              native_define_class rs, name, bytes, offset, len, cl
         ]
       Runtime: [
         o 'availableProcessors()I', () -> 1

        o 'putOrderedObject(Ljava/lang/Object;JLjava/lang/Object;)V', (rs,_this,obj,offset,new_obj) ->
            obj.set_field_from_offset rs, offset, new_obj
        o 'defineClass(Ljava/lang/String;[BIILjava/lang/ClassLoader;Ljava/security/ProtectionDomain;)Ljava/lang/Class;', (rs, _this, name, bytes, offset, len, loader, pd) ->
            raw_bytes = ((256+b)%256 for b in bytes.array[offset...offset+len])
            rs.define_class util.int_classname(name.jvm2js_str()), raw_bytes, loader
      ]
    reflect:
      ConstantPool: [

        o 'getCaller(I)L!/!/Class;', (rs, i) ->
            type = rs.meta_stack().get_caller(i).method.class_type
            rs.jclass_obj(type, true)
        o 'defineClass1(L!/!/String;[BIIL!/security/ProtectionDomain;L!/!/String;Z)L!/!/Class;', (rs,_this,name,bytes,offset,len,pd,source,unused) ->
            native_define_class rs, name, bytes, offset, len, _this
        o 'defineClass1(L!/!/String;[BIIL!/security/ProtectionDomain;L!/!/String;)L!/!/Class;', (rs,_this,name,bytes,offset,len,pd,source) ->
            native_define_class rs, name, bytes, offset, len, _this
        o 'resolveClass0(L!/!/Class;)V', (rs, _this, cls) ->
            rs.load_class cls.$type, true
      ],
