--- /dev/null 2015-04-26 06:51:08.003313989 -0700
+++ new/jdk/src/jdk.jline/share/classes/jdk/internal/jline/console/completer/Completer.java 2015-06-18 03:05:18.898911619 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2002-2012, the original author or authors.
+ *
+ * This software is distributable under the BSD license. See the terms of the
+ * BSD license in the documentation provided with this software.
+ *
+ * http://www.opensource.org/licenses/bsd-license.php
+ */
+package jline.console.completer;
+
+import java.util.List;
+
+/**
+ * A completer is the mechanism by which tab-completion candidates will be resolved.
+ *
+ * @author Marc Prud'hommeaux
+ * @author Jason Dillon
+ * @since 2.3
+ */
+public interface Completer
+{
+ //
+ // FIXME: Check if we can use CharSequece for buffer?
+ //
+
+ /**
+ * Populates candidates with a list of possible completions for the buffer.
+ *
+ * The candidates list will not be sorted before being displayed to the user: thus, the
+ * complete method should sort the {@link List} before returning.
+ *
+ * @param buffer The buffer
+ * @param cursor The current position of the cursor in the buffer
+ * @param candidates The {@link List} of candidates to populate
+ * @return The index of the buffer for which the completion will be relative
+ */
+ int complete(String buffer, int cursor, List candidates);
+}