<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_entry(self, iso_path, rr_path, joliet_path):
        # type: (Optional[bytes], Optional[bytes], Optional[bytes]) -> dr.DirectoryRecord
        '''
        Internal method to get the directory record for a particular path.

        Parameters:
         iso_path - The path on the ISO filesystem to look up the record for.
         rr_path - The Rock Ridge path on the ISO filesystem to look up the
                   record for.
         joliet_path - The path on the Joliet filesystem to look up the record
                       for.
        Returns:
         A dr.DirectoryRecord object representing the path.
        '''
        if self._needs_reshuffle:
            self._reshuffle_extents()

        rec = None

        if joliet_path is not None:
            rec = self._find_joliet_record(joliet_path)
        elif rr_path is not None:
            rec = self._find_rr_record(rr_path)
        elif iso_path is not None:
            rec = self._find_iso_record(iso_path)
        else:
            raise pycdlibexception.PyCdlibInternalError('get_entry called without legal argument')

        return rec