// Initial State:
// ROOT
// / | \
// / | \
// B C D
// / | / | \ \
// / | / | \ \
// F G (POPUP) I J (K)
// / | \ / \
// / | \ Z Y
// N O (P)
// After openPopup called:
// ROOT
// / | \
// / | \
// (B) (C) D
// / | / | \ \
// / | / | \ \
// F G POPUP (I) (J) (K)
// / | \
// / | \
// N O (P)
private static class DomNode {
String id;
boolean hidden;
List<DomNode> children;
public DomNode(String id, boolean hidden, List<DomNode> children) {
this.hidden = hidden;
this.id = id;
this.children = children;
}
}