public static DesignTypeResult GetTypeToInstantiate(IPlatformMetadata platformMetadata, Type sourceType, bool createList, bool isDesignTimeCreatable)
        {
            Type designType = sourceType;
            DesignTypeGenerator designTypeGenerator = new DesignTypeGenerator(platformMetadata);

            if (!isDesignTimeCreatable)
            {
                DesignTypeResult designTypeResult = designTypeGenerator.GetDesignType(sourceType);
                if (designTypeResult.IsFailed)
                {
                    return(designTypeResult);
                }
                designType = designTypeResult.DesignType;
            }
            if (!(designType != null) || !createList)
            {
                return(new DesignTypeResult(sourceType, designType));
            }
            return(designTypeGenerator.GetXamlFriendlyListType(designType));
        }