public IPsiSourceFile GetOrCreateSourceFile([NotNull] FileSystemPath path)
        {
            Assertion.Assert(path.IsAbsolute, "path.IsAbsolute");

            lock (_sourceFiles) {
                IPsiSourceFile sourceFile;
                if (!_sourceFiles.TryGetValue(path, out sourceFile) || sourceFile == null) {
                    sourceFile = new T4OutsideSolutionSourceFile(
                        _documentFactory, _projectFileExtensions, _psiProjectFileTypeCoordinator, null, path,
                        sf => sf.Path.ExistsFile, sf => new T4OutsideSolutionSourceFileProperties());
                    _sourceFiles[path] = sourceFile;
                }
                return sourceFile;
            }
        }
		public IPsiSourceFile GetOrCreateSourceFile([NotNull] FileSystemPath path) {
			Assertion.Assert(path.IsAbsolute, "path.IsAbsolute");
			
			lock (_sourceFiles) {
				IPsiSourceFile sourceFile;
				if (!_sourceFiles.TryGetValue(path, out sourceFile) || sourceFile == null) {
					sourceFile = new T4OutsideSolutionSourceFile(
						_projectFileExtensions, _psiProjectFileTypeCoordinator, _psiModule, path,
						sf => sf.Location.ExistsFile, sf => new T4OutsideSolutionSourceFileProperties(),
						_documentManager, EmptyResolveContext.Instance);
					_sourceFiles[path] = sourceFile;
				}
				return sourceFile;
			}
		}
        public IPsiSourceFile GetOrCreateSourceFile([NotNull] FileSystemPath path)
        {
            Assertion.Assert(path.IsAbsolute, "path.IsAbsolute");

            lock (_sourceFiles) {
                IPsiSourceFile sourceFile;
                if (!_sourceFiles.TryGetValue(path, out sourceFile) || sourceFile == null)
                {
                    sourceFile = new T4OutsideSolutionSourceFile(
                        _documentFactory, _projectFileExtensions, _psiProjectFileTypeCoordinator, null, path,
                        sf => sf.Path.ExistsFile, sf => new T4OutsideSolutionSourceFileProperties());
                    _sourceFiles[path] = sourceFile;
                }
                return(sourceFile);
            }
        }
        public IPsiSourceFile GetOrCreateSourceFile([NotNull] FileSystemPath path)
        {
            Assertion.Assert(path.IsAbsolute, "path.IsAbsolute");

            lock (_sourceFiles) {
                if (!_sourceFiles.TryGetValue(path, out IPsiSourceFile sourceFile) || sourceFile == null)
                {
                    sourceFile = new T4OutsideSolutionSourceFile(
                        _projectFileExtensions, _psiProjectFileTypeCoordinator, _psiModule, path,
                        sf => sf.Location.ExistsFile, sf => new T4OutsideSolutionSourceFileProperties(),
                        _documentManager, EmptyResolveContext.Instance);
                    _sourceFiles[path] = sourceFile;
                }
                return(sourceFile);
            }
        }