Source: https://www.cp.eng.chula.ac.th/~chate/2110634/Adapter-Pattern.pdf