final AndDescr rootAnd = (AndDescr) rule.getLhs();
assertEquals( 2,
rootAnd.getDescrs().size() );
final OrDescr leftOr = (OrDescr) rootAnd.getDescrs().get( 0 );
assertEquals( 2,
leftOr.getDescrs().size() );
final NotDescr not = (NotDescr) leftOr.getDescrs().get( 0 );
final PatternDescr foo1 = (PatternDescr) not.getDescrs().get( 0 );
assertEquals( "Foo",
foo1.getObjectType() );
final PatternDescr foo2 = (PatternDescr) leftOr.getDescrs().get( 1 );
assertEquals( "Foo",
foo2.getObjectType() );
final OrDescr rightOr = (OrDescr) rootAnd.getDescrs().get( 1 );
assertEquals( 2,
rightOr.getDescrs().size() );
final PatternDescr shoes = (PatternDescr) rightOr.getDescrs().get( 0 );
assertEquals( "Shoes",
shoes.getObjectType() );
final PatternDescr butt = (PatternDescr) rightOr.getDescrs().get( 1 );
assertEquals( "Butt",
butt.getObjectType() );
}