code: public static boolean toBoolean(Object obj, boolean defaultValue) {
  
          if (obj == null) {
              return defaultValue;
          }
  
          if (obj instanceof Boolean) {
              return ((Boolean) obj).booleanValue();
          } else if (obj instanceof Number || obj.getClass().isPrimitive()) {
              int value = toInt(obj);
              return value != 0 ? true : false;
          } else if (obj instanceof Value) {
              return ((Value) obj).booleanValue();
          } else if (obj instanceof String || obj instanceof CharSequence) {
              String str = Conversions.toString(obj);
              if (str.length() == 0) {
                  return false;
              }
              if (str.equals("false")) {
                  return false;
              } else {
                  return true;
              }
          } else if (isArray(obj)) {
              return len(obj) > 0;
          } else if (obj instanceof Collection) {
  
              if (len(obj) > 0) {
                  List list = Lists.list((Collection) obj);
                  while (list.remove(null)) {
  
                  }
                  return Lists.len(list) > 0;
              } else {
                  return false;
              }
          } else {
              return toBoolean(Conversions.toString(obj));
          }
      }
docs: Converts the value to boolean, and if it is null, it uses the default value passed.
  
  @param obj          value to convert to boolean
  @param defaultValue default value
  @return obj converted to boolean