private boolean readUntilMatch(byte[] match, boolean withinBlock)
			        throws IOException {
			      int i = 0;
			      while (true) {
			        int b = fsin.read();
			        // increment position (bytes consumed)
			        pos++;

			        // end of file:
			        if (b == -1)
			          return false;
			        // save to buffer:
			        if (withinBlock)
			          buffer.write(b);

			        // check if we're matching:
			        if (b == match[i]) {
			          i++;
			          if (i >= match.length)
			            return true;
			        } else
			          i = 0;
			        // see if we've passed the stop point:
			        if (!withinBlock && i == 0 && pos >= end)
			          return false;
			      }
			    
		 }