public void ReceiveData(string data)
        {
            if (data.Contains("\n"))
            {
                foreach (var curChar in data)
                {
                    if (curChar != '\n')
                    {
                        _buffer.Append(curChar);
                    }
                    else
                    {
                        var completePacketData = _buffer.ToString();
                        _buffer.Clear();

                        PacketComplete?.Invoke(this, new PrinterPacketParserPacketCompleteEventArgs()
                        {
                            Packet = PreProcess(completePacketData)
                        });
                    }
                }
            }
            else
            {
                _buffer.Append(data);
            }
        }
        public void Setup()
        {
            _serializer = new Serializer(); // Default w/ no customs

            _serializer.RegisterType(typeof(PacketSimpleStruct));
            _serializer.RegisterType(typeof(PacketSimpleClass));
            _serializer.RegisterType(typeof(string[]));
            _serializer.RegisterType(typeof(int[]));
            _serializer.RegisterType(typeof(int[][]));
            _serializer.RegisterType(typeof(PacketComplete));

            _random = new Random();

            // Packets
            _packetComplete = new PacketComplete(
                "hello world",
                3.14f,
                new[] { 4, 2, 0 },
                new[] { "lorem", "ipsum", "what follows this again?" },
                new[] { new[] { 1, 0, 0 }, new[] { 0, 1, 0 }, new[] { 0, 0, 1 } }); // identity mat3x3
        }