// public void allocateInTree(ByteBuffer bb, EmojiTreeNode node, long payload) { public void allocateInTree(byte[] bb, EmojiTreeNode node, long payload) { // Character ch = bb.getChar(); using (MemoryStream memory = new MemoryStream(bb, false)) { using (BinaryReader reader = new BinaryReader(memory)) { Char ch = reader.ReadChar(); EmojiTreeNode newNode = node.get(ch); if (newNode != null) { if (memory.Length - memory.Position == 0) { if (newNode.isSubtree()) { newNode.put(ch, new EmojiTreeNode(payload)); } } else { allocateInTree(reader.ReadBytes((int)memory.Length - (int)memory.Position), newNode, payload); } } else { if (memory.Length - memory.Position == 0) { node.put(ch, new EmojiTreeNode(payload)); return; } newNode = new EmojiTreeNode(); node.put(ch, newNode); allocateInTree(reader.ReadBytes((int)memory.Length - (int)memory.Position), newNode, payload); } } // EmojiTreeNode newNode = node.get(ch); // if (newNode != null) { // if (bb.remaining() == 0) { // if (newNode.isSubtree()) { // newNode.put(ch, new EmojiTreeNode(payload)); // } // } else { // allocateInTree(bb, newNode, payload); // } // } else { // if (bb.remaining() == 0) { // node.put(ch, new EmojiTreeNode(payload)); // return; // } // // newNode = new EmojiTreeNode(); // node.put(ch, newNode); // allocateInTree(bb, newNode, payload); // } } }