docs: public static AmazonS3 createProxy(AmazonS3 amazonS3) {
  		Assert.notNull(amazonS3, "AmazonS3 client must not be null");
  
  		if (AopUtils.isAopProxy(amazonS3)) {
  
  			Advised advised = (Advised) amazonS3;
  			for (Advisor advisor : advised.getAdvisors()) {
  				if (ClassUtils.isAssignableValue(SimpleStorageRedirectInterceptor.class,
  						advisor.getAdvice())) {
  					return amazonS3;
  				}
  			}
  
  			try {
  				advised.addAdvice(new SimpleStorageRedirectInterceptor(
  						(AmazonS3) advised.getTargetSource().getTarget()));
  			}
  			catch (Exception e) {
  				throw new RuntimeException(
  						"Error adding advice for class amazonS3 instance", e);
  			}
  
  			return amazonS3;
  		}
  
  		ProxyFactory factory = new ProxyFactory(amazonS3);
  		factory.setInterfaces(AmazonS3.class);
  		factory.addAdvice(new SimpleStorageRedirectInterceptor(amazonS3));
  
  		return (AmazonS3) factory.getProxy();
  	}