// Path: src/main/java/org/poker/api/core/Card.java
// @Immutable
// public final class Card {
// 
//     private static final String STRING_RANK_CARDS = "23456789TJQKA";
// 
//     public enum Suit {
// 
//         SPADE('♠'), HEART('♥'), DIAMOND('♦'), CLUB('♣');
//         
//         private final char c;
// 
//         private Suit(char c) {
//             this.c = c;
//         }
// 
//     }
// 
//     public enum Rank {
// 
//         TWO, TRHEE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE
//     }
// 
//     private final Suit suit;
//     private final Rank rank;
// 
//     public Card(Suit suit, Rank rank) {
//         ExceptionUtil.checkNullArgument(rank, "rank");
//         ExceptionUtil.checkNullArgument(suit, "suit");
//         this.suit = suit;
//         this.rank = rank;
//     }
// 
//     public Suit getSuit() {
//         return suit;
//     }
// 
//     public Rank getRank() {
//         return rank;
//     }
// 
//     @Override
//     public int hashCode() {
//         return rank.ordinal() * Suit.values().length + suit.ordinal();
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         boolean result = true;
//         if (this != obj) {
//             result = false;
//             if (obj != null && getClass() == obj.getClass()) {
//                 result = hashCode() == ((Card) obj).hashCode();
//             }
//         }
//         return result;
//     }
// 
//     @Override
//     public String toString() {
//         return STRING_RANK_CARDS.substring(rank.ordinal(), rank.ordinal() + 1) + suit.c;
//     }
// }
// 
// Path: src/main/java/org/poker/api/game/TexasHoldEmUtil.java
// public enum PlayerState {
// 
//     READY(true),
//     OUT(false),
//     FOLD(false),
//     CHECK(true),
//     CALL(true),
//     RAISE(true),
//     ALL_IN(false);
// 
//     private final boolean active;
// 
//     private PlayerState(boolean isActive) {
//         this.active = isActive;
//     }
// 
//     public boolean isActive() {
//         return active;
//     }
// }


import net.jcip.annotations.NotThreadSafe;
import org.poker.api.core.Card;
import org.poker.api.game.TexasHoldEmUtil.PlayerState;

    public Card[] getCards() {
        return new Card[]{cards[0], cards[1]};
    }

    public void setCards(Card[] cards) {
        this.cards[0] = cards[0];
        this.cards[1] = cards[1];
    }

    public PlayerState getState() {
        return state;
    }

    public void setState(PlayerState state) {
        this.state = state;
    }

    public int getErrors() {
        return errors;
    }

    public void setErrors(int errors) {
        this.errors = errors;
    }

    public Card getCard(int index) {
        return cards[index];
    }

// Path: src/main/java/org/poker/api/core/Card.java
// @Immutable
// public final class Card {
// 
//     private static final String STRING_RANK_CARDS = "23456789TJQKA";
// 
//     public enum Suit {
// 
//         SPADE('♠'), HEART('♥'), DIAMOND('♦'), CLUB('♣');
//         
//         private final char c;
// 
//         private Suit(char c) {
//             this.c = c;
//         }
// 
//     }
// 
//     public enum Rank {
// 
//         TWO, TRHEE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE
//     }
// 
//     private final Suit suit;
//     private final Rank rank;
// 
//     public Card(Suit suit, Rank rank) {
//         ExceptionUtil.checkNullArgument(rank, "rank");
//         ExceptionUtil.checkNullArgument(suit, "suit");
//         this.suit = suit;
//         this.rank = rank;
//     }
// 
//     public Suit getSuit() {
//         return suit;
//     }
// 
//     public Rank getRank() {
//         return rank;
//     }
// 
//     @Override
//     public int hashCode() {
//         return rank.ordinal() * Suit.values().length + suit.ordinal();
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         boolean result = true;
//         if (this != obj) {
//             result = false;
//             if (obj != null && getClass() == obj.getClass()) {
//                 result = hashCode() == ((Card) obj).hashCode();
//             }
//         }
//         return result;
//     }
// 
//     @Override
//     public String toString() {
//         return STRING_RANK_CARDS.substring(rank.ordinal(), rank.ordinal() + 1) + suit.c;
//     }
// }
// 
// Path: src/main/java/org/poker/api/game/TexasHoldEmUtil.java
// public enum PlayerState {
// 
//     READY(true),
//     OUT(false),
//     FOLD(false),
//     CHECK(true),
//     CALL(true),
//     RAISE(true),
//     ALL_IN(false);
// 
//     private final boolean active;
// 
//     private PlayerState(boolean isActive) {
//         this.active = isActive;
//     }
// 
//     public boolean isActive() {
//         return active;
//     }
// }


// Path: src/main/java/org/poker/api/game/PlayerInfo.java
import net.jcip.annotations.NotThreadSafe;
import org.poker.api.core.Card;
import org.poker.api.game.TexasHoldEmUtil.PlayerState;


    public Card[] getCards() {
        return new Card[]{cards[0], cards[1]};
    }

    public void setCards(Card[] cards) {
        this.cards[0] = cards[0];
        this.cards[1] = cards[1];
    }

    public PlayerState getState() {
        return state;
    }

    public void setState(PlayerState state) {
        this.state = state;
    }

    public int getErrors() {
        return errors;
    }

    public void setErrors(int errors) {
        this.errors = errors;
    }

    public Card getCard(int index) {
        return cards[index];
    }

    public void setCards(Card card0, Card card1) {