code: @Override
  	public void complete(final LineReader reader, final ParsedLine line, final List<Candidate> candidates) {
  		String buffer = line.line().substring(0, line.cursor());
  		String[] parts = getLineParts(buffer);
  		int len = parts.length;
  
  		// コード補完する引数の番号を特定。
  		int startArgNo = getStartArgNo(line);
  
  		// 対象引数が-1、または開始引数にlenが満たない場合は該当なしなのでコード補完しない
  		if (!accept(startArgNo, buffer, len)) {
  			return;
  		}
  
  		String key = null;
  
  		boolean isBlank = buffer.endsWith(" ");
  		if (len == startArgNo && isBlank) {
  			key = null;
  		} else if (len == startArgNo + 1 && !isBlank) {
  			key = parts[len - 1];
  		} else {
  			return;
  		}
  
  		final String keyword = key;
  
  		Stream.of(SqlKeyword.values()).filter(k -> k.match(keyword))
  				.forEach(k -> candidates.add(new Candidate(k.toString().toLowerCase())));
  	}
docs: {@inheritDoc}
  
  @see org.jline.reader.Completer#complete(org.jline.reader.LineReader, org.jline.reader.ParsedLine, java.util.List)