The presence of a branch adds some nuances over a union. The leading open parenthesis terminal ("(") signifies that the current hub will later be reexposed. This operation can be supported by a stack (Table ). A stack is a data structure that allows items to be added individually ("pushed") and removed ("popped") in the reverse order of addition. At the start of a branch, the current hub is pushed to the stack. At the end of the branch, the stack is popped and its top value is assigned as the new hub.