https://medium.com/@cstoppgmr/relearning-java-what-principles-are-dynamic-proxies-based-on-726ea74d6f0a