<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _detail_channel( self, participant1: Address, participant2: Address, block_identifier: BlockSpecification, channel_identifier: ChannelID = None, ) -> ChannelData: """ Returns a ChannelData instance with the channel specific information. If no specific channel_identifier is given then it tries to see if there is a currently open channel and uses that identifier. """

        channel_identifier = self._inspect_channel_identifier(
            participant1=participant1,
            participant2=participant2,
            called_by_fn='_detail_channel(',
            block_identifier=block_identifier,
            channel_identifier=channel_identifier,
        )

        channel_data = self._call_and_check_result(
            block_identifier,
            'getChannelInfo',
            channel_identifier=channel_identifier,
            participant1=to_checksum_address(participant1),
            participant2=to_checksum_address(participant2),
        )

        return ChannelData(
            channel_identifier=channel_identifier,
            settle_block_number=channel_data[ChannelInfoIndex.SETTLE_BLOCK],
            state=channel_data[ChannelInfoIndex.STATE],
        )