I once worked with a dev who was thoroughly committed to DRY. He'd find a private method somewhere that sort of looked reusable, but also made lots of assumptions about how it was called. Then he'd move it to a public method without documenting all the limitations and try to share it with other code that made different assumptions.
The natural consequence is that both sets of assumptions would have to get baked in somehow.
He'd take similar progressions all over the place to "remove duplication". It wasn't unusual for not only the complexity but also the line count (not including tests) to increase.
If you pointed that out, he'd say, yeah but duplication is always bad!
Needless to say, I don't agree.