+ methodWriter.return_(rule.location, BooleanConstant.TRUE);
+ }
+ }
+ if(!includes.isEmpty() || extensible) {
+ {
+ CodeWriter methodWriter = object.createMethod(w.getModuleWriter(), TVar.EMPTY_ARRAY, Types.PROC, Types.UNIT, new Type[] {Types.CHRContext});
+ initializer = methodWriter.getFunction();
+ for(IncludeStatement include : includes) {
+ methodWriter.apply(include.location,
+ new JavaMethod(true, runtimeRulesetClassName, "register", Types.PROC, Types.UNIT, new Type[] {runtimeRulesetType, Types.CHRContext, include.ruleset.runtimeRulesetType}),
+ object.getTarget(), methodWriter.getParameters()[0], include.storeVar);
+ }
+ if(extensible)
+ methodWriter.apply(Locations.NO_LOCATION,
+ new JavaMethod(true, runtimeRulesetClassName, "register", Types.PROC, Types.UNIT, new Type[] {runtimeRulesetType, Types.CHRContext}),
+ object.getTarget(), methodWriter.getParameters()[0]);
+ methodWriter.return_(location, NoRepConstant.UNIT);
+ }
+ {
+ CodeWriter methodWriter = object.createMethod(w.getModuleWriter(), TVar.EMPTY_ARRAY, Types.PROC, Types.UNIT, new Type[] {Types.CHRContext});
+ deinitializer = methodWriter.getFunction();
+ for(IncludeStatement include : includes) {
+ methodWriter.apply(include.location,
+ new JavaMethod(true, runtimeRulesetClassName, "unregister", Types.PROC, Types.UNIT, new Type[] {runtimeRulesetType, Types.CHRContext, include.ruleset.runtimeRulesetType}),
+ object.getTarget(), methodWriter.getParameters()[0], include.storeVar);
+ }
+ if(extensible)
+ methodWriter.apply(Locations.NO_LOCATION,
+ new JavaMethod(true, runtimeRulesetClassName, "unregister", Types.PROC, Types.UNIT, new Type[] {runtimeRulesetType, Types.CHRContext}),
+ object.getTarget(), methodWriter.getParameters()[0]);
+ methodWriter.return_(location, NoRepConstant.UNIT);