private FrameHeader createFrameHeader(char[] source) throws ID3ReaderException { if (source.length != HEADER_LENGTH) { throw new ID3ReaderException("Length of header must be " + HEADER_LENGTH); } String id = new String(source, 0, FRAME_ID_LENGTH); int size = (((int) source[4]) << 24) | (((int) source[5]) << 16) | (((int) source[6]) << 8) | source[7]; if (tagHeader != null && tagHeader.getVersion() >= 0x0400) { size = unsynchsafe(size); } char flags = (char) ((source[8] << 8) | source[9]); return new FrameHeader(id, size, flags); }