class TreeExplorerView extends Composite implements TreeExplorer.View {

    public boolean isItemChanged(final String uuid,
                                 final String parentUuid,
                                 final String name,
                                 final int childCount,
                                 final OptionalInt indexIntoParent) {

        final TreeItem oldItem = tree.getItemByUuid(uuid);
        if (oldItem != null) {
            if (isNameChanged().test(oldItem,
                                     name)) {
                return true;
            }
            final TreeItem oldItemParent = oldItem.getParentItem();
            final String oldParentUuid = null != oldItemParent ? oldItemParent.getUuid() : null;
            final boolean isChildrenCountChanged = oldItem.getChildCount() != childCount;
            if (isChildrenCountChanged) {
                return true;
            }
            return (((oldParentUuid == null && parentUuid == null) ||
                    (null != parentUuid && !parentUuid.equals(oldParentUuid)))) ||
                    isIndexChanged().test(oldItem, indexIntoParent);
        }
        return false;
    }

    @Inject public  TreeExplorerView(final Tree<TreeItem> tree);
      TreeExplorerView(final TreeExplorer presenter,
                     final Tree<TreeItem> tree,
                     final HandlerRegistration handlerRegistration
    );

}