public void CreateInstancesOfPluginTypes_MatchingSpecifiedOrBaseType()
        {
            var types = new PluginType[] {
                new PluginType(null, typeof(TypeOne), null),
                new PluginType(null, typeof(TypeTwo), null),
                new PluginType(null, typeof(TypeTwo), null),
                new PluginType(null, typeof(StringBuilder), null)
            };

            var instances = types.CreateInstancesDerivingFrom(typeof(ICommon));

            instances.Should().HaveCount(2);
            instances.OfType <TypeOne>().Should().HaveCount(1);
            instances.OfType <TypeTwo>().Should().HaveCount(1);

            instances = types.CreateInstancesDerivingFrom <ICommon>();
            instances.Should().HaveCount(2);
            instances.OfType <TypeOne>().Should().HaveCount(1);
            instances.OfType <TypeTwo>().Should().HaveCount(1);

            instances = types.CreateInstancesDerivingFrom <TypeTwo>();
            instances.Should().HaveCount(0);
            instances.OfType <TypeTwo>().Should().HaveCount(0);

            instances = types.CreateInstancesDerivingFrom <string>();
            instances.Should().HaveCount(0);
        }