public void compile(ClassFile cf) {
    if (m==null) {
      // load the local variable with a given number

      //  int[][] load={
      //    //wide  shrt  0    1    2    3
      //    {0x15c4,0x15,0x1a,0x1b,0x1c,0x1d}, // Z
      //    {0x15c4,0x15,0x1a,0x1b,0x1c,0x1d}, // B
      //    {0x15c4,0x15,0x1a,0x1b,0x1c,0x1d}, // C
      //    {0x15c4,0x15,0x1a,0x1b,0x1c,0x1d}, // S
      //    {0x15c4,0x15,0x1a,0x1b,0x1c,0x1d}, // I
      //    {0x16c4,0x16,0x1e,0x1f,0x20,0x21}, // J
      //    {0x17c4,0x17,0x22,0x23,0x24,0x25}, // F
      //    {0x18c4,0x18,0x26,0x27,0x28,0x29}, // D
      //    {0x19c4,0x19,0x2a,0x2b,0x2c,0x2d}  // L
      //  };

      int lvt=resID-4;
      if (lvt<0) lvt=0;

      int lvarn_translated=cf.paramsVars[nplv];
      
      if (lvarn_translated<4) 
        cf.code(0x1a+lvt*4+lvarn_translated);
      else if (lvarn_translated<=255)
        cf.code(0x15+lvt+(lvarn_translated<<8));
      else {
        cf.code(((0x15+lvt)<<8)+0xc4);
        cf.writeShort(lvarn_translated);
      };
    } else {
      cf.code(0xFB); // labels block;

      for(int i=0;i<chi.length;i++) {
        chi[i].compile(cf);
        cf.code(0xFA); // ensure value in stack 
      };
      
      cf.code(0xF8); // labels unblock;

      for(int i=0;i<chi.length;i++)
        cf.noteStk(chi[i].resID,-1);        
      
      cf.codeM(m); // call the method / get field
    };
    cf.noteStk(-1,resID);
  };