protected LIElement createTagLIElement(final EventListener listener, int eventBits) {
        // create list item
        final LIElement listItem = Document.get().createLIElement();
        listItem.setClassName("input-tag-list-item");
        listItem.setTabIndex(0);
        // Set event listeners
        DOM.setEventListener(listItem.<com.google.gwt.user.client.Element>cast(), new EventListener() {

            @Override
            public void onBrowserEvent(Event event) {
                if (listener != null) {
                    listener.onBrowserEvent(event);
                }
                if (event.getTypeInt() == Event.ONMOUSEOUT || event.getTypeInt() == Event.ONBLUR) {
                    listItem.removeClassName("input-tag-list-item-hover");
                } else if (event.getTypeInt() == Event.ONMOUSEOVER || event.getTypeInt() == Event.ONFOCUS) {
                    listItem.addClassName("input-tag-list-item-hover");
                }
            }
        });
        DOM.sinkEvents(listItem.<com.google.gwt.user.client.Element>cast(), Event.FOCUSEVENTS | Event.ONMOUSEOUT | Event.ONMOUSEOVER | eventBits);
        return listItem;
    }