private static CallSite createPojoSite ( CallSite callSite , Object receiver , Object [ ] args ) { final Class klazz = receiver . getClass ( ) ; MetaClass metaClass = InvokerHelper . getMetaClass ( receiver ) ; if ( ! GroovyCategorySupport . hasCategoryInCurrentThread ( ) && metaClass instanceof MetaClassImpl ) { final MetaClassImpl mci = ( MetaClassImpl ) metaClass ; final ClassInfo info = mci . getTheCachedClass ( ) . classInfo ; if ( info . hasPerInstanceMetaClasses ( ) ) { return new PerInstancePojoMetaClassSite ( callSite , info ) ; } else { return mci . createPojoCallSite ( callSite , receiver , args ) ; } } ClassInfo info = ClassInfo . getClassInfo ( klazz ) ; if ( info . hasPerInstanceMetaClasses ( ) ) return new PerInstancePojoMetaClassSite ( callSite , info ) ; else return new PojoMetaClassSite ( callSite , metaClass ) ; }
otherwise or if method doesn t exist we make call via POJO meta class