/// <summary> /// Prepends the specified piece and returns it as a new queue. /// </summary> /// <returns></returns> public PiecesQueue Prepend(Piece pieceToPrepend) { var pq = new PiecesQueue { pieceToPrepend }; pq.AddRange(this.Select(piece => new Piece(piece.Type, piece.OuterColor, piece.InnerColor))); return(pq); }