private static String createInferenceCommandInternal(CycObject query, ELMt mt,
          InferenceParameters queryProperties, Map nlGenerationProperties,
          CycSymbol answerProcessingFunction, boolean optimizeVariables, CycAccess cycAccess) {
    if (queryProperties == null) {
      queryProperties = new DefaultInferenceParameters(cycAccess);
    }
    if ((answerProcessingFunction != null) && (!answerProcessingFunction.shouldQuote())) {
      answerProcessingFunction = new CycSymbol(answerProcessingFunction.getPackageName(),
              answerProcessingFunction.getSymbolName());
    }
    String processingFnStr = ((answerProcessingFunction != null) ? answerProcessingFunction.stringApiValue() : "nil");
    queryProperties.put(new CycSymbol(":CONTINUABLE?"), Boolean.TRUE);
    return "(open-cyc-start-continuable-query " + query.stringApiValue() + " " + mt.stringApiValue() + " " + queryProperties.stringApiValue() + " " + CycList.convertMapToPlist(nlGenerationProperties).stringApiValue() + " " + processingFnStr + " t " + (optimizeVariables ? "t" : "nil") + ")";
  }