class ImmutableJsonKey implements JsonKey {

    public static JsonKey of(final CharSequence keyValue) {
        requireNonNull(keyValue, "The key string must not be null!");

        if (JsonKey.class.isAssignableFrom(keyValue.getClass())) {
            return ((JsonKey) keyValue);
        } else  if (0 == keyValue.length()) {
            throw new IllegalArgumentException("The key string must not be empty!");
        }

        return new ImmutableJsonKey(keyValue.toString());
    }

    private  ImmutableJsonKey(final String theKeyValue);

}