final PackageDescr packageDescr = new PackageDescr( "p1" );
final RuleDescr ruleDescr = new RuleDescr( "rule-1" );
packageDescr.addRule( ruleDescr );
final AndDescr lhs = new AndDescr();
ruleDescr.setLhs( lhs );
final PatternDescr pattern1 = new PatternDescr( Cheese.class.getName() );
lhs.addDescr( pattern1 );
final BindingDescr fieldBindingDescr = new BindingDescr( "$type",
"type" );
final FieldConstraintDescr literalDescr = new FieldConstraintDescr( "type" );
literalDescr.addRestriction( new LiteralRestrictionDescr( "==",
"stilton" ) );
pattern1.addConstraint( fieldBindingDescr );
pattern1.addConstraint( literalDescr );
final PatternDescr pattern2 = new PatternDescr( Cheese.class.getName() );
lhs.addDescr( pattern2 );
pattern2.addConstraint( fieldBindingDescr );
ruleDescr.setConsequence( "update(stilton);" );
builder.addPackage( packageDescr );