Update Java binding with cs_option
diff --git a/bindings/java/Test.java b/bindings/java/Test.java
index 18cf919..854450d 100644
--- a/bindings/java/Test.java
+++ b/bindings/java/Test.java
@@ -11,9 +11,18 @@
   public static class platform {
     public int arch;
     public int mode;
+    public int syntax;
     public byte[] code;
     public String comment;
 
+    public platform(int a, int m, int syt, byte[] c, String s) {
+      arch = a;
+      mode = m;
+      code = c;
+      comment = s;
+      syntax = syt;
+    }
+
     public platform(int a, int m, byte[] c, String s) {
       arch = a;
       mode = m;
@@ -37,12 +46,14 @@
       new platform(
           Capstone.CS_ARCH_X86,
           Capstone.CS_MODE_16,
+          Capstone.CS_OPT_SYNTAX_INTEL,
           new byte[] { (byte)0x8d, (byte)0x4c, (byte)0x32, (byte)0x08, (byte)0x01, (byte)0xd8, (byte)0x81, (byte)0xc6, (byte)0x34, (byte)0x12, 0x00, 0x00 },
           "X86 16bit (Intel syntax)"
           ),
       new platform(
           Capstone.CS_ARCH_X86,
-          Capstone.CS_MODE_32, // + Capstone.CS_MODE_SYNTAX_ATT,
+          Capstone.CS_MODE_32,
+          Capstone.CS_OPT_SYNTAX_ATT,
           new byte[] { (byte)0x8d, 0x4c, 0x32, 0x08, 0x01, (byte)0xd8, (byte)0x81, (byte)0xc6, 0x34, 0x12, 0x00, 0x00 },
           "X86 32bit (ATT syntax)"
           ),
@@ -69,7 +80,6 @@
           Capstone.CS_MODE_THUMB,
           new byte[] { 0x4f, (byte)0xf0, 0x00, 0x01, (byte)0xbd, (byte)0xe8, 0x00, (byte)0x88, (byte)0xd1, (byte)0xe8, 0x00, (byte)0xf0 },
           "THUMB-2"
-
           ),
       new platform(
           Capstone.CS_ARCH_ARM,
@@ -110,6 +120,8 @@
       System.out.println("Disasm:");
 
       Capstone cs = new Capstone(platforms[j].arch, platforms[j].mode);
+      if (platforms[j].syntax != 0)
+        cs.setSyntax(platforms[j].syntax);
 
       Capstone.cs_insn[] all_insn = cs.disasm(platforms[j].code, 0x1000);
 
diff --git a/bindings/java/TestX86.java b/bindings/java/TestX86.java
index 6035334..60c5061 100644
--- a/bindings/java/TestX86.java
+++ b/bindings/java/TestX86.java
@@ -117,7 +117,7 @@
 
     final Test.platform[] all_tests = {
       new Test.platform(Capstone.CS_ARCH_X86, Capstone.CS_MODE_16, hexString2Byte(X86_CODE16), "X86 16bit (Intel syntax)"),
-      new Test.platform(Capstone.CS_ARCH_X86, Capstone.CS_MODE_32 /*+ Capstone.CS_MODE_SYNTAX_ATT */, hexString2Byte(X86_CODE32), "X86 32 (AT&T syntax)"),
+      new Test.platform(Capstone.CS_ARCH_X86, Capstone.CS_MODE_32, Capstone.CS_OPT_SYNTAX_ATT, hexString2Byte(X86_CODE32), "X86 32 (AT&T syntax)"),
       new Test.platform(Capstone.CS_ARCH_X86, Capstone.CS_MODE_32, hexString2Byte(X86_CODE32), "X86 32 (Intel syntax)"),
       new Test.platform(Capstone.CS_ARCH_X86, Capstone.CS_MODE_64, hexString2Byte(X86_CODE64), "X86 64 (Intel syntax)"),
     };
@@ -130,6 +130,9 @@
       System.out.println("Disasm:");
 
       cs = new Capstone(test.arch, test.mode);
+      if (test.syntax != 0) {
+        cs.setSyntax(test.syntax);
+      }
       Capstone.cs_insn[] all_ins = cs.disasm(test.code, 0x1000);
 
       for (int j = 0; j < all_ins.length; j++) {
diff --git a/bindings/java/capstone/Capstone.java b/bindings/java/capstone/Capstone.java
index a0ffae4..334c1e0 100644
--- a/bindings/java/capstone/Capstone.java
+++ b/bindings/java/capstone/Capstone.java
@@ -22,6 +22,7 @@
 
   public int arch;
   public int mode;
+  private int syntax;
 
   protected static abstract class OpInfo {}
   protected static abstract class UnionOpInfo extends Structure {}
@@ -37,16 +38,18 @@
     public int id;
     public long address;
     public short size;
-    public byte[] mnemonic = new byte[32];
-    public byte[] operands = new byte[96];
-    public int[] regs_read = new int[32];
+    public byte[] bytes;
+    public byte[] mnemonic;
+    public byte[] operands;
+    public int[] regs_read;
     public int regs_read_count;
-    public int[] regs_write = new int[32];
+    public int[] regs_write;
     public int regs_write_count;
-    public int[] groups = new int[8];
+    public int[] groups;
     public int groups_count;
 
     public _cs_insn(Pointer p) {
+      bytes = new byte[16];
       mnemonic = new byte[32];
       operands = new byte[96];
       regs_read = new int[32];
@@ -58,7 +61,7 @@
 
     @Override
     public List getFieldOrder() {
-      return Arrays.asList("id", "address", "size", "mnemonic", "operands",
+      return Arrays.asList("id", "address", "size", "bytes", "mnemonic", "operands",
 			  "regs_read", "regs_read_count",
 			  "regs_write", "regs_write_count",
 			  "groups", "groups_count");
@@ -189,6 +192,8 @@
         long addr, NativeLong count, PointerByReference insn);
     public void cs_free(Pointer p);
     public int cs_close(NativeLong handle);
+    public int cs_option(NativeLong handle, int option, NativeLong optionValue);
+
     public String cs_reg_name(NativeLong csh, int id);
     public int cs_op_count(NativeLong csh, Pointer insn, int type);
     public int cs_op_index(NativeLong csh, Pointer insn, int type, int index);
@@ -224,6 +229,13 @@
   public static final int CS_ERR_CSH = 4;	    // Invalid csh argument
   public static final int CS_ERR_MODE = 5;	  // Invalid/unsupported mode
 
+  // Capstone option type
+  public static final int CS_OPT_SYNTAX = 1;  // Intel X86 asm syntax (CS_ARCH_X86 arch)
+
+  //Capstone option value
+  public static final int CS_OPT_SYNTAX_INTEL = 1;  // Intel X86 asm syntax (CS_ARCH_X86 arch)
+  public static final int CS_OPT_SYNTAX_ATT = 2;    // ATT asm syntax (CS_ARCH_X86 arch)
+
   protected class NativeStruct {
       private NativeLong csh;
       private NativeLongByReference handleRef;
@@ -245,6 +257,14 @@
     ns.csh = ns.handleRef.getValue();
   }
 
+  public void setSyntax(int syntax) {
+    if (cs.cs_option(ns.csh, CS_OPT_SYNTAX, new NativeLong(syntax)) == CS_ERR_OK) {
+      this.syntax = syntax;
+    } else {
+      throw new RuntimeException("ERROR: Unknown syntax");
+    }
+  }
+
   public String reg_name(int reg) {
     return cs.cs_reg_name(ns.csh, reg);
   }