// public static string UnpackString(this byte[] data, ref int startOscSubFrame)
    // {
    //  int mult4 = startOscSubFrame * 4;
    //  var s = Encoding.ASCII.GetString(data, mult4, data.CountNonZeos(mult4));
    //  startOscSubFrame += (s.Length / 4 + 1);
    //  return s;
    // }
    public static string UnpackString(this byte[] data, OSCWordReader reader)
    {
        //	int mult4 = startOscSubFrame * 4;
        Debug.Log("counting zeroes from " + reader.readIndex + " = " + data.CountNonZeos(reader.readIndex));
        var s = Encoding.ASCII.GetString(data, reader.readIndex, data.CountNonZeos(reader.readIndex));

        Debug.Log(" unpacked string " + s.Length + " " + s);
        reader.Advance(s.Length, data);
        reader.Align(data);
        return(s);
    }
    public static List <System.Type> UnpackTypeTag(this zOSCMessage message, OSCWordReader reader)
    {
        UnityEngine.Debug.Log("Starting ubpack of typetags");
        byte[] data          = message.data;
        string typetagstring = data.UnpackString(reader);
        var    list          = new List <System.Type>();

        while (data[reader.readIndex] != 0)
        {
            list.AddTypeFromChar((char)data[reader.readIndex]);
            reader.Advance(data);
        }
        return(list);
    }