What would be the best approach? An adapter should only know about its own options, having to know the internal structure of the Config would make it very fragile for future changes (someone who needs to maintain to separate GitLab instances for example, the adapter can only configured once so for now thats a problem).

I'm trying to come-up with better ideas to pass Configuration, and allowing to build the Configuration (doConfiguration()). Being able to register an Adapter by initiation and not using static methods anymore has my preference, but its wonky :)

In the past there was an initialize() method which started the Adapter, but reintroducing this is properly not a good idea, so decoupling the Adapter actions (closeX, openX etc.) with the configuration-building is the best change. But I'm still thinking about good approaches here.