RE the point about catching mistakes involving far apart pieces of code, they are clear that it's "interprocedural", so the analysis is only within a single function at a time. Like with rust, there is a focus on annotating function inputs and outputs, with a lot of inference within functions. I am curious if there's a way to quantify how quickly the safety propagates as you do gradual typing. If you annotate 20% of the functions in a typical codebase, does 90% of the runtime data pass through an annotated function boundary at some point, catching 95% of the ownership bugs?