1) added some override annotations
2) improved thread safety by not only copying the incoming set, but also the sets it contains since they may as well be changed by other threads while we try to iterate over them