code: @Override
  	public Object intercept(Object object, Method method, Object[] args,
  			MethodProxy methodProxy) throws Throwable {
  		Method delegateMethod = delegateClass.getMethod(method.getName(),
  				method.getParameterTypes());
  		if ("registerBeanDefinition".equals(method.getName())) {
  			if (beanDefinitionMap.containsKey(args[0])) {
  				List<BeanDefinition> definitions = beanDefinitionMap
  						.get(args[0]);
  				definitions.add((BeanDefinition) args[1]);
  			} else {
  				List<BeanDefinition> beanDefinitions = new ArrayList<BeanDefinition>();
  				beanDefinitions.add((BeanDefinition) args[1]);
  				beanDefinitionMap.put((String) args[0], beanDefinitions);
  			}
  		}
  		return delegateMethod.invoke(delegate, args);
  	}
docs: Intercepts method calls to the proxy and calls the corresponding method
  on the delegate.
  
  Collects bean definitions that are registered for later inspection.