}
}
protected Result<Boolean> applyRuleClassEquals(final RuleEnvironment G, final RuleApplicationTrace _trace_, final ClassType left, final ClassType right) throws RuleFailedException {
it.xsemantics.example.fj.fj.Class _classref = left.getClassref();
it.xsemantics.example.fj.fj.Class _classref_1 = right.getClassref();
<BUG>boolean _equals = Objects.equal(_classref, _classref_1);

if (!_equals) {</BUG>
sneakyThrowRuleFailedException("left.classref == right.classref");
}

}
}
protected Result<Boolean> applyRuleExpressionAssignableToType(final RuleEnvironment G, final RuleApplicationTrace _trace_, final Expression expression, final Type right) throws RuleFailedException {
Type expressionType = null;
Result<Type> result = typeInternal(G, _trace_, expression);
checkAssignableTo(result.getFirst(), Type.class);
expressionType = (Type) result.getFirst();
subtypeInternal(G, _trace_, expressionType, right);
