public IEnumerable<DataFrame> ReadFrames()
        {
            Debug.Assert(State == DataFrameReaderState.Pending);

            while (State == DataFrameReaderState.Pending)
            {
                var frame = TryReadFrame(this.pendingData);
                UpdateData();

                if (frame == null)
                {
                    State = DataFrameReaderState.Receiving;
                    break;
                }

                // Transition
                if (DataRemaining)
                    State = DataFrameReaderState.Pending;
                else
                    State = DataFrameReaderState.Empty;

                yield return (frame);
            }

            Debug.Assert(State == DataFrameReaderState.Empty || State == DataFrameReaderState.Receiving);
        }
 private void AppendCore(byte[] someBytes, int c)
 {
     pendingData.Write(someBytes, 0, c);
     pendingData.Position = 0;
     State = DataFrameReaderState.Pending;
 }