def read filename
      return @current if @current && @current.filename == filename
      raise FileNotFoundError, "File not found: #{filename}" unless workspace.has_file?(filename)
      workspace.source(filename)
    end
def read filename
      return @current if @current && @current.filename == filename
      raise FileNotFoundError, "File not found: #{filename}" unless workspace.has_file?(filename)
      workspace.source(filename)
    end
Get the source for an open file or create a new source if the file
 exists on disk. Sources created from disk are not added to the open
 workspace files, i.e., the version on disk remains the authoritative
 version.

 @raise [FileNotFoundError] if the file does not exist
 @param filename [String]
 @return [Solargraph::Source]