AvailableModules

Description: add types to this TypeList to specify modules that could be connected to the behaviour.

//Usage
public override TypeList AvailableModules { get; }
//Example
public override TypeList AvailableModules { get; } = new TypeList()
    .Add(typeof(FirstModule))
    .Add(typeof(SecondModule))
    .Add(typeof(ThirdModule));

GetModule

Description: get module of type T (T : IModule)

//Usage
GetModule<T>()
//Example
ModuleFoo module = GetModule<ModuleFoo>();