That’s a common thing that happens with factories. They become so complex you might as well write the underlying code directly.

The team’s mistake was that they didn’t wait long enough to observe how this code evolves. At the time it looked like all navigation buttons need to look the same. But one button was not like the others, it had different semantics.