def _remove_child_from_dr(self, child, index, logical_block_size):
        # type: (dr.DirectoryRecord, int, int) -> int
        '''
        An internal method to remove a child from a directory record, shrinking
        the space in the Volume Descriptor if necessary.

        Parameters:
         child - The child to remove.
         index - The index of the child into the parent's child array.
         logical_block_size - The size of one logical block.
        Returns:
         The number of bytes to remove for this directory record (this may be zero).
        '''

        if child.parent is None:
            raise pycdlibexception.PyCdlibInternalError('Trying to remove child from non-existent parent')

        self._find_iso_record.cache_clear()  # pylint: disable=no-member
        self._find_rr_record.cache_clear()  # pylint: disable=no-member
        self._find_joliet_record.cache_clear()  # pylint: disable=no-member

        # The remove_child() method returns True if the parent no longer needs
        # the extent that the directory record for this child was on.  Remove
        # the extent as appropriate here.
        if child.parent.remove_child(child, index, logical_block_size):
            return self.pvd.logical_block_size()

        return 0
An internal method to remove a child from a directory record, shrinking
        the space in the Volume Descriptor if necessary.

        Parameters:
         child - The child to remove.
         index - The index of the child into the parent's child array.
         logical_block_size - The size of one logical block.
        Returns:
         The number of bytes to remove for this directory record (this may be zero).