public IEnumerable< KeyValuePair< ECardColor, CCardCollection > > Get_Side_Collections( EGameSide side )
		{
			return m_CardCollections[ side ];
		}
        private void Display_Side_Score_Data( EGameSide side, Dictionary< ECardColor, int > scores, CSideMatchStats side_data )
        {
            CClientResource.Output_Text< EClientTextID >( EClientTextID.Client_Match_Score_Side_Header, side.ToString() );
            scores.Apply( p => CClientResource.Output_Text< EClientTextID >( EClientTextID.Client_Match_Score_Color, p.Key.ToString(), p.Value ) );

            CClientResource.Output_Text< EClientTextID >( EClientTextID.Client_Match_Score_Game_Total, scores.Aggregate( 0, ( sum, val ) => sum + val.Value ) );
            CClientResource.Output_Text< EClientTextID >( EClientTextID.Client_Match_Score_Game_Results, side_data.GamesWon, side_data.GamesLost, side_data.GamesDrawn );
            CClientResource.Output_Text< EClientTextID >( EClientTextID.Client_Match_Score_Match_Total, side_data.Score );
        }
		public int Compute_Score( EGameSide side )
		{
			return m_CardCollections[ side ].Aggregate( 0, ( acc, pair ) => acc + pair.Value.Compute_Score() );
		}
		public void Compute_Scores( EGameSide side, Dictionary< ECardColor, int > side_scores )
		{
			m_CardCollections[ side ].Apply( n => side_scores[ n.Key ] = n.Value.Compute_Score() );
		}
		public CCardCollection Get_Card_Collection( EGameSide side, ECardColor color )
		{
			return ( m_CardCollections[ side ] )[ color ];
		}
 public CCardCollectionDelta( EGameSide side, ECardColor color, ECardValue value )
 {
     Side = side;
     Color = color;
     Value = value;
 }
		public CSideMatchStats Get_Side_Data( EGameSide side )
		{
			return m_SideResults[ side ];
		}