public static RubyClass createMatchDataClass(Ruby runtime) { RubyClass matchDataClass = runtime.defineClass("MatchData", runtime.getObject(), MATCH_DATA_ALLOCATOR); runtime.setMatchData(matchDataClass); matchDataClass.index = ClassIndex.MATCHDATA; matchDataClass.setReifiedClass(RubyMatchData.class); runtime.defineGlobalConstant("MatchingData", matchDataClass); matchDataClass.kindOf = new RubyModule.KindOf() { @Override public boolean isKindOf(IRubyObject obj, RubyModule type) { return obj instanceof RubyMatchData; } }; matchDataClass.getMetaClass().undefineMethod("new"); matchDataClass.defineAnnotatedMethods(RubyMatchData.class); return matchDataClass; }