+<body>
+Example Usage:<br/>
+
+The following:<br/>
+<pre>
+ ClassGen cg = new ClassGen("Test1","java.lang.Object",ACC_PUBLIC|ACC_SUPER);
+
+ FieldGen fg = cg.addField("message",Type.STRING,ACC_PRIVATE|ACC_STATIC);
+ fg.setConstantValue("Hello, World");
+
+ MethodGen mg = cg.addMethod("main",Type.VOID,new Type[]{Type.arrayType(Type.STRING)},ACC_STATIC|ACC_PUBLIC);
+ mg.add(LDC,10);
+ mg.add(ISTORE_0);
+
+ int top = mg.size();
+ mg.add(GETSTATIC,new FieldRef("java.lang.System","out",new Type.Object("java.io.PrintStream")));
+ mg.add(NEW,Type.STRINGBUFFER);
+ mg.add(DUP);
+ mg.add(INVOKESPECIAL,new MethodRef(Type.STRINGBUFFER,"<init>",Type.VOID,Type.NO_ARGS));
+ mg.add(GETSTATIC,new FieldRef("Test1","message",Type.STRING));
+ mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.STRING}));
+ mg.add(LDC," - ");
+ mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.STRING}));
+ mg.add(ILOAD_0);
+ mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.INT}));
+
+ mg.add(ILOAD_0);
+ mg.add(ICONST_1);
+ mg.add(IAND);
+ int b1 = mg.add(IFNE);
+ mg.add(LDC,'!');
+ mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.CHAR}));
+ mg.setArg(b1,mg.size());
+
+ mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"toString",Type.STRING,Type.NO_ARGS));
+ mg.add(INVOKEVIRTUAL,new MethodRef("java.io.PrintStream","println",Type.VOID,new Type[]{Type.STRING}));
+
+ mg.add(IINC,new MethodGen.Pair(0,-1));
+
+ mg.add(ILOAD_0);
+ mg.add(IFGT,top);
+
+ mg.add(RETURN);
+
+ cg.dump("Test1.class");
+</pre>
+
+Will create this bytecode:
+<pre>
+public class Test1 extends java.lang.Object{
+private static java.lang.String message;
+
+public static void main(java.lang.String[]);
+ throws
+ Code:
+ 0: bipush 10
+ 2: istore_0
+ 3: getstatic #10; //Field java/lang/System.out:Ljava/io/PrintStream;
+ 6: new #12; //class StringBuffer
+ 9: dup
+ 10: invokespecial #16; //Method java/lang/StringBuffer."<init>":()V
+ 13: getstatic #20; //Field message:Ljava/lang/String;
+ 16: invokevirtual #24; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
+ 19: ldc #26; //String -
+ 21: invokevirtual #24; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
+ 24: iload_0
+ 25: invokevirtual #29; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
+ 28: iload_0
+ 29: iconst_1
+ 30: iand
+ 31: ifne 39
+ 34: bipush 33
+ 36: invokevirtual #32; //Method java/lang/StringBuffer.append:(C)Ljava/lang/StringBuffer;
+ 39: invokevirtual #36; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
+ 42: invokevirtual #42; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
+ 45: iinc 0, -1
+ 48: iload_0
+ 49: ifgt 3
+ 52: return
+
+}
+</pre>
+</body>