code: def __call__(self, inputs, index, size=None):
      size = tf.reduce_max(index) + 1 if size is None else size
      cell_in = tf.zeros([size, self.dim * 2], dtype=tf.float32)
      hidden_state = self.lstm.zero_state(
          tf.shape(cell_in)[0], dtype=tf.float32
      )
      for i in range(self.processing_steps):
          q = tf.expand_dims(cell_in, axis=1)
          q, hidden_state = tf.nn.dynamic_rnn(
              self.lstm, q, initial_state=hidden_state, dtype=tf.float32
          )
          q = tf.reshape(q, [-1, self.dim])
          e = tf.reduce_sum(
              (inputs * tf.gather(q, index)), axis=-1, keep_dims=True
          )
          a = mp_ops.scatter_softmax(e, index, size=size)
          r = mp_ops.scatter_(self.aggr, a * inputs, index, size=size)
          cell_in = tf.reshape(
              tf.concat([q, r], axis=-1), [-1, self.dim * 2]
          )
      return cell_in
  
imports: import tensorflow
  from tf_euler.python.euler_ops import mp_ops
  from tf_euler.python.graph_pool.base_pool import Pooling
label_desc: Use image node_id 2 for calling the Set2SetPool obj's underlying member method code with example usage: obj.__call__(inputs, index, size) and returns: cell_in