how does magarena generate a hash for the game state?

Generating a hash for a Magic game is very complicated and I was wondering how Magarena creates that hash? Which class is the hash code in? What guidelines did you use? Because I know that hash generation can be a deep topic.
Is score caching the same as a transposition table? Sometimes different game states create the same hash but it isn't a big problem.
(From your wiki.)
Is score caching the same as a transposition table? Sometimes different game states create the same hash but it isn't a big problem.
(From your wiki.)
Score Caching
This is a simple but very effective technique. During the evaluation, at the end of certain phases (First Main, End of Combat and Cleanup), a 64 bits game identifier is calculated which reflects the game state at that time. Then a score cache is checked if this state already occurred during a previous evaluation and when it is found the best score for that state is obtained from the cache and must no longer be searched. This technique has however a drawback, namely that different game states can map to the same identifier. During testing the speed benefit was however so significant that this drawback is overshadowed. The score cache is shared between all threads.