def FromBinary(cls, record_data, record_count=1):
        """Create an UpdateRecord subclass from binary record data.

        This should be called with a binary record blob (NOT including the
        record type header) and it will decode it into a ReflashTileRecord.

        Args:
            record_data (bytearray): The raw record data that we wish to parse
                into an UpdateRecord subclass NOT including its 8 byte record header.
            record_count (int): The number of records included in record_data.

        Raises:
            ArgumentError: If the record_data is malformed and cannot be parsed.

        Returns:
            ReflashTileRecord: The decoded reflash tile record.
        """

        if len(record_data) < ReflashTileRecord.RecordHeaderLength:
            raise ArgumentError("Record was too short to contain a full reflash record header",
                                length=len(record_data), header_length=ReflashTileRecord.RecordHeaderLength)

        offset, data_length, raw_target, hardware_type = struct.unpack_from("<LL8sB3x", record_data)

        bindata = record_data[ReflashTileRecord.RecordHeaderLength:]
        if len(bindata) != data_length:
            raise ArgumentError("Embedded firmware length did not agree with actual length of embeded data",
                                length=len(bindata), embedded_length=data_length)

        target = _parse_target(raw_target)
        if target['controller']:
            raise ArgumentError("Invalid targetting information, you "
                                "cannot reflash a controller with a ReflashTileRecord", target=target)

        return ReflashTileRecord(target['slot'], bindata, offset, hardware_type)
Create an UpdateRecord subclass from binary record data.

        This should be called with a binary record blob (NOT including the
        record type header) and it will decode it into a ReflashTileRecord.

        Args:
            record_data (bytearray): The raw record data that we wish to parse
                into an UpdateRecord subclass NOT including its 8 byte record header.
            record_count (int): The number of records included in record_data.

        Raises:
            ArgumentError: If the record_data is malformed and cannot be parsed.

        Returns:
            ReflashTileRecord: The decoded reflash tile record.