When designing this maze, drawing out the maze was the last step. The first step was to consider the maze more abstractly, and decide what would connect to what.
So I decided that there would be two smaller copies of the maze, called A and B. Each copy of the maze can be specified with a finite sequence of As and Bs. For instance, if I go down a level into B, and then down a level into A, this can be described with the sequence BA.
But to fully describe a position within the maze, we need more than just As and Bs to specify which copy of the maze we're talking about. We also need to specify where we are within that copy. So I decided there would be two checkpoints, called 1 and 2.
From each of these checkpoints, there is a set of actions you can take to move from one place to another. For instance, starting at position 2, you can go down A, down B, and end up at position 1. I denoted this action as 2-AB-1, because it starts at 2, ends at 1, and goes down AB.
Some of the actions would also go up a level. I denoted those with inverse notation, like A-1. Note that you can also take any of these actions backwards.
Here's the list of actions I came up with: