public static SpheroDeviceMessage messageFromEncodedString(string encodedMessage)
    {
        SpheroDeviceMessageDecoder decoder =
            new SpheroDeviceMessageDecoder(encodedMessage);

        return((SpheroDeviceMessage)decoder.CreateObject());
    }
    public object DecodeObject(string key)
    {
        object value = null;

        dictionaryRepresentation.TryGetValue(key, out value);

        if (value is Array)
        {
            // need to decode the objects in the array
            Dictionary <string, object>[] encodedArray = (Dictionary <string, object>[])value;
            Object[] decodedArray = new Object[encodedArray.Length];
            int      index        = 0;
            foreach (Dictionary <string, object> encodedDictionary in encodedArray)
            {
                SpheroDeviceMessageDecoder itemDecoder =
                    new SpheroDeviceMessageDecoder(encodedDictionary);
                object decodedItem = itemDecoder.CreateObject();
                decodedArray[index++] = decodedItem;
            }
            value = decodedArray;
        }
        else if (value is Dictionary <string, object> )
        {
            SpheroDeviceMessageDecoder decoder =
                new SpheroDeviceMessageDecoder((Dictionary <string, object>)value);
            value = decoder.CreateObject();
        }

        return(value);
    }
	public object DecodeObject(string key)
	{
		object value = null;
		dictionaryRepresentation.TryGetValue(key, out value);
		
		if (value is Array) {
			// need to decode the objects in the array
			Dictionary<string,object>[] encodedArray = (Dictionary<string,object>[])value;
			Object[] decodedArray = new Object[encodedArray.Length];
			int index = 0;
			foreach(Dictionary<string,object> encodedDictionary in encodedArray)
			{
				SpheroDeviceMessageDecoder itemDecoder = 
					new SpheroDeviceMessageDecoder(encodedDictionary);
				object decodedItem = itemDecoder.CreateObject();
				decodedArray[index++] = decodedItem;
			}
			value = decodedArray;
		} else if (value is Dictionary<string, object>) {
			SpheroDeviceMessageDecoder decoder = 
				new SpheroDeviceMessageDecoder((Dictionary<string,object>)value);
			value = decoder.CreateObject();
		}
		
		return value;
	}
	public static SpheroDeviceMessage messageFromEncodedString(string encodedMessage)
	{
		SpheroDeviceMessageDecoder decoder = 
			new SpheroDeviceMessageDecoder(encodedMessage);		
		return (SpheroDeviceMessage)decoder.CreateObject();
	}