public void andWith(OrCondition other){
  List<AndCondition> expandedExpressionChildren=new ArrayList<AndCondition>();
  for (  AndCondition otherExprTerm : other.getAndTerms()) {
    for (    AndCondition currentExpr : children) {
      AndCondition currentAndConditionCopy=currentExpr.copy();
      currentAndConditionCopy.andWith(otherExprTerm.getTerms());
      expandedExpressionChildren.add(currentAndConditionCopy);
    }
  }
  children=expandedExpressionChildren;
}

public void andWith ( OrCondition other ) { List < AndCondition > expandedExpressionChildren = new ArrayList < AndCondition > ( ) ; for ( AndCondition otherExprTerm : other . getAndTerms ( ) ) { for ( AndCondition currentExpr : children ) { AndCondition currentAndConditionCopy = currentExpr . copy ( ) ; currentAndConditionCopy . andWith ( otherExprTerm . getTerms ( ) ) ; expandedExpressionChildren . add ( currentAndConditionCopy ) ; } } children = expandedExpressionChildren ; }
updates this orcondition in place so that it matches vertices that satisfy the current orcondition and that satisfy the provided orcondition .
