OptionalgetOptionalgetOptionaloffSymmetric detach for LabelsMapHandle.on. Declared optional, like
getNativeMap / getLayerRegistry below and for the same reason: the real
MapLibre adapter implements it, but partial adapters and test doubles supply
only what they are asked for. Optionality is what forces the teardown path to
guard — without it the contract offered no way out at all, and destroy()
could not release its zoomend subscription (CAPACITÉS backlog B.35b).
Minimal structural view of the map handle returned by
Core.getMap()as the labels module uses it. Permissive: the adapter is consumed viagetNativeMap()/getLayerRegistry()for the symbol-layer path, pluson()/off()/getZoom()for the zoom listener. Narrow at the boundary.