public void addLookup(char ch)
    {
        Character c = new Character(ch);
        NodePtr tmp;
        /*First handle all existing lookups*/
        Iterator<NodePtr> iter = lookups.listIterator(0);

        while(iter.hasNext())
        {
            tmp = iter.next();
            if(!tmp.addChar(ch))
            {
                if(tmp.getNode().getEnd())
                {
                     candidates.remove(tmp);
                     candidates.put(tmp, tmp.getString());
                }
                if(candidates.containsKey(tmp))
                {
                    System.out.println(candidates.get(tmp));
                    candidates.remove(tmp);
                }
                iter.remove();
            }
            else
            {
                if(tmp.getNode().getEnd())
                {
                    if(!candidates.containsKey(tmp))
                    {
                        candidates.remove(tmp);
                        candidates.put(tmp, tmp.getString());
                    }
                }
            }
        }

        /* Handle roots last so they won't be advanced twice */
        TrieNode node = children.get(c);
        if(node != null)
        {
            tmp = new NodePtr(ch);
            tmp.setNode(node);
            if(node.getEnd())
            {
                /*A candidate item for this NodePtr*/
                candidates.put(tmp, tmp.getString());
            }
            lookups.add(tmp);
        }
    }