Da, ovde je greska u odluci sta ce biti Key.
Koliko sam razumeo "Pin" klasa je neki UX element koji zivi na formi i gde atributi tog elementa igraju glavnu ulogu u smislu hash funkcije.
(koja se zove za proveru proveru prisutnosti u dictionary)
Kao sto predlazu drugi za key treba koristiti primitivni tip, ili napraviti novu klasu koja ce imati u sebi instancu Pin-a i pored neki identifikator koji je unique u kontekstu gde su svi ostali. I taj identifikator koristiti da bude key. Naravno u tom slucaju kontrola kako se dodeljuje identifikator je odgovornost programera, a ne krajnjeg korisnika (u smislu da preko UX-a promeni key)