<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def create_from_binary(cls, load_dataruns, binary_view):
        '''Creates a new object NonResidentAttrHeader from a binary stream. The binary
        stream can be represented by a byte string, bytearray or a memoryview of the
        bytearray.

        Args:
            load_dataruns (bool) - Indicates if the dataruns are to be loaded
            binary_view (memoryview of bytearray) - A binary stream with the
                information of the attribute
            non_resident_offset (int) - The offset where the non resident header
                begins

        Returns:
            NonResidentAttrHeader: New object using hte binary stream as source
        '''
        attr_type, attr_len, non_resident, name_len, name_offset, flags, attr_id, \
            start_vcn, end_vcn, rl_offset, compress_usize, alloc_sstream, curr_sstream, \
            init_sstream = cls._REPR.unpack(binary_view[:cls._REPR.size])

        if name_len:
            name = binary_view[name_offset:name_offset+(2*name_len)].tobytes().decode("utf_16_le")
        else:
            name = None

        #content = cls._REPR.unpack(binary_view[non_resident_offset:non_resident_offset+cls._REPR.size])
        nw_obj = cls((AttrTypes(attr_type), attr_len, bool(non_resident), AttrFlags(flags), attr_id, name),
            (start_vcn, end_vcn, rl_offset, compress_usize, alloc_sstream, curr_sstream, init_sstream))

        if load_dataruns:
            nw_obj.data_runs = DataRuns.create_from_binary(binary_view[nw_obj.rl_offset:])
        _MOD_LOGGER.debug("NonResidentAttrHeader object created successfully")

        return nw_obj