The Collapse call saved the original bounds of all of the non-link children. These saved relative positions are used to move all of the children back again, and making them all visible too. This method will first set the State to GoSubGraphState.Expanding, and then call PrepareExpand for any preparatory work. It will call ComputeReferencePoint to determine the reference position for the expanded subgraph. It calls ExpandChild on each child to move them back to their original positions, and will call FinishExpand for any clean-up work. It then sets the state to GoSubGraphState.Expanded. This method does nothing if this node is already expanded or if Collapsible is false. This method also calls LayoutChildren(null) afterwards, mostly to make sure the Handle and Label are positioned correctly again, especially if the objects changed while the node was collapsed.