class_docstr: Convert a pyll expression representing a single trial into a pyll
  expression representing multiple trials.
  
  The resulting multi-trial expression is not meant to be evaluated
  directly. It is meant to serve as the input to a suggest algo.
  
  idxs_memo - node in expr graph -> all elements we might need for it
  take_memo - node in expr graph -> all exprs retrieving computed elements
code: def assert_integrity_idxs_take(self):
      idxs_memo = self.idxs_memo
      take_memo = self.take_memo
      after = dfs(self.expr)
      assert after == self.dfs_nodes
      assert set(idxs_memo.keys()) == set(take_memo.keys())
      for node in idxs_memo:
          idxs = idxs_memo[node]
          assert idxs.name == "array_union"
          vals = take_memo[node][0].pos_args[1]
          for take in take_memo[node]:
              assert take.name == "idxs_take"
              assert [idxs, vals] == take.pos_args[:2]
  
imports: import sys
  import numpy
  from .pyll import Apply
  from .pyll import as_apply
  from .pyll import dfs
  from .pyll import toposort
  from .pyll import scope
  from .pyll import stochastic
label_desc: Use image node_id 2 for calling the VectorizeHelper obj's underlying member method code with example usage: obj.assert_integrity_idxs_take() without return types