Precondition Evaluation

I hope this hasn’t been discussed before, but I couldn’t find an appropriate thread.

I have categorized my database changes in three different layers: The lowest contains a file for each change. The next one has a file for each version, including all the changes of that version. The topmost layer is a single file including all versions. Each version file contains a precondition that checks if the previous version has been run.

If I try to upgrade a database from the first to the current version using the topmost file, I will get a “preconditions failed” error. I assumed that liquibase will try to execute the first version ( it is listed first in the topmost file and has no precondition ) and execute it. Then it will execute the second version, which needs the first version as precondition and so on.
But it seems that I was wrong. The documentation says: "Any preconditions defined at the changelog level in sub changelog files will be evaluated before any changesets are ran"
So liquibase tries to check ALL preconditions before it starts the update? This doesn’t make any sense to me. Of course it should check the precondition of an update when it executes that update.

I want to be able to run all my changes from a single file. But I do not want to remove my preconditions in case that anybody wants to run a single version change by itself. How can I achieve that?