RubyHash hash_result = new RubyHash(runtime);
Iterator<Object> itr = set.iterator();
while (itr.hasNext()) {
IRubyObject ruby_next = DiametricUtils.convertJavaToRuby(context, itr.next());
IRubyObject block_result = block.yield(context, ruby_next);
IRubyObject value = hash_result.callMethod(context, "[]", block_result);
if (value.isNil()) {
// new key
IRubyObject[] args = new IRubyObject[]{block_result, runtime.newArray()};
value = hash_result.callMethod(context, "[]=", args);
}