Did the repetition become obvious before or after you saw both implementations? It’s possible that if you dried it up right away, you would’ve abstracted the wrong thing, and it’s way more obvious only in hindsight.
As I recall, it was after I saw the two implementations. I got curious and looked at the original FAA data and specifications and saw how much the two kinds of airspace have in common.
We never got that far. At that point, the code was what it was. Despite any possible design flaws, it worked. And dealing with FAA data that really never changes at all, once it worked, that was good enough.
"If it ain't broke..." ;-)
My job after that was to move on to other countries' airspace and obstacle data. So I tried to apply the appropriate amount of humidity on those.