if ( !Comparison.equals( MAGIC, readSix( buffer))) throw new IllegalStateException( "Invalid magic number.");
final CharSequence magic = readSix( buffer); if ( !Comparison.equals( MAGIC, magic)) throw new IllegalStateException( "Invalid magic number '" + magic + "' of length '" + magic.length() + "'.");
	public void read( final ReadableByteChannel channel) throws IOException {		ByteBuffer descriptor = Util.fill( channel, CPIO_HEADER);		CharBuffer buffer = charset.decode( descriptor);		if ( !Comparison.equals( MAGIC, readSix( buffer))) throw new IllegalStateException( "Invalid magic number.");		inode = readEight( buffer);				final int mode = readEight( buffer);		permission = mode & 07777;		type = mode >>> 12;				uid = readEight( buffer);		gid = readEight( buffer);		nlink = readEight( buffer);		mtime = 1000L * readEight( buffer);		filesize = readEight( buffer);		devMajor = readEight( buffer);		devMinor = readEight( buffer);		rdevMajor = readEight( buffer);		rdevMinor = readEight( buffer);		int namesize = readEight( buffer);		checksum = readEight( buffer);		name = charset.decode(( ByteBuffer) Util.fill( channel, Util.round( namesize, 1)).limit( namesize - 1));	}