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

def _dict_lookup_bitwise_add(cls, item, **kwargs):
        '''
        kwarg value_lookup bool to determine if item_list should be compared to keys
        or values

        kwarg test_zero is used to determine if 0 should be tested when value_lookup is false
        lookup should be a dict with integers for keys

        if value_lookup is True, item is expected to be a list
            the function will return the sum of the keys whose values are in the item list
        if value_lookup is False, item is expected to be an integer
            the function will return the values for the keys
            which successfully "bitwise and" with item
        '''
        value_lookup = kwargs.get('value_lookup', False)
        test_zero = kwargs.get('test_zero', False)
        ret_val = None
        if str(item).lower() == 'not defined':
            return None
        if value_lookup:
            if not isinstance(item, list):
                return 'Invalid Value'
            ret_val = 0
        else:
            if not isinstance(item, six.integer_types):
                return 'Invalid Value'
            ret_val = []
        if 'lookup' in kwargs:
            for k, v in six.iteritems(kwargs['lookup']):
                if value_lookup:
                    if six.text_type(v).lower() in [z.lower() for z in item]:
                        ret_val = ret_val + k
                else:
                    do_test = True
                    if not test_zero:
                        if k == 0:
                            do_test = False
                    if do_test and isinstance(k, int) and item & k == k:
                        ret_val.append(v)
        else:
            return 'Invalid Value'
        return ret_val