boolean (Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; DataNode node = (DataNode)o; if (!Objects.equals(key, node.key)) return false; if (!Objects.equals(getData(), node.getData())) return false; if (!Objects.equals(ObjectUtils.notNull(children, Collections.emptyList()), ObjectUtils.notNull(node.children, Collections.emptyList()))) { return false; } return true; }