For a given Target, a tuple (Selector, Selection, SelectionEditor) is created and maintained. The FGeometrySelection is ultimately a basic list of integers and does not have any knowledge of what it is a selection of, and is not intended to be directly edited. Instead the SelectionEditor provides that functionality. This separation allows "selection editing" to be customized, eg to enforce invariants or constraints that might apply to certain kinds of selections.