opts is definitely optional in bson_java but I didn't want to change the API of the java extensions, even though it's highly probable that no one is using it directly.

I have tried overloading the constructor like this but it doesn't seem to work.

    public RubyBSONCallback(Ruby runtime) {
        RubyHash default_opts = createHash();
        new RubyBSONCallback(_runtime, default_opts);
    }

    public RubyBSONCallback(Ruby runtime, RubyHash opts) {
      // inits
    }

I get

    no constructorfor arguments (org.jruby.Ruby,org.jruby.RubyHash) on Java::OrgJbson::RubyBSONCallback