@Override
  public void sessionEnded() {
    clearErrorMessage();
    for (ILangCompletionProposalComputer computer : computers) {
      computer.sessionEnded();

      updateErrorMessage(computer.getErrorMessage());
    }
  }
  @Override
  public Indexable<IContextInformation> computeContextInformation(SourceOperationContext context) {
    clearErrorMessage();

    ArrayList2<IContextInformation> proposals = new ArrayList2<>();

    for (ILangCompletionProposalComputer computer : computers) {
      Indexable<IContextInformation> computerProposals =
          computer.computeContextInformation(context);
      if (computerProposals != null) {
        proposals.addAll2(computerProposals);
      }

      updateErrorMessage(computer.getErrorMessage());
    }
    return proposals;
  }