public static Stella_Object guess(Symbol instName, Symbol slotName) {
    instName = ((Symbol)(instName.permanentify()));
    slotName = ((Symbol)(slotName.permanentify()));
    { Stella_Object probe = Logic.getInstance(instName);
      Surrogate renamed_Class = ((LogicObject)(LogicObject.getMostSpecificClasses(((LogicObject)(probe))).last())).surrogateValueInverse;
      String ruleName = renamed_Class.symbolName + "-match";
      Symbol ruleNameSymbol = Symbol.internSymbol(ruleName);
      List instances = Logic.allClassInstances(renamed_Class).listify();
      Surrogate slot = Logic.getDescription(slotName).surrogateValueInverse;

      if (!Logic.$CASE_RULE_NAMES$.memberP(ruleNameSymbol)) {
        System.out.println("Building match rule.");
        Logic.addAllClassInstancesToCaseRule(renamed_Class);
      }
      System.out.println("Generating answer");
      return (LogicObject.generateCaseBasedAnswer(((LogicObject)(probe)), slot, instances));
    }
  }