@Override
  public void addProposal(
      TernCompletionProposalRec proposalItem,
      Object completion,
      IJSONObjectHelper jsonObjectHelper) {
    JSTernCompletionProposal proposal = internalCreateProposal(proposalItem);
    if (proposal.isFunction()) {
      // Add the function reference
      proposals.add(internalCreateProposal(proposalItem.changeType("fn")));
    }
    proposals.add(proposal);

    if (expandFunction) {
      // expand functions if the functions contains several "optionnal"
      // parameters.
      // ex : the expansion of
      // "fn(selector: string, context?: frameElement)"
      // returns an array of functions
      //
      String[] functions = proposal.expand();
      if (functions != null) {
        for (int i = 0; i < functions.length; i++) {
          proposals.add(internalCreateProposal(proposalItem.changeType(functions[i])));
        }
      }
    }
  }
  private JSTernCompletionProposal internalCreateProposal(TernCompletionProposalRec proposalItem) {
    JSTernCompletionProposal proposal = createProposal(proposalItem);
    proposal.setGenerateAnonymousFunction(generateAnonymousFunction);
    proposal.setIndentChars(indentChars);
    // TODO manage that with preferences
    proposal.setGenerateObjectValue(true);

    proposal.setTernFile(ternFile);
    proposal.setTernProject(ternProject);
    return proposal;
  }