'Unpacks a new instance of this class from a buffer
returns (new_offset, object)'

@classmethod
def unpack_new(cls, raw, offset=0, max_length=None):

    if (max_length and (max_length < 2)):
        raise TruncatedException()
    (nh, l) = struct.unpack_from('!BB', raw, offset)
    max_length -= 2
    l = ((l * 8) + 6)
    if ((max_length is not None) and (max_length < l)):
        raise TruncatedException()
    offset += 2
    d = cls._unpack_body(raw, offset, nh, l)
    offset += l
    d['payload_length'] = l
    d['next_header_type'] = nh
    return (offset, cls(**d))
