     #  os.name,os.arch,os.version,file.separator,path.separator,line.separator,
     #  user.name,user.home,user.dir     
     rs.push p_ref
+    )
+  'java/lang/System::setIn0(Ljava/io/InputStream;)V': ((rs) -> 
+    rs.push rs.curr_frame().locals[0] # move oref to the stack
+    rs.static_put {'class':'java/lang/System','sig':{'name':'in'}}
     )
 }
 

trapped_methods = {
  'java/lang/System::setJavaLangAccess()V': (rs) -> #NOP
  'java/lang/System::loadLibrary(Ljava/lang/String;)V': (rs) -> console.log "warning: library loads are NYI"
}

native_methods = {
  'java/lang/System::arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V': ((rs) -> 
    args = rs.curr_frame().locals

      when 0 then break
      else
        throw "too many items on the stack after manual method #{sig}"
    cf = runtime_state.curr_frame()
    console.log "#{padding}stack: [#{cf.stack}], local: [#{cf.locals}] (method end)"

  run: (runtime_state,virtual=false) ->
    caller_stack = runtime_state.curr_frame().stack
