code: def wrap_tuple_streams(unwrapped, kdims, streams):
      
      param_groups = [(s.contents.keys(), s) for s in streams]
      pairs = [(name,s)  for (group, s) in param_groups for name in group]
      substituted = []
      for pos,el in enumerate(wrap_tuple(unwrapped)):
          if el is None and pos < len(kdims):
              matches = [(name,s) for (name,s) in pairs if name==kdims[pos].name]
              if len(matches) == 1:
                  (name, stream) = matches[0]
                  el = stream.contents[name]
          substituted.append(el)
      return tuple(substituted)
docs: Fills in tuple keys with dimensioned stream values as appropriate.