private string GenerateGenericType(string genericPart, TypeClassContext context)
 {
     if (IsNode)
     {
         return($"{genericPart}Node");
     }
     else if ((context & TypeClassContext.GreenIEnumerableParameter) != 0)
     {
         return($"Green{genericPart}Node");
     }
     return(genericPart);
 }
        public TypeSyntax GetRepresentation(TypeClassContext context = TypeClassContext.None)
        {
            if ((context & TypeClassContext.NotList) != 0 && Name.StartsWith("List'"))
            {
                return(SyntaxFactory.ParseTypeName($"IEnumerable<{Name.Split('\'')[1]}Node>"));
            }


            return(SyntaxFactory.ParseTypeName($"{Name}Node"));

            throw new NotImplementedException();
        }
        public TypeSyntax GetRepresentation(TypeClassContext context = TypeClassContext.None)
        {
            string name;

            if ((context & TypeClassContext.Array) != 0)
            {
                name = $"{GenerateGenericType(_genericPart, context)}[]";
            }
            else
            {
                if (_genericPart != null)
                {
                    name = $"{GenerateTypeName(Type, context)}<{GenerateGenericType(_genericPart, context)}>";
                }
                else
                {
                    name = GenerateTypeName(Type, context);
                }
            }
            return(SyntaxFactory.ParseTypeName(name));
        }
        private string GenerateTypeName(string type, TypeClassContext context)
        {
            if (IsList && (context & TypeClassContext.NotList) != 0)
            {
                return("IEnumerable");
            }

            if (IsNode)
            {
                if ((context & TypeClassContext.Red) != 0)
                {
                    return($"{type}Node");
                }
                else
                {
                    return($"Green{type}Node");
                }
            }
            else
            {
                return(type);
            }
        }