// (&(!(version<min))(!(version>max))) - [min,max]
// (&(!(version<=min))(!(version>=max)) - (min,max)
private static VersionRange parseCompoundVersionRange(LDAPExpr left, LDAPExpr right)
throws NumberFormatException
{
VersionRange one = parseSimpleVersionRange(left);
VersionRange two = parseSimpleVersionRange(right);
// sanity check
if (one.isPointVersion() || two.isPointVersion())
{
throw new NumberFormatException(
"Unexpected point version in compound expression " + left);
}
VersionRange max = one.getFloor().equals(Version.emptyVersion) ? one : two;
VersionRange min = max == one ? two : one;
return new VersionRange(min.isOpenFloor(), min.getFloor(), max.getCeiling(),
max.isOpenCeiling());
}