Names: GED_* e.g. GED_ACRV
GEDA_* e.g. GEDA_BLY_PLATE
GEDX_* e.g. GEDX_ACRV
GED_ knows about relationships to neighbouring regions but not about shapes (even of its own region, although it does know how many surfaces it has). It calls GEDA_ for arrays of regions or GEDX_ for single regions as required.
GEDA_ does an optimised search to find the best element(s). It calls GEDX_ to deal with each possible candidate element. When picking points it selects candidates randomly on basis of relative volumes.
GEDX_ deals with external (i.e. owned) boundaries; it knows nothing about the relationship to other regions. It defines boundaries by ORing and NOTing one or more primitives, calling GEP_. It calls GEB_ to keep it informed of current context.