         symbolType=='type' or symbolType=='class'),
         prefix, key: 'qname'
 
+  ###
+  getCompletionsForClass(buffer,prefix,position)
+  buffer: TextBuffer, current buffer
+  prefix: String, completion prefix
+  position: Point, current cursor position
+
+  Returns: Promise([symbol])
+  symbol: Same as getCompletionsForSymbol, except
+          symbolType is one of ['class']
+  ###
   getCompletionsForClass: (buffer, prefix, position) =>
     return Promise.reject("Backend inactive") unless @isActive()
 

          setTimeout (=> @dirMap.delete rootDir), 10*60*1000
          resolve (FZ.filter modules, prefix)

  getCompletionsForSymbolInModule: (buffer, prefix, position, {module}) =>
    unless module?
      @editor.backwardsScanInBufferRange /^import\s+([\w.]+)/,
        @lineRange, ({match,stop}) ->
          module=match[1]
          stop()
    new Promise (resolve) =>
      @process.runBrowse rd, [module], resolve

  getCompletionsForLanguagePragmas: (buffer, prefix, position) =>
    return Promise.reject("Backend inactive") unless @isActive()

    Promise.resolve(FZ.filter @languagePragmas, prefix)

  getCompletionsForCompilerOptions: (buffer, prefix, position) =>
    return Promise.reject("Backend inactive") unless @isActive()

    Promise.resolve(FZ.filter @compilerOptions, prefix)

  getCompletionsForHole: (buffer, prefix, position) =>
    return Promise.reject("Backend inactive") unless @isActive()
    new Promise (resolve) =>

      FZ.filter (symbols.filter ({symbolType}) -> symbolType=='class'),
        prefix, key: 'qname'

  ###
  getCompletionsForModule(buffer,prefix,position)
  buffer: TextBuffer, current buffer
  prefix: String, completion prefix
  position: Point, current cursor position

  Returns: Promise([module])
  module: String, module name
  ###
  getCompletionsForModule: (buffer, prefix, position) =>
    return Promise.reject("Backend inactive") unless @isActive()
    rootDir = @process.getRootDir buffer
