public static IRubyObject deep(final Ruby runtime, final Object input) {
        if (input == null) {
            return runtime.getNil();
        }
        final Class<?> cls = input.getClass();
        final Rubyfier.Converter converter = CONVERTER_MAP.get(cls);
        if (converter != null) {
            return converter.convert(runtime, input);
        }
        return fallbackConvert(runtime, input, cls);
    }
@Test
    public void testDeepWithDouble() {
        Object result = Rubyfier.deep(RubyUtil.RUBY, 1.0D);
        assertEquals(RubyFloat.class, result.getClass());
        assertEquals(1.0D, ((RubyFloat)result).getDoubleValue(), 0);
    }