protected virtual Type LookupAssociatedConcreteViewModelType(Type candidateType)
{
var viewModelPropertyInfo = candidateType
.GetProperties()
.FirstOrDefault(x => x.Name == "ViewModel"
&& !x.PropertyType.GetTypeInfo().IsInterface
&& !x.PropertyType.GetTypeInfo().IsAbstract);
return viewModelPropertyInfo?.PropertyType;
}