public static LookupDefaultMultiValue create(String valueString, LookupDefaultValue.Type valueType) {
        requireNonNull(valueString, "valueString cannot be null");
        requireNonNull(valueType, "valueType cannot be null");

        Map<Object, Object> value;
        try {
            switch (valueType) {
                case OBJECT:
                    value = OBJECT_MAPPER.readValue(valueString, TypeReferences.MAP_OBJECT_OBJECT);
                    break;
                case NULL:
                    value = null;
                    break;
                default:
                    throw new IllegalArgumentException("Could not convert <" + valueString + "> to multi value type <" + valueType + ">");
            }
        } catch (IllegalArgumentException e) {
            throw e;
        } catch (Exception e) {
            throw new IllegalArgumentException("Could not parse JSON "+ valueType.toString().toLowerCase(Locale.ENGLISH) + " value <" + valueString + ">", e);
        }

        return builder()
                .valueString(valueString)
                .valueType(valueType)
                .value(value)
                .build();
    }
@Test
    public void createSingleBoolean() throws Exception {
        expectedException.expect(IllegalArgumentException.class);

        LookupDefaultMultiValue.create("true", LookupDefaultMultiValue.Type.BOOLEAN);
    }