private static List <State> FetchStates(NamespaceDeclarationSyntax @namespace)
        {
            var enumDecl        = @namespace.GetFirstOfType <EnumDeclarationSyntax>();
            var enumMembersDecl = enumDecl.ChildNodes().OfType <EnumMemberDeclarationSyntax>().ToArray();

            return(enumMembersDecl.Select(mDecl => new State {
                Name = mDecl.Identifier.ToString()
            }).ToList());
        }
        private static State FetchFinalState(NamespaceDeclarationSyntax @namespace, List <State> states)
        {
            var componentDecl            = @namespace.GetFirstOfType <ClassDeclarationSyntax>();
            var firstGenericBaseTypeDecl = componentDecl.BaseList.Types.FirstOrDefault(t => t.Type is GenericNameSyntax).Type as GenericNameSyntax;

            if (firstGenericBaseTypeDecl.Identifier.ToString() == "SectorComponent")
            {
                return(null);
            }

            var constructorDecl      = componentDecl.GetFirstOfType <ConstructorDeclarationSyntax>();
            var enumAccessExpression = constructorDecl.Initializer.ArgumentList.Arguments[0].Expression as MemberAccessExpressionSyntax;

            return(states.FirstOrDefault(s => s.Name == enumAccessExpression?.Name?.ToString()));
        }
        private static string FetchQuestName(NamespaceDeclarationSyntax @namespace)
        {
            var classDecl = @namespace.GetFirstOfType <ClassDeclarationSyntax>();

            return(classDecl.Identifier.ToString());
        }