An anti-pattern that may occur is using any methods after calling ConsumeRemainingBytes and ConsumeRemainingBytesAsString. They both consume everything left and no call on the data provider should be allowed after it. This should be prevented by throwing exception on any subsequent call.