rulebook-core/src/main/java/com/deliveredtechnologies/rulebook/lang/RuleBookRuleBuilder.java
@SuppressWarnings("unchecked")
  public <T> RuleBookRuleWithFactTypeBuilder<T, U> withFactType(Class<T> factType) {
    Rule<T, U> rule = (Rule<T, U>)RuleBuilder.create(_ruleClass).withFactType(factType).build();
    _ruleBook.addRule(rule);
    return new RuleBookRuleWithFactTypeBuilder<>(rule);
  }
@SuppressWarnings("unchecked")
  public <T> RuleBookRuleWithFactTypeBuilder<T, U> withFactType(Class<T> factType) {
    Rule<T, U> rule = (Rule<T, U>)RuleBuilder.create(_ruleClass).withFactType(factType).build();
    _ruleBook.addRule(rule);
    return new RuleBookRuleWithFactTypeBuilder<>(rule);
  }
Specifies the fact type
@param factType  the type of object that facts are restricted to in the Rule.
@param <T>       the generic fact type
@return          RuleBookRuleWithFactTypeBuilder for building RuleBook Rules with a specific fact type