private int calculateInternalHashCode(Cell[] currentBoard){
        
        int maxLength = (currentBoard.length <= CELL_NUMBER_TO_CALCULATE_HASHCODE) 
                      ?  currentBoard.length
                      :  CELL_NUMBER_TO_CALCULATE_HASHCODE;
        
        Cell[] limitedCurrentBoard = Arrays.copyOfRange(currentBoard, 0, maxLength);
        BigInteger biHashcode = ChessTools.calculateRepresentationNumber(limitedCurrentBoard);
        
        int out = biHashcode.intValue();
        
        return out;
    }