JDK Dynamic Proxy from http://www.dzone.com/snippets/jdk-dynamic-proxy