code: public boolean match(Object[] statements) {
  		boolean result = true;
  
  		if (operator == null) {
  			return ((Predicate) elementsArray[0]).match(statements);
  		}
  
  		switch (operator.getType()) {
  			case NOT: {
  				return !((Predicate) elementsArray[0]).match(statements);
  			}
  			case AND: {
  				for (int i = 0; i < elementsArray.length; i++) {
  					result = result && ((Predicate) elementsArray[i]).match(statements);
  				}
  				break;
  			}
  			case OR: {
  				result = false;
  				for (int i = 0; i < elementsArray.length; i++) {
  					result = result || ((Predicate) elementsArray[i]).match(statements);
  				}
  				break;
  			}
  		}
  		return result;
  	}
docs: Answers questions like:
  <ul>
  <li>does "r|w|x" match {"r","x"} (true).</li>
  <li>does "r|w&x" contain {"r","x"} (true).</li>
  <li>does "r|w&x" contain {"r"} (true).</li>
  <li>does "r|w&x" contain {"x"} (false).</li>
  </ul>
  
  @param statements
  @return true if the expression logically matches the statement