p1.boundName = "p1";
m.addLhsItem( p1 );
FactPattern p = new FactPattern("Goober");
m.addLhsItem( p );
CompositeFieldConstraint comp = new CompositeFieldConstraint();
comp.compositeJunctionType = CompositeFieldConstraint.COMPOSITE_TYPE_OR;
p.addConstraint( comp );
final SingleFieldConstraint X = new SingleFieldConstraint();
X.fieldName = "goo";
X.constraintValueType = SingleFieldConstraint.TYPE_LITERAL;
X.value = "foo";
X.operator = "==";
X.connectives = new ConnectiveConstraint[1];
X.connectives[0] = new ConnectiveConstraint();
X.connectives[0].constraintValueType = ConnectiveConstraint.TYPE_LITERAL;
X.connectives[0].operator = "|| ==";
X.connectives[0].value = "bar";
comp.addConstraint( X );
final SingleFieldConstraint Y = new SingleFieldConstraint();
Y.fieldName = "goo2";
Y.constraintValueType = SingleFieldConstraint.TYPE_LITERAL;
Y.value = "foo";
Y.operator = "==";
comp.addConstraint( Y );
CompositeFieldConstraint comp2 = new CompositeFieldConstraint();
comp2.compositeJunctionType = CompositeFieldConstraint.COMPOSITE_TYPE_AND;
final SingleFieldConstraint Q1 = new SingleFieldConstraint();
Q1.fieldName = "goo";
Q1.operator = "==";
Q1.value = "whee";
Q1.constraintValueType = ISingleFieldConstraint.TYPE_LITERAL;
comp2.addConstraint( Q1 );
final SingleFieldConstraint Q2 = new SingleFieldConstraint();
Q2.fieldName = "gabba";
Q2.operator = "==";
Q2.value = "whee";
Q2.constraintValueType = ISingleFieldConstraint.TYPE_LITERAL;
comp2.addConstraint( Q2 );
//now nest it
comp.addConstraint( comp2 );