I've been building an 'extract function' refactor feature. It's surprisingly nuanced.
Where do you put the extracted function? Once you've done the static analysis, what order do you use for the parameters?
Assertions are a surprisingly nuanced design space. In a test, if I assert `x < y`, I really want to see the values of x and y when it fails.
Do you define an API for every possible predicate (Python's assertLess, expect.js) or try to support the native syntax (c.f. pytest)?
A really nuanced take from the Department of Defence on the economics of OSS and why people contribute fixes: