exports.List = function List(pointer, tail) {};

exports.Struct = function Struct(pointer, tail) {};

exports.InterSegment = function InterSegment(pointer, tail) {};

exports.Capability = function Capability(pointer, tail) {};

var p = {
    0 : Struct,
    1 : List,
    2 : InterSegment,
    3 : Capability
};

exports.AnyPointer = function AnyPointer(pointer, tail) {
    var Pointer = p[(0xC0000000 & p) >>> 30];
    return new Pointer(pointer, bytes);
};

@@ -22,29 +22,21 @@
 on List(
-pointer, tail
+bytes
 ) %7B%7D;%0A%0Ae
@@ -67,29 +67,21 @@
  Struct(
-pointer, tail
+bytes
 ) %7B%7D;%0A%0Ae
@@ -124,29 +124,21 @@
 Segment(
-pointer, tail
+bytes
 ) %7B%7D;%0A%0Ae
@@ -177,29 +177,21 @@
 ability(
-pointer, tail
+bytes
 ) %7B%7D;%0A%0Av
@@ -319,21 +319,13 @@
 ter(
-pointer, tail
+bytes
 ) %7B%0A
@@ -348,31 +348,29 @@
 = p%5B
-(
+bytes%5B0%5D & 
 0x
-C
 0000000
- & p) %3E%3E%3E 30
+3
 %5D;%0A 
@@ -395,17 +395,8 @@
 ter(
-pointer, 
 byte

Dispatcher extracts relevant tail