I found the answer, thanks to @Nilesh comment above.
Replacing:
private List<ModelRootEntity> _validTargets = new List<ModelRootEntity>();
with:
private List<IModelRootEntity> _validTargets = new List<ModelRootEntity>();
exposed the real issue. The second line will not compile. The following post explained why: C# newbie List<Interface> question
The only odd thing was the exception I tried to force which never threw, and "threw" me off.