 {
     public var bytes :ByteArray;
 
-    public var oRef :References = new References();
-    public var sRef :References = new References();
-    public var tRef :References = new References();
+    public var oRef :Array = new Array();
+    public var sRef :Array = new Array();
+    public var tRef :Array = new Array();
 
     public function Context (bytes :ByteArray)
     {
         this.bytes = bytes;
     }
-}
-
-class References
-{
-    public var table :Dictionary = new Dictionary();
-    public var ix :uint = 0;
 }
 
 class Traits

        var bytes :ByteArray = new ByteArray();

        // register
        _ctx.oRef.table[bytes] = _ctx.oRef.ix ++;

        // and read the bytes
        _ctx.bytes.readBytes(bytes, 0, code >> 1);


        // if not, create our array & note its reference
        var result :Array = [ ];
        _ctx.oRef.push(result);

        // then first read associative pairs
        var key :String;
