docs: public Object methodMissing(String name, Object arg) {
          Object[] args = (Object[])arg;
  
          if(args.length == 0)
  			throw new MissingMethodException(name,getClass(),args);
  
  		if(args[0] instanceof Closure) {
              // abstract bean definition
              return invokeBeanDefiningMethod(name, args);
  		}
  		else if(args[0] instanceof Class || args[0] instanceof RuntimeBeanReference || args[0] instanceof Map) {
  			return invokeBeanDefiningMethod(name, args);
  		}
  		else if (args.length > 1 && args[args.length -1] instanceof Closure) {
  			return invokeBeanDefiningMethod(name, args);
  		}
          WebApplicationContext ctx = springConfig.getUnrefreshedApplicationContext();
          MetaClass mc = DefaultGroovyMethods.getMetaClass(ctx);
          if(!mc.respondsTo(ctx, name, args).isEmpty()){
              return mc.invokeMethod(ctx,name, args);
          }
          return this;
  	}