protected LIElement createSuggestionElement(final Tag tag) {
        // create list item
        final LIElement listItem = Document.get().createLIElement();
        listItem.setId("suggestion-" + (l++));
        listItem.setClassName("tags-suggestion-list-suggestion");
        listItem.setTabIndex(0);
        // Set event listeners
        DOM.setEventListener(listItem.<com.google.gwt.user.client.Element>cast(), new EventListener() {

            @Override
            public void onBrowserEvent(Event event) {
                //
                // There is no ONMOUSEOUT because every time when mouse over is
                // called , we will remove class about active tag.
                //
                if (event.getTypeInt() == Event.ONMOUSEOVER) {
                    for (int i = 0; i < suggestionList.getChildCount(); i++) {
                        suggestionList.getChild(i).<com.google.gwt.user.client.Element>cast().removeClassName("tags-suggestion-list-suggestion-focus");
                    }
                    listItem.addClassName("tags-suggestion-list-suggestion-focus");
                    // 
                    // Handles suggestion from suggestion list
                    // 
                } else if (event.getTypeInt() == Event.ONCLICK) {
                    handleNewTag(tag);

                }
            }
        });
        DOM.sinkEvents(listItem.<com.google.gwt.user.client.Element>cast(), Event.ONMOUSEOVER | Event.ONCLICK);
        return listItem;
    }