code: func (c *Console) AutoCompleteInput(line string, pos int) (string, []string, string) {
  	// No completions can be provided for empty inputs
  	if len(line) == 0 || pos == 0 {
  		return "", nil, ""
  	}
  	// Chunck data to relevant part for autocompletion
  	// E.g. in case of nested lines eth.getBalance(eth.coinb<tab><tab>
  	start := pos - 1
  	for ; start > 0; start-- {
  		// Skip all methods and namespaces (i.e. including the dot)
  		if line[start] == '.' || (line[start] >= 'a' && line[start] <= 'z') || (line[start] >= 'A' && line[start] <= 'Z') {
  			continue
  		}
  		// Handle web3 in a special way (i.e. other numbers aren't auto completed)
  		if start >= 3 && line[start-3:start] == "web3" {
  			start -= 3
  			continue
  		}
  		// We've hit an unexpected character, autocomplete form here
  		start++
  		break
  	}
  	return line[:start], c.jsre.CompleteKeywords(line[start:pos]), line[pos:]
  }
docs: // AutoCompleteInput is a pre-assembled word completer to be used by the user
  // input prompter to provide hints to the user about the methods available.