/// <summary>
        /// Namespace.ParentType[T].NestedType[TT] -> NestedType[TT] <br/>
        /// Namespace.ParentType[T] -> global::Namespace.ParentType[T]
        /// </summary>
        private NameSyntax GetQualifiedName(ITypeInfo type)
        {
            ReferenceCollector?.AddType(type);

            string[] parts = type.Name.Split(Type.Delimiter);

            NameSyntax[] names = new NameSyntax[parts.Length];

            if (type.IsNested)
            {
                names[0] = CreateTypeName(parts.Single() !);
            }
            else
            {
                for (int i = 0; i < parts.Length - 1; i++)
                {
                    names[i] = IdentifierName(parts[i]);
                }

                names[names.Length - 1] = CreateTypeName(parts[parts.Length - 1]);

                //
                // Ez jol kezeli azt az esetet is ha a tipus nincs nevter alatt
                //

                if (!type.IsVoid && !type.IsGenericParameter)
                {
                    names[0] = AliasQualifiedName
                               (
                        IdentifierName(Token(SyntaxKind.GlobalKeyword)),
                        (SimpleNameSyntax)names[0]
                               );
                }
            }

            return(names.Qualify());

            NameSyntax CreateTypeName(string name) => type is not IGenericTypeInfo genericType?IdentifierName(name) : GenericName(name).WithTypeArgumentList
                (
                    typeArgumentList: TypeArgumentList
                    (
                        arguments: genericType.GenericArguments.ToSyntaxList(ResolveType)
                    )
                );
        }
 /// <summary>
 /// Returns qualified name syntax.
 /// </summary>
 /// <param name="instance">
 /// The instance.
 /// </param>
 /// <param name="member">
 /// The member.
 /// </param>
 /// <returns>
 /// The resulting <see cref="MemberAccessExpressionSyntax"/>.
 /// </returns>
 public static QualifiedNameSyntax Qualify(this NameSyntax instance, string member)
 {
     return(instance.Qualify(member.ToIdentifierName()));
 }