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 testDeepListWithInteger() throws Exception {
        List<Integer> data = new ArrayList<>();
        data.add(1);

        @SuppressWarnings("rawtypes")
        RubyArray rubyArray = (RubyArray)Rubyfier.deep(RubyUtil.RUBY, data);

        // toJavaArray does not newFromRubyArray inner elements to Java types \o/
        assertEquals(RubyFixnum.class, rubyArray.toJavaArray()[0].getClass());
        assertEquals(1L, ((RubyFixnum)rubyArray.toJavaArray()[0]).getLongValue());
    }