public List<Suit> getSemeLungo() {

        if (null == this.semeLungo) {

            List<Suit> list = new ArrayList<>();
            HashMap<Suit, Integer> map1 = new HashMap<>();
            final HashMap<Suit, Integer> map2 = new HashMap<>();
            int max = 0;
            int maxpunti = 0;

            for (Card c : cards) {
                Integer n = map1.get(c.getSuit());
                Integer p = map1.get(c.getSuit());
                if (null == n) {
                    map1.put(c.getSuit(), 1);
                    map2.put(c.getSuit(), c.getRank().getValue());
                    if (c.getRank().getValue() > maxpunti) {
                        maxpunti = c.getRank().getValue();
                    }
                } else {
                    map1.put(c.getSuit(), n + 1);
                    map2.put(c.getSuit(), p + c.getRank().getValue());
                    if (n + 1 > max) {
                        max = n + 1;
                    }
                    if (p + c.getRank().getValue() > maxpunti) {
                        maxpunti = p + c.getRank().getValue();
                    }
                }
            }
            for (Suit s : Suit.values()) {
                Integer n = map1.get(s);
                if (n != null && n == max) {
                    list.add(s);
                }
            }
            Comparator<Suit> cmp = new Comparator<Suit>() {
                @Override
                public int compare(Suit t, Suit t1) {
                    Integer n = map2.get(t);
                    Integer m = map2.get(t1);
                    return n.compareTo(m);
                }
            };
            Collections.sort(list, cmp);
            this.semeLungo = list;
        }
        return Collections.unmodifiableList(this.semeLungo);
    }