public Object invoke(Object proxy, Method method, Object[] args)
        throws Throwable {
    	//return null;
      String methodName = method.getName();
      if (CLOSE.hashCode() == methodName.hashCode() && CLOSE.equals(methodName)) {
        dataSource.pushConnection(this);
        return null;
      } else {
        try {
          return method.invoke(getValidConnection(), args);
        } catch (Throwable t) {
        	return null;
//          throw ClassInfo.unwrapThrowable(t);
        }
      }
    }