       Unsafe: [
         o 'getUnsafe()L!/!/!;', (rs) -> # avoid reflection
             rs.static_get({'class':'sun/misc/Unsafe','sig':{'name':'theUnsafe'}})
+      ]
+    util:
+      LocaleServiceProviderPool: [
+        o 'getPool(Ljava/lang/Class;)Lsun/util/LocaleServiceProviderPool;', (rs) -> 
+            # make a mock
+            rs.push rs.init_object 'sun/util/LocaleServiceProviderPool'
+        o 'hasProviders()Z', (rs) -> rs.push 0  # false, we can't provide anything
       ]
   
 doPrivileged = (rs) ->

              rs.push (g_ref = rs.init_object 'java/lang/ThreadGroup')
              # have to run the private ThreadGroup constructor
              rs.method_lookup({class: 'java/lang/ThreadGroup', sig: {name:'<init>',type:'()V'}}).run(rs)
              rs.main_thread = rs.set_obj 'java/lang/Thread', { priority: 1, group: g_ref }
              rs.field_lookup({class: 'java/lang/Thread', sig: {name:'threadSeqNumber'}}).static_value = 0
            rs.push rs.main_thread
        o 'setPriority0(I)V', (rs) -> # NOP

        debug "#{padding}stack: [#{pa cf.stack}], local: [#{pa cf.locals}]"
        annotation =
          util.lookup_handler(opcode_annotators, op, pc, rs.class_lookup(@class_name).constant_pool) or ""
        debug "#{padding}#{@class_name}::#{@name}:#{pc} => #{op.name}" + annotation
        op.execute rs
        rs.inc_pc(1 + op.byte_count)  # move to the next opcode
      catch e
