public JetTuple <IProjectPsiModuleHandler, IPsiModuleDecorator> OverrideHandler(Lifetime lifetime, IProject project, IProjectPsiModuleHandler handler)
        {
            if (project.ProjectProperties.ProjectKind != ProjectKind.REGULAR_PROJECT ||
                project.ProjectFileLocation.IsNullOrEmpty())
            {
                return(null);
            }

            ExternalCodeSettingsKey settingsKey = _settingsStore
                                                  .BindToContextTransient(ContextRange.ApplicationWide)
                                                  .GetKey <ExternalCodeSettingsKey>(SettingsOptimization.OptimizeDefault);

            IEnumerable <string> paths = settingsKey
                                         .Paths
                                         .EnumIndexedValues()
                                         .Select(x => x.Value.Trim())
                                         .Distinct();

            FileSystemPath[] fileSystemPaths = paths
                                               .Select(FileSystemPath.TryParse)
                                               .Where(x => !x.IsEmpty)
                                               .Select(x => x.ToAbsolutePath(project.Location))
                                               .ToArray();

            var projectHandler = new GeneratedFilesProjectHandler(
                _shellLocks,
                _documentManager,
                _projectFileExtensions,
                _projectFileTypeCoordinator,
                lifetime,
                project,
                handler,
                _changeManager,
                _fileSystemTracker,
                f => new ExternalSourceFileProperties(project, f),
                project.GetResolveContext(),
                fileSystemPaths);

            return(new JetTuple <IProjectPsiModuleHandler, IPsiModuleDecorator>(projectHandler, new GeneratedFilesProjectDecorator(projectHandler)));
        }
        public JetTuple<IProjectPsiModuleHandler, IPsiModuleDecorator> OverrideHandler(Lifetime lifetime, IProject project, IProjectPsiModuleHandler handler)
        {
            if (project.ProjectProperties.ProjectKind != ProjectKind.REGULAR_PROJECT ||
                project.ProjectFileLocation.IsNullOrEmpty())
            {
                return null;
            }

            ExternalCodeSettingsKey settingsKey = _settingsStore
                .BindToContextTransient(ContextRange.ApplicationWide)
                .GetKey<ExternalCodeSettingsKey>(SettingsOptimization.OptimizeDefault);

            IEnumerable<string> paths = settingsKey
                .Paths
                .EnumIndexedValues()
                .Select(x => x.Value.Trim())
                .Distinct();
            FileSystemPath[] fileSystemPaths = paths
                .Select(FileSystemPath.TryParse)
                .Where(x => !x.IsEmpty)
                .Select(x => x.ToAbsolutePath(project.Location))
                .ToArray();

            var projectHandler = new GeneratedFilesProjectHandler(
                _shellLocks,
                _documentManager,
                _projectFileExtensions,
                _projectFileTypeCoordinator,
                lifetime,
                project,
                handler,
                _changeManager,
                _fileSystemTracker,
                f => new ExternalSourceFileProperties(project, f), 
                project.GetResolveContext(),
                fileSystemPaths);
            return new JetTuple<IProjectPsiModuleHandler, IPsiModuleDecorator>(projectHandler, new GeneratedFilesProjectDecorator(projectHandler));
        }