Various improvements for pre-written base types (U8 etc.)
diff --git a/java_gen/pre-written/src/main/java/org/openflow/types/OFMetadata.java b/java_gen/pre-written/src/main/java/org/openflow/types/OFMetadata.java
index e27679c..e82bc40 100644
--- a/java_gen/pre-written/src/main/java/org/openflow/types/OFMetadata.java
+++ b/java_gen/pre-written/src/main/java/org/openflow/types/OFMetadata.java
@@ -2,36 +2,43 @@
 
 import org.jboss.netty.buffer.ChannelBuffer;
 
-public class OFMetadata extends U64 implements OFValueType<OFMetadata> {
-    
+public class OFMetadata implements OFValueType<OFMetadata> {
+
     private static int LENGTH = 8;
 
-    public static final OFMetadata NO_MASK = OFMetadata.of(0xFFFFFFFFFFFFFFFFl);
-    public static final OFMetadata FULL_MASK = OFMetadata.of(0x0);
+    private final U64 u64;
 
-    protected OFMetadata(long raw) {
-        super(raw);
+    public static final OFMetadata NO_MASK = OFMetadata.of(U64.ofRaw(0xFFFFFFFFFFFFFFFFl));
+    public static final OFMetadata FULL_MASK = OFMetadata.of(U64.ofRaw(0x0));
+
+    public OFMetadata(U64 ofRaw) {
+        u64 = ofRaw;
     }
 
-    public static OFMetadata of(long raw) {
-        return new OFMetadata(raw);
+    public static OFMetadata of(U64 u64) {
+        return new OFMetadata(u64);
     }
-    
+
+    public static OFMetadata ofRaw(long raw) {
+        return new OFMetadata(U64.ofRaw(raw));
+    }
+
     public static OFMetadata read8Bytes(ChannelBuffer cb) {
-        return OFMetadata.of(cb.readLong());
+        return OFMetadata.ofRaw(cb.readLong());
     }
-    
+
     public void write8Bytes(ChannelBuffer cb) {
-        cb.writeLong(super.getValue());
+        u64.writeTo(cb);
     }
 
     @Override
     public int getLength() {
-        return LENGTH;
+        return u64.getLength();
     }
 
     @Override
     public OFMetadata applyMask(OFMetadata mask) {
-        return OFMetadata.of(this.getValue() & mask.getValue());
+        return OFMetadata.of(this.u64.applyMask(mask.u64));
     }
+
 }