public zOSCMessage(byte[] sourceBuff, int startindex = 0)
    {
        UnityEngine.Debug.Log("Datratlen " + sourceBuff.Length);
        data             = sourceBuff;
        timeStamp        = DateTime.UtcNow.Ticks;
        objects          = null;
        parseStatus      = ParseStatus.raw;
        payloadOffsets   = null;
        typetagOffset    = 0;
        payloadOffset    = 0;
        _addressSegments = null;         // new List<string>();
        UnityEngine.Debug.Log("soruce " + data.ByteArrayToStringAsHex());
        OSCWordReader reader = new OSCWordReader();

        _address = data.UnpackString(reader);
        types    = null;
        // UnityEngine.Debug.Log("found address " + _address + " pos is now " + reader.readIndex);

        UnityEngine.Debug.Log("after alignment " + reader.readIndex);
        typetagOffset = reader.readIndex;
        //
        types = this.UnpackTypeTag(reader);
        //	reader.Align(data);
        // payloadOffset = reader.readIndex;
        UnityEngine.Debug.Log("found type count = " + typetagOffset + "  payloadOffset= " + payloadOffset + " types.count=" + types.Count);
        // //
        // //FindAddressesAndTypeTagIndex();
    }
    // 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);
    }