package extras

class Person {
	def name
	def age
	
	def display = { println "Name: ${name}; age: ${age}" }
}

def p = new Person(name : 'Ken', age : 21)
p.display()

def show = { println "Name: ${name}; age: ${age}" }
//show()

//def registry = MetaClassRegistry.getInstance(MetaClassRegistry.DONT_LOAD_DEFAULT)
//def mClass = registry.getMetaClass(Person.class)
//mClass.setProperty(Person.class, p, 'show', show, false, false)
//show.setDelegate(Person.class)
//p.show()

class DMC extends DelegatingMetaClass {

	def DMC(klass) {
		super(klass)
		initialize()
	}
	
	//public Object getProperty(Object object, String property) {
	//    if(property == 'show')return delegate.getProperty(object, property);
	//}
}

def dmc = new DMC(Person.class)
def invoker = InvokerHelper.instance
invoker.metaRegistry.setMetaClass(Person.class, dmc)

