private static void ProcessCSharpDeclaration(
            [NotNull] IDeclaration declaration,
            [NotNull] CodeStructureElement parentElement,
            [NotNull] CSharpCodeStructureProcessingState state
            )
        {
            switch (declaration)
            {
            case IClassLikeDeclaration classLikeDeclaration: {
                var codeStructureClass = new T4CSharpCodeStructureDeclaredElement(parentElement, declaration, state);
                if (classLikeDeclaration.Body != null)
                {
                    ProcessCSharpChildren(classLikeDeclaration.Body, codeStructureClass, state);
                }
                return;
            }

            case ICSharpNamespaceDeclaration namespaceDeclaration: {
                var structureNamespace = new T4CSharpCodeStructureNamespace(parentElement, declaration, state);
                if (namespaceDeclaration.Body != null)
                {
                    ProcessCSharpChildren(namespaceDeclaration.Body, structureNamespace, state);
                }
                return;
            }

            case IAccessorDeclaration _:
                return;

            case IEnumDeclaration enumDeclaration: {
                var codeStructureElement = new T4CSharpCodeStructureDeclaredElement(parentElement, declaration, state)
                {
                    InitiallyExpanded = false
                };
                ProcessCSharpChildren(enumDeclaration.EnumBody, codeStructureElement, state);
                return;
            }

            default: {
                var codeStructureElement2 = new T4CSharpCodeStructureDeclaredElement(parentElement, declaration, state);
                ProcessCSharpChildren(declaration, codeStructureElement2, state);
                break;
            }
            }
        }
 public T4CSharpCodeStructureAspects([NotNull] T4CSharpCodeStructureDeclaredElement element, [NotNull] IDeclaration declaration)
     : base(declaration)
 {
     _element = element;
 }