The call stack is not a list of methods which have been called, it is a list of methods which have been called but not returned to.
Let me explain
I'll give a simple example first of one function call. While running a program makes a call to the function. To do so it pushes the parameters and the location of itself onto the stack. (This is now at the top of the stack). It then calls the function which jumps the instruction pointer to where there code for that function is located. That function pulls it's parameters off the stack (it was just called so it knows they must be on the top of the stack) and runs it's local code. When it is done it pulls the return address off of the stack and uses it to return the instruction pointer to where this function was called from.
Now in the more complex case, any function can call any other function -- it will work exactly the same but now the stack will contain the first function called on the bottom of the most recently called function. Because you always take from the top of a stack you will always be returning to the location from where the last call was made.
OK, so when looking at the call stack in the debugger you will see all the function calls made prior to the location you are at in the program. At some point the code will return to those locations listed in the stack. However, if a function call was already returned from it will no longer be on the stack, it has been popped from the stack when that function returned.