internal static Order FromProto(Msgs.Order o)
        {
            if (o.Fills.Count > 0)
            {
                return(new Order(o.OrderId, o.StockId, FromProto(o.Side), o.Quantity, (decimal)o.Price,
                                 DateTimeOffset.FromUnixTimeMilliseconds(o.TimeIssued), o.Fills.Select(x => FromProto(x)).ToImmutableList()));
            }

            return(new Order(o.OrderId, o.StockId, FromProto(o.Side), o.Quantity, (decimal)o.Price,
                             DateTimeOffset.FromUnixTimeMilliseconds(o.TimeIssued)));
        }
        internal static Msgs.Order ToProto(Order o)
        {
            var pOrder = new Msgs.Order()
            {
                OrderId  = o.OrderId, StockId = o.StockId, Price = (double)o.Price,
                Quantity = o.OriginalQuantity, Side = ToProto(o.Side), TimeIssued = o.TimeIssued.ToUnixTimeMilliseconds()
            };

            if (o.Fills.Count > 0)
            {
                pOrder.Fills.AddRange(o.Fills.Select(x => ToProto(x)));
            }

            return(pOrder);
        }