bounded subtyping