I do not care about the nested classes. I care about being forced to look at things that don’t matter. Tell me one story at a time.
The whole point of not putting all the code in one file is that the stuff I have to think about now is in one place and stuff I don’t need to see now hides in some other file. Oh sure, you can mash it all into one file and watch it grow but just because it still compiles doesn’t mean that’s a good idea.
Organize code for humans. We like short, pointed stories about few subjects. Not thousand line odyssey’s about every possible thing that can be crammed into this particular file.
But, before I let you break up that file you have to solve one of the hardest problems in computer science: you have to think of good names.
You can cause an even bigger mess by breaking this up with poor names. Names are how I find this stuff. Give me good names, names that don’t surprise me when I look inside, names that help me find what I’m looking for. You can break it up as finely as the compiler will let you. Because I just need the parts of the story that matter to me. I don’t need every also-ran.
Pay some heed to the current organization of the code, of course. Using a better style won’t shine if it drastically clashes with the current style. How you feel while breaking up the code isn’t important. It’s how you’re making the next poor coder feel.
So talk with your team. Tell them the names you have in mind. Show them how it would look. See what they think. Be sure the pain you save them from is worse than the pain you cause.