code: @Override
      public ValueComparator compare(Value val) {
          if (val == null) {
              return ValueComparator.NOT_EQUAL_TO;
          }
          switch (val.getType()) {
              case BOOLEANVALUE:
                  if (this.val == ((BooleanValue) val).val) {
                      return ValueComparator.EQUAL_TO;
                  } else {
                      return ValueComparator.NOT_EQUAL_TO;
                  }
              case VALUELIST:
                  ValueList<?> vl = (ValueList<?>) val;
                  return vl.contains(this) ? ValueComparator.IN : ValueComparator.NOT_IN;
              default:
                  return ValueComparator.NOT_EQUAL_TO;
          }
      }
docs: Returns {@link ValueComparator#UNKNOWN}, as boolean values do not
  have a natural order, unless the provided value is a value list, for
  which this method tests for membership in the list.
  
  @param o a {@link Value}.
  @return {@link ValueComparator#UNKNOWN}, if the provided value is not a
  value list. If the provided value is a value list, it returns
  {@link ValueComparator#IN} if this boolean value is a member and
  {@link ValueComparator#NOT_IN} if this boolean value is not a member.