private bool IsComplexTypeWithCollectionInterfaces(Type originalType)
        {
            Type baseType = originalType.BaseType;

            if (baseType == null || baseType == this.objectType)
            {
                return(false);
            }
            Type genericTypeDefinition = baseType;

            if (baseType.IsGenericType && !baseType.IsGenericTypeDefinition)
            {
                genericTypeDefinition = baseType.GetGenericTypeDefinition();
            }
            for (int i = 0; i < this.collectionTypes.Count; i++)
            {
                Type item = this.collectionTypes[i];
                if (item.IsAssignableFrom(genericTypeDefinition) || item.IsAssignableFrom(baseType))
                {
                    return(false);
                }
            }
            Type[] implementedInterfaces = DesignTypeGenerator.GetImplementedInterfaces(originalType);
            for (int j = 0; j < (int)implementedInterfaces.Length; j++)
            {
                Type type = implementedInterfaces[j];
                Type genericTypeDefinition1 = type;
                if (type.IsGenericType && !type.IsGenericTypeDefinition)
                {
                    genericTypeDefinition1 = type.GetGenericTypeDefinition();
                }
                for (int k = 0; k < this.collectionTypes.Count; k++)
                {
                    Type item1 = this.collectionTypes[k];
                    if (item1.IsAssignableFrom(genericTypeDefinition1) || item1.IsAssignableFrom(type))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }