public TrieDictionary<T> build(int baseId){
  byte[] trieBytes=buildTrieBytes(baseId);
  TrieDictionary<T> r=new TrieDictionary<T>(trieBytes);
  return r;
}

public TrieDictionary < T > build ( int baseId ) { byte [ ] trieBytes = buildTrieBytes ( baseId ) ; TrieDictionary < T > r = new TrieDictionary < T > ( trieBytes ) ; return r ; }
flatten the trie into a byte array for a minimized memory footprint . lookup remains fast . cost is inflexibility to modify ( becomes immutable ) . flattened node structure is head + nodes , for each node : - o byte , offset to child node , o = stats . mbpn_sizechildoffset - 1 bit , islastchild flag , the 1st msb of o - 1 bit , isendofvalue flag , the 2nd msb of o - c byte , number of values beneath , c = stats . mbpn_sizenovaluebeneath - 1 byte , number of value bytes - n byte , value bytes
