RubyClass objectClass = runtime.getObject();
RubyClass classClass = runtime.getClassClass();
RubyClass procClass = runtime.getProc();
objectClass.addMethod("class", new DefaultMethod(objectClass, "class", null, null, Visibility.PUBLIC, null) {
public Vertex call(Graph graph, Template template, IRubyObject receiver, IRubyObject[] args, Vertex[] argVertices, Block block) {
return graph.createFreeSingleTypeVertex(receiver.getMetaClass());
}
});
classClass.addMethod("superclass", new DefaultMethod(classClass, "superclass", null, null, Visibility.PUBLIC, null) {
public Vertex call(Graph graph, Template template, IRubyObject receiver, IRubyObject[] args, Vertex[] argVertices, Block block) {
if (receiver instanceof RubyClass) {
return graph.createFreeSingleTypeVertex(((RubyClass) receiver).getSuperClass());
} else {
return null;