I was curious about that too, looked at it for the AP driver:
There is _one_ binary installed, lx200generic, for all LX200 drivers.
The variant's binaries (including ap_experimental) are links to that one indi_lx200generic.
When the requested driver image invokes the linked indi_LX200_generic executable the original
specific driver name is passed in. The main function will fetch from std args the binary name
and In lx200Generic:ISInit() it creates a new instance of LX200AstroPhysicsExperimental.
The implementation is running within the generic binary.

For example:

else if (strstr(me, "indi_lx200ap_experimental"))
{
IDLog("initializing from Astrophysics Experimental device...\n");

if (telescope.get() == nullptr)
telescope.reset(new LX200AstroPhysicsExperimental());
}
\

INDI::BaseDevice
^
INDI::DefaultDevice
^
Telescope GuiderInterface (libs/indibase/inditelescope.h / libs/indibase/indiguiderinterface.h)
^ ^
LX200Telescope includes lx200driver (getCommandSexa etc) in generic and library?
^
LX200Generic
^
LX200AstroPhysicsExperimental includes lx200ap_experimentaldriver

Read More...