Can you confirm this recursive behavior?  Because I think the call to save will use the local reference to self, and I'm not sure if it will be updated by the recursive calls to `make_guid`.   Better to maybe use a while loop?