Make nodes not have to have a parent specified in their constructor.  Instead, make SelectableNodes have a constructor with a boolean argument indicating whether the created node is an optional or required placeholder.