https://georgearisty.dev/posts/java-variance/
Variance in Java - George Aristy