introductory path-dependent type example