public final void codeM(Member m) {
    int modifiers=m.getModifiers();
    if (Library.isField(m)) {
      if ((modifiers & 0x0008)>0)
        code(0xb2); //   |   getstatic
      else
        code(0xb4); //   |   getfield
      writeShort(getIndex(m,12));
    } else {
      // method or constructor
      boolean inInterface=false;
      int cfID=10;
      Class dClass;
      if (m instanceof Constructor) {
        code(0xb7);                        //         |  invokespecial
        cfID++;
      } else if ((modifiers & 0x0008)>0)   // static ?
        code(0xb8);                        //         |  invokestatic
      else if (inInterface=(((dClass=m.getDeclaringClass())!=null) 
                            && dClass.isInterface()))
        code(0xb9);                        //         |  invokeinterface
      else
        code(0xb6);                        //         |  invokevirtual
 
      writeShort(getIndex(m,cfID));             //         |  <CP index>
      
      if (inInterface) {    // declared in interface ?
        // based on the assumption that interfaces may not have constructors
        writeShort((1+((Method)m).getParameterTypes().length)<<8); //|  <nargs> 0
      };
    };
  };