a method in a stack is re-entrant allowing multiple concurrent invocations that do not interface with each other.
Recursive method: a method/function is recursive if it calls itself.
Idempotent method: are methods, which are written in such a way that repeated calls to the same method with the same arguments yield same results.