void RemoveNullAndLateAssists() {
		AssistTimestamp[] timestamps = new AssistTimestamp[assists.Values.Count];

		assists.Values.CopyTo(timestamps, 0);

		for(int i = 0; i < assists.Count; i++) {
			AssistTimestamp timestamp = timestamps[i];

			if(!timestamp.gameObject || Time.time - timestamp.time > maxAssistTime)
				assists.Remove(timestamp.gameObject);
		}
	}
	public void AddAssist(GameObject assist) {
		AssistTimestamp timestamp;

		RemoveNullAndLateAssists();

		if(assists.TryGetValue(assist, out timestamp))
			timestamp.time = Time.time;
		else {
			timestamp = new AssistTimestamp(assist, Time.time);
			assists.Add(assist, timestamp);
		}
	}
    void RemoveNullAndLateAssists()
    {
        AssistTimestamp[] timestamps = new AssistTimestamp[assists.Values.Count];

        assists.Values.CopyTo(timestamps, 0);

        for (int i = 0; i < assists.Count; i++)
        {
            AssistTimestamp timestamp = timestamps[i];

            if (!timestamp.gameObject || Time.time - timestamp.time > maxAssistTime)
            {
                assists.Remove(timestamp.gameObject);
            }
        }
    }
    public void AddAssist(GameObject assist)
    {
        AssistTimestamp timestamp;

        RemoveNullAndLateAssists();

        if (assists.TryGetValue(assist, out timestamp))
        {
            timestamp.time = Time.time;
        }
        else
        {
            timestamp = new AssistTimestamp(assist, Time.time);
            assists.Add(assist, timestamp);
        }
    }