final AndDescr root = rule.getLhs();
final NotDescr not1 = (NotDescr) root.getDescrs().get( 0 );
final AndDescr and1 = (AndDescr) not1.getDescrs().get( 0 );
final PatternDescr state = (PatternDescr) and1.getDescrs().get( 0 );
final NotDescr not2 = (NotDescr) and1.getDescrs().get( 1 );
final AndDescr and2 = (AndDescr) not2.getDescrs().get( 0 );
final PatternDescr person = (PatternDescr) and2.getDescrs().get( 0 );
final PatternDescr cheese = (PatternDescr) and2.getDescrs().get( 1 );
final PatternDescr person2 = (PatternDescr) root.getDescrs().get( 1 );
final OrDescr or = (OrDescr) root.getDescrs().get( 2 );
final PatternDescr cheese2 = (PatternDescr) or.getDescrs().get( 0 );
final PatternDescr cheese3 = (PatternDescr) or.getDescrs().get( 1 );
assertEquals( state.getObjectType(),
"State" );
assertEquals( person.getObjectType(),
"Person" );
assertEquals( cheese.getObjectType(),
"Cheese" );
assertEquals( person2.getObjectType(),
"Person" );
assertEquals( cheese2.getObjectType(),
"Cheese" );
assertEquals( cheese3.getObjectType(),
"Cheese" );
}