<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_music_service_information(self, search_type, search, start=0, max_items=100):
 """Search for music service information items. :param search_type: The type of search to perform, possible values are: 'artists', 'albums', 'tracks' and 'playlists' :type search_type: str :param search: The search string to use :type search: str :param start: The starting index of the returned items :type start: int :param max_items: The maximum number of returned items :type max_items: int Note: Un-intuitively the playlist search returns MSAlbumList items. See note in class doc string for details. """

        # Check input
        if search_type not in ['artists', 'albums', 'tracks', 'playlists']:
            message = 'The requested search {} is not valid'\
                .format(search_type)
            raise ValueError(message)
        # Transform search: tracks -> tracksearch
        search_type = '{}earch'.format(search_type)
        parent_id = SEARCH_PREFIX.format(search_type=search_type,
                                         search=search)

        # Perform search
        body = self._search_body(search_type, search, start, max_items)
        headers = _get_header('search')
        response = _post(self._url, headers, body, **self._http_vars)
        self._check_for_errors(response)
        result_dom = XML.fromstring(response.text.encode('utf-8'))

        # Parse results
        search_result = result_dom.find('.//' + _ns_tag('', 'searchResult'))
        out = {'item_list': []}
        for element in ['index', 'count', 'total']:
            out[element] = search_result.findtext(_ns_tag('', element))

        if search_type == 'tracksearch':
            item_name = 'mediaMetadata'
        else:
            item_name = 'mediaCollection'
        for element in search_result.findall(_ns_tag('', item_name)):
            out['item_list'].append(get_ms_item(element, self, parent_id))

        return out