docs: @JRubyMethod
      public static IRubyObject detect_implicit(IRubyObject self, IRubyObject val) {
          IRubyObject tmp = TypeConverter.convertToTypeWithCheck(val, self.getRuntime().getString(), "to_str");
          if(!tmp.isNil()) {
              ByteList bl = ((RubyString)tmp).getByteList();
              String type_id = ImplicitScanner2.matchImplicit(Pointer.create(bl.bytes, bl.begin), bl.realSize);
              return self.getRuntime().newString(type_id);
          }
          return RubyString.newEmptyString(self.getRuntime());
      }