Map<SentenceForm, SetMultimap<Integer, GdlConstant>> neededConstantsByForm,
SentenceFormModel model) throws InterruptedException {
if (conjunct instanceof GdlSentence) {
return addPossibleValuesToSentence(neededAndPossibleConstants, (GdlSentence) conjunct, curVar, neededConstantsByForm, model);
} else if (conjunct instanceof GdlNot) {
GdlSentence innerSentence = (GdlSentence) ((GdlNot) conjunct).getBody();
return addPossibleValuesToSentence(neededAndPossibleConstants, innerSentence, curVar, neededConstantsByForm, model);
} else if (conjunct instanceof GdlOr) {
throw new IllegalArgumentException("The SentenceDomainModelOptimizer is not designed for game descriptions with OR. Use the DeORer.");
} else if (conjunct instanceof GdlDistinct) {
return false;