public override object VisitCompilation_unit([NotNull] CSharpParser.Compilation_unitContext context)
        {
            _hasServiceNamespace = false;
            _hasServiceInterface = false;

            var usingDirs = context?.using_directive();

            if (usingDirs != null)
            {
                foreach (var usingDir in usingDirs)
                {
                    _usingSet.Remove(usingDir.using_directive_inner().GetText());
                }
            }

            VisitChildren(context);

            if (_usingSet.Count > 0)
            {
                var usingStopIndex = _cSharpParserService.GetUsingStopIndex(context);

                var usingDirectivesStr = _cSharpParserService.GenerateUsingDirectives(
                    _usingSet.ToList(),
                    usingStopIndex.Equals(context.Start));

                IsModified = true;
                Rewriter.InsertAfter(usingStopIndex, usingDirectivesStr);
            }

            if (!_hasServiceNamespace)
            {
                var namespaceStopIndex          = _cSharpParserService.GetNamespaceStopIndex(context);
                var serviceNamespaceDeclaration = _serviceCommandParserService.GenerateServiceNamespaceDeclaration(
                    _serviceFile.ServiceNamespace,
                    _serviceFile.ServiceDeclaration);
                IsModified = true;
                Rewriter.InsertAfter(namespaceStopIndex, serviceNamespaceDeclaration);
            }

            return(null);
        }