private StandardAlgebraicNotation(CastleSide side)
 {
     Piece      = ChessPieceName.King;
     CastleMove = side;
     FromFileX  = King.StartPositionFor(Colours.White).X;
     ToFileX    = side == CastleSide.Queen ? 3 : 7;
 }
 public StandardAlgebraicNotation(ChessPieceName piece,
                                  int?fromFileX, int?fromRankY, int toFileX, int toRankY,
                                  SanMoveTypes moveType         = SanMoveTypes.Move,
                                  ChessPieceName?promotionPiece = null, bool inCheck = false)
 {
     Piece          = piece;
     FromFileX      = fromFileX;
     FromRankY      = fromRankY;
     ToFileX        = toFileX;
     ToRankY        = toRankY;
     MoveType       = moveType;
     PromotionPiece = promotionPiece;
     InCheck        = inCheck;
     CastleMove     = CastleSide.None;
 }