@Override
	public String value() {
		if (terms == null || terms.isEmpty()) {
			return "";
		}
		else if (terms.size() == 1) {
			return terms.get(0).value();
		}
		else {
			StringBuilder result = new StringBuilder("(");

			for (Iterator<Term> iterator = terms.iterator(); iterator.hasNext();) {
				Term term = iterator.next();
				result.append(term.value());

				if (iterator.hasNext()) {
					result.append(" " + operator + " ");
				}
			}

			result.append(")");

			return result.toString();
		}
	}