<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_bgp_neighbors(self, **kwargs):
 """Get BGP neighbors configured on a device. Args: rbridge_id (str):
 The rbridge ID of the device on which BGP will be configured in a VCS fabric. vrf (str):
 The VRF for this BGP process. callback (function):
 A function executed upon completion of the method. The only parameter passed to `callback` will be the ``ElementTree`` `config`. Returns: List of 0 or more BGP Neighbors on the specified rbridge. Examples: Traceback (most recent call last):
 NotImplementedError KeyError """

        callback = kwargs.pop('callback', self._callback)

        neighbor_args = dict(router_bgp_neighbor_address='',
                             remote_as='',
                             vrf_name=kwargs.pop('vrf', 'default'),
                             rbridge_id=kwargs.pop('rbridge_id', '1'))

        neighbor = getattr(self._rbridge,
                           'rbridge_id_router_bgp_router_bgp_cmds_holder_'
                           'router_bgp_attributes_neighbor_ips_'
                           'neighbor_addr_remote_as')
        config = neighbor(**neighbor_args)
        output = callback(config, handler='get_config')
        result = []
        urn = "{urn:brocade.com:mgmt:brocade-bgp}"
        # IPv4 BGP Neighbor Handling
        for item in output.data.findall(
                './/{*}neighbor-addr'):
            neighbor_address = item.find(
                '%srouter-bgp-neighbor-address' % urn).text
            remote_as = item.find('%sremote-as' % urn).text

            item_results = {'neighbor-address': neighbor_address,
                            'remote-as': remote_as}
            result.append(item_results)

        # IPv6 BGP Neighbor handling
        neighbor_args['router_bgp_neighbor_ipv6_address'] = ''
        neighbor = getattr(self._rbridge,
                           'rbridge_id_router_bgp_router_bgp_cmds_holder_'
                           'router_bgp_attributes_neighbor_ipv6s_neighbor_'
                           'ipv6_addr_remote_as')
        config = neighbor(**neighbor_args)
        output = callback(config, handler='get_config')
        for item in output.data.findall(
                './/{*}neighbor-ipv6-addr'):
            neighbor_address = item.find(
                '%srouter-bgp-neighbor-ipv6-address' % urn).text
            remote_as = item.find('%sremote-as' % urn).text

            item_results = {'neighbor-address': neighbor_address,
                            'remote-as': remote_as}
            result.append(item_results)

        return result