EditControllerEx1 mandatory in any plug-in since VST3 3.0.1?

in the edithost.cpp example (VST3 SDK 3.7.9) :

plugProvider->getController () returns IEditController*

By casting that pointer to EditControllerEx1* its possible to access the presets (called “programs”) in a plugin.
From an 2008 online article I learned that this EditControllerEx1 interface was introduced in v3.0.1;

My question:
Is this EditControllerEx1 interface mandatory since that v3.0.1 version for any VST3 plugin?
How can a host verify, that this interface is actually implemented in a plugin?
My current solution checks .sdkVersion() of the classInfo. But this is only sufficient, if the EditControllerEx1 interface was mandatory since that time.
Is there a way for the host to check whether this interface is implemented by using IPlugInterfaceSupport ?

The IEditController interface has an “iid”, but the EditControllerEx1 interface does not have it. So its not possible to determine it that way. Or do I miss something?

Thank you.

EditControllerEx1 heritates from EditController and adds support of IUnitInfo (which extends IEditController)

If you need to support IUnitInfo interface (which is highly recommanded, expecially for parameters structure):

auto controller = plugProvider->getController ();
FUnknownPtr<IUnitInfo> unitInfo (controller);
if (unitInfo)