/// <summary>
        /// Constructor from a set of EncodedPositionBoards.
        /// </summary>
        /// <param name="boardHistory"></param>
        /// <param name="miscInfo"></param>
        private EncodedPositionWithHistory(EncodedPositionBoards boardHistory, EncodedTrainingPositionMiscInfo miscInfo)
        {
            BoardsHistory = boardHistory;
            MiscInfo      = miscInfo;

            // if (Marshal.SizeOf<LZBoard>() != LZBoardSizeInBytes) throw new Exception("Internal error, incorrect board size");
        }
 /// <summary>
 /// Overwrites the MiscInfo with a specified value.
 /// </summary>
 /// <param name="miscInfo"></param>
 public void SetMiscInfo(EncodedTrainingPositionMiscInfo miscInfo)
 {
     fixed(EncodedTrainingPositionMiscInfo *p = &MiscInfo)
     {
         *p = miscInfo;
     }
 }