code: protected Object getDatabaseMetaDataSurrogate(final Method method,
              final Object[] args) throws Throwable {
  
          if (this.dbmdHandler == null) {
              Object dbmd = method.invoke(this.delegate, args);
  
              this.dbmdHandler = new WrapperInvocationHandler(dbmd, this);
          }
  
          return this.dbmdHandler.surrogate;
      }
docs: Surrogate for any method of the delegate that returns
  an instance of <tt>DatabaseMetaData</tt> object. <p>
  
  @param method returning <tt>DatabaseMetaData</tt>
  @param args to the method
  @throws java.lang.Throwable the exception, if any, thrown by invoking
  the given method with the given arguments upon the delegate
  @return surrogate for the underlying DatabaseMetaData object