class_docstr: A register-only variable.
  
  Efficiently stores and updates values whose lifetime does not cross function
  calls (and therefore does not require a stack).  This is different from
  `TemporaryVariable` because it supports crossing basic block boundaries.  A
  `RegisterTensorFlowVariable` therefore needs to store its content persistently
  across the `while_loop` in `execute`, and to handle divergence (and
  re-convergence) of logical threads.
docstr: Update with `value` at `mask`, propagate other positions.
docstr_tok: ["Update","with","`","value","`","at","`","mask","`",",","propagate","other","positions","."]
code: def update(self, value, mask):
      """Update with `value` at `mask`, propagate other positions."""
      if isinstance(self.value, tuple):
          # Support fast path for Eager mode initialization.  Initializing with a
          # well-formed value is only necessary in graph mode, where the value
          # Tensor needs to be part of while-carried state.  In Eager, however, it
          # does not, so the variable may just carry its type information as a
          # Python tuple.
          batch_size, dtype, event_shape = self.value
          value = tf.convert_to_tensor(value=value, dtype=dtype)
          new_value = tf.broadcast_to(
              value, shape=[batch_size] + list(event_shape)
          )
      else:
          new_value = _generalized_where(mask, value, self.value)
      return type(self)(new_value)
  
imports: import collections
  import contextlib
  import six
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.experimental.auto_batching import instructions
  from tensorflow_probability.python.experimental.auto_batching import xla
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow.python.ops import control_flow_util
label_desc: Use image node_id 1 for calling the RegisterTensorFlowVariable obj's underlying member method code with example usage: obj.update(value, mask) and returns: type