Source:
public void afterPropertiesSet() throws Exception { Assert.notNull(BindableProxyFactory.this.boundElementFactories, "'boundElementFactories' cannot be null"); Assert.notEmpty(BindableProxyFactory.this.boundElementFactories, "'boundElementFactories' cannot be empty"); ReflectionUtils.doWithMethods(this.type, new ReflectionUtils.MethodCallback() { @Override public void doWith(Method method) throws IllegalArgumentException { Input input = AnnotationUtils.findAnnotation(method, Input.class); if (input != null) { String name = BindingBeanDefinitionRegistryUtils.getChannelName(input, method); Class<?> returnType = method.getReturnType(); Object sharedBoundElement = locateSharedBoundElement(name, returnType); if (sharedBoundElement != null) { BindableProxyFactory.this.inputHolders.put(name, new BoundElementHolder(sharedBoundElement, false)); } else { BindableProxyFactory.this.inputHolders.put(name, new BoundElementHolder(getBoundElementFactory(returnType).createInput(name), true)); } } } }); ReflectionUtils.doWithMethods(this.type, new ReflectionUtils.MethodCallback() { @Override public void doWith(Method method) throws IllegalArgumentException { Output output = AnnotationUtils.findAnnotation(method, Output.class); if (output != null) { String name = BindingBeanDefinitionRegistryUtils.getChannelName(output, method); Class<?> returnType = method.getReturnType(); Object sharedBoundElement = locateSharedBoundElement(name, returnType); if (sharedBoundElement != null) { BindableProxyFactory.this.outputHolders.put(name, new BoundElementHolder(sharedBoundElement, false)); } else { BindableProxyFactory.this.outputHolders.put(name, new BoundElementHolder(getBoundElementFactory(returnType).createOutput(name), true)); } } } }); }

Target:
public void afterPropertiesSet() throws Exception { Assert.notEmpty(BindableProxyFactory.this.boundElementFactories, "'boundElementFactories' cannot be empty"); ReflectionUtils.doWithMethods(this.type, new ReflectionUtils.MethodCallback() { @Override public void doWith(Method method) throws IllegalArgumentException { Input input = AnnotationUtils.findAnnotation(method, Input.class); if (input != null) { String name = BindingBeanDefinitionRegistryUtils.getBindingTargetName(input, method); Class<?> returnType = method.getReturnType(); Object sharedBoundElement = locateSharedBoundElement(name, returnType); if (sharedBoundElement != null) { BindableProxyFactory.this.inputHolders.put(name, new BoundTargetHolder(sharedBoundElement, false)); } else { BindableProxyFactory.this.inputHolders.put(name, new BoundTargetHolder(getBoundElementFactory(returnType).createInput(name), true)); } } } }); ReflectionUtils.doWithMethods(this.type, new ReflectionUtils.MethodCallback() { @Override public void doWith(Method method) throws IllegalArgumentException { Output output = AnnotationUtils.findAnnotation(method, Output.class); if (output != null) { String name = BindingBeanDefinitionRegistryUtils.getBindingTargetName(output, method); Class<?> returnType = method.getReturnType(); Object sharedBoundElement = locateSharedBoundElement(name, returnType); if (sharedBoundElement != null) { BindableProxyFactory.this.outputHolders.put(name, new BoundTargetHolder(sharedBoundElement, false)); } else { BindableProxyFactory.this.outputHolders.put(name, new BoundTargetHolder(getBoundElementFactory(returnType).createOutput(name), true)); } } } }); }