private static void writeClassHeader(DataOutputStream dos, int constantPoolCount, byte[] constantPool) throws IOException {
    dos.writeInt(0xCAFEBABE);
    dos.writeInt(Opcodes.V1_8);
    dos.writeShort(constantPoolCount + 1);
    dos.write(constantPool);
    byte[] utfStr = "BootstrapMethods".getBytes(StandardCharsets.UTF_8);
    dos.writeByte(1);  // name string for the fake "BootstrapMethods" attribute
    dos.writeShort(utfStr.length);
    dos.write(utfStr);
    dos.writeShort(0);  // access_flags
    dos.writeShort(0);  // this_class
    dos.writeShort(0);  // super_class
    dos.writeShort(0);  // interfaces_count
    dos.writeShort(0);  // fields_count
    dos.writeShort(0);  // methods_count
    dos.writeShort(1);  // attributes_count
    dos.writeShort(constantPoolCount);  // fake "BootstrapMethods" attribute
    dos.writeInt(0);
  }
private static void writeClassHeader(DataOutputStream dos, int constantPoolCount, byte[] constantPool)