This makes me uneasy: Node and String should not be interchangeable, we should use a value class for this. This would also make it obvious when hashing happens, because that is a very expensive operation.