bool isPreferredConstructor(ConstructorInfo constructorInfo)
        {
            Type[] preferred;
            if (_preferredConstructor.TryGetValue(constructorInfo.DeclaringType, out preferred)
                && compareTypes(preferred, constructorInfo.GetParameters()))
                return true;

            if (constructorInfo.hasAttribute<PreferredConstructorAttribute>())
                return true;

            return false;
        }