The inteface of a task performing a code completion query.
 
 The support class
 {@link org.netbeans.spi.editor.completion.support.AsyncCompletionTask}
 can be used for convenience when the task requires an asynchronous evaluation.
Called by the code completion infrastructure to cancel the task.
 
 Once the cancel is done on the task no more querying or refreshing
 is done on it.
 
This method may potentially be called from any thread.
Called by the code completion infrastructure to ask the task
 to do a query and return the results through the given completion listener.
 
 This method is called only once during the lifetime of the completion task
 object.
 
This method is always called in AWT thread but it may reschedule its processing into another thread and fire the given listener once the computing is finished.
Called by the code completion infrastructure to inform the task about
 changes in the corresponding document. The task should reflect these
 changes while creating the query result.
 
 This method can be called multiple times on a single task instance.
 
 Typically it is called AFTER the query() was invoked
 but it may also be invoked BEFORE the query() in case
 the user types even before the query()
 was called by the infrastructure. In such
 case the resultSet parameter will be null.
 
 It is guaranteed that this method will not be invoked in case
 the document instance set in the component would change since the last invocation
 of either the query() or refresh().
 
This method is always called in AWT thread but it may reschedule its processing into another thread and fire the given listener once the computing is finished.
query()
  was not invoked yet and user has typed a character. In this case
  the provider may hide the completion
  by using Completion.get().hideAll()
  if the typed character is inappropriate e.g. ";" for java completion.