@Override
	public int hashCode() {

		if (hashCode == null) {

			String impossible = "!\"£$%^&*()-=_+{}:@~;'#";

			StringBuilder builder = new StringBuilder();

			builder.append(result.toString());

			for (Value criterion : criteria) {

				builder.append(impossible);

				builder.append(criterion.toString());

			}

			hashCode = builder.toString().hashCode();

		}

		return hashCode;

	}