def __im_conform__(object):
    """Get an immutable version of the object.

        This method converts the given object into its immutable self.

        The return value will either be a core immutable object or an object
        implementing the `IImmutable` interface. If the latter is returned,
        it must be in `IM_MODE_SLAVE` mode and in the `IM_STATE_TRANSIENT`
        state.

        When having an `IImmutable` object, we must ensure that the result is
        in the transient state. Thus, if the immutable is already in the
        transient state, just return it, otherwise create a transient clone of
        it.

        This method is intended for internal use only and should only be
        called for sub-objects while adding them to the immutable. The
        resulting immutable must also be in the `IM_STATE_TRANSIENT`
        state.

        Raises a `ValueError` exception if the object cannot be converted.
        """
