/// <summary>
    /// Gets the variable at index.
    /// </summary>
    /// <returns>The <see cref="``0 (owner=[Method SparkStream.GetVariableAt``1(index:System.Int32):``0])"/>.</returns>
    /// <param name="index">Index.</param>
    /// <typeparam name="T">The 1st type parameter.</typeparam>
    public T GetVariableAt <T>(int index)
    {
        if (receiveCount <= Count)
        {
            object returnValue = networkVariables.ElementAt(index).Value;

            if (typeof(SparkColor).IsAssignableFrom(returnValue.GetType()))
            {
                SparkColor sparkColor = (SparkColor)returnValue;
                return((T)(object)new Color(sparkColor.r, sparkColor.g, sparkColor.b, sparkColor.a));
            }

            if (typeof(SparkEnum).IsAssignableFrom(returnValue.GetType()))
            {
                SparkEnum sparkEnum = (SparkEnum)returnValue;
                return((T)Enum.Parse(sparkEnum.enumType, sparkEnum.enumString));
            }

            return((T)returnValue);
        }
        else
        {
            Debug.Log("Default value returned for this 'GetVariableAt'. " + default(T).ToString());
            return(default(T));
        }
    }
    // Color

    /// <summary>
    /// Sends a Color.
    /// </summary>
    /// <param name="color">Color.</param>
    public void SendNext(Color color)
    {
        SparkColor sparkColor = new SparkColor(color);

        networkVariables.Add(sendCount++, sparkColor);
    }