@JRubyMethod(rest = true, visibility = Visibility.PRIVATE)
public IRubyObject initialize(ThreadContext context, IRubyObject[] _events, final Block block) {
final Ruby runtime = context.runtime;
if (!block.isGiven()) throw runtime.newThreadError("must be called with a block");
ArrayList<RubyEvent> events = new ArrayList<RubyEvent>(_events.length);
for (int i = 0; i < _events.length; i++) {
IRubyObject _event = _events[i];
if (_event instanceof RubySymbol || _event instanceof RubyString) {