               dest.array[j++] = src.array[i]
         o 'currentTimeMillis()J', (rs) -> gLong.fromNumber((new Date).getTime())
         o 'identityHashCode(L!/!/Object;)I', (x) -> x.ref
-        o 'initProperties(L!/util/Properties;)L!/util/Properties;', (rs, props) ->
-            m = rs.method_lookup
-              class: 'java/util/Properties'
-              sig: 'setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;'
-            for k,v of system_properties
-              rs.push props, rs.init_string(k,true), rs.init_string(v,true)
-              m.run(rs)
-              rs.pop()  # we don't care about the return value
-            props
+        o 'initProperties(L!/util/Properties;)L!/util/Properties;', (rs, props) -> # NOP, we trap the getProperty call
         o 'nanoTime()J', (rs) ->
             # we don't actually have nanosecond precision
             gLong.fromNumber((new Date).getTime()).multiply(gLong.fromNumber(1000000))

      System: [
        o 'loadLibrary(L!/!/String;)V', (rs) -> # NOP, because we don't support loading external libraries
        o 'adjustPropertiesForBackwardCompatibility(L!/util/Properties;)V', (rs) -> # NOP (apple-java specific)
      ]
      Terminator: [
        o 'setup()V', (rs) -> # NOP, because we don't support threads

  rs.push action unless m.access_flags.static
  m.run(rs,m.access_flags.virtual)
  rs.pop()

get_field_from_offset = (rs, cls, offset) ->
  classname = cls.this_class.toClassString()
