Now, some languages don't make it easy to write expressive, opaque types (it's one reason I love Rust), but you can still get review benefit from the pattern of having separate types for separate contexts, even if a motivated user can get around them *cough*JavaReflection*cough*.