If you change this to `return GenerateID()`, we have the possibility of "tail recursion": http://stackoverflow.com/a/12116644/433558