Using a magical construct to autogenerated the three instances also doesn't turn you into a 3x developer.
Because they're never exactly the same, and you end up with heaps of special cases and handling and it would've been easier to write it three times from the beginning.
And even if they start out as exactly the same, in any non-trivial codebase that won't hold true for long.