// 3) Try using the Resetable interface.
// To avoid silent data truncation / data corruption, we fail
// in step three if the stream isn't resetable.
if (markSet) {
// 1) Reset the stream to the previously set mark.
srcIn.reset();
InputStreamUtil.skipFully(srcIn, hdrInfo.headerLength());
} else if (in instanceof FormatIdInputStream) {
// 2) Add a push back stream on top of the underlying
// source, and unread the surplus bytes we read. Set the
// push back stream to be the source of the data input obj.