The values() method, that you are calling in line 42 on an instance of Enumerator, is a static method in Enumerator. Do you understand what "static" means? It means that it's a method that works on the whole class, rather than on a specific instance of the class.
You're confused exactly because of the reason that Stephan explains: it's misleading to call static methods on instances, because it looks like it should be doing something with the specific instance, while it is not. Calling values() on a specific instance will not make it work differently from calling it on the class itself.
Rewrite line 42 like this:
(I think it's a mistake that Java even allows you to call static methods on instances, because it's too confusing and bad style and isn't useful for anything).
Campbell: That's a feature that Java inherited from C++. When Java was new, it was the intention of the language designers that it looked familiar to C++ programmers. Now we're stuck with this feature forever...