code: public static Boolean toBooleanObject(final Integer value, final Integer trueValue, final Integer falseValue, final Integer nullValue) {
          if (value == null) {
              if (trueValue == null) {
                  return Boolean.TRUE;
              }
              if (falseValue == null) {
                  return Boolean.FALSE;
              }
              if (nullValue == null) {
                  return null;
              }
          } else if (value.equals(trueValue)) {
              return Boolean.TRUE;
          } else if (value.equals(falseValue)) {
              return Boolean.FALSE;
          } else if (value.equals(nullValue)) {
              return null;
          }
          // no match
          throw new IllegalArgumentException("The Integer did not match any specified value");
      }
docs: <p>Converts an Integer to a Boolean specifying the conversion values.</p>
  
  <p>NOTE: This returns null and will throw a NullPointerException if unboxed to a boolean. </p>
  
  <pre>
  BooleanUtils.toBooleanObject(Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(2), Integer.valueOf(3)) = Boolean.TRUE
  BooleanUtils.toBooleanObject(Integer.valueOf(2), Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3)) = Boolean.FALSE
  BooleanUtils.toBooleanObject(Integer.valueOf(3), Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3)) = null
  </pre>
  
  @param value  the Integer to convert
  @param trueValue  the value to match for {@code true}, may be {@code null}
  @param falseValue  the value to match for {@code false}, may be {@code null}
  @param nullValue  the value to to match for {@code null}, may be {@code null}
  @return Boolean.TRUE, Boolean.FALSE, or {@code null}
  @throws IllegalArgumentException if no match