public static XamlAstClrTypeReference ResolveType(AstTransformationContext context,
                                                          string xmlns, string name, bool isMarkupExtension, List <XamlAstXmlTypeReference> typeArguments,
                                                          IXamlLineInfo lineInfo,
                                                          bool strict)
        {
            if (typeArguments == null || typeArguments.Count == 0)
            {
                var cache    = context.GetOrCreateItem <TypeResolverCache>();
                var cacheKey = (xmlns, name, isMarkupExtension);
                if (cache.CacheDictionary.TryGetValue(cacheKey, out var type))
                {
                    if (type == null)
                    {
                        return(null);
                    }
                    return(new XamlAstClrTypeReference(lineInfo, type, isMarkupExtension));
                }

                var res = ResolveTypeCore(context, xmlns, name, isMarkupExtension, typeArguments, lineInfo, strict);
                cache.CacheDictionary[cacheKey] = res?.Type;
                return(res);
            }
            else
            {
                return(ResolveTypeCore(context, xmlns, name, isMarkupExtension, typeArguments, lineInfo, strict));
            }
        }