code: def shareable_parameters(cells):
      
      result = []
      for c in cells.values():
          params = c.formula.parameters
  
          for i in range(min(len(result), len(params))):
              if params[i] != result[i]:
                  return None
  
          for i in range(len(result), len(params)):
              result.append(params[i])
  
      return result
docs: Return parameter names if the parameters are shareable among cells.
  
      Parameters are shareable among multiple cells when all the cells
      have the parameters in the same order if they ever have any.
  
      For example, if cells are foo(), bar(x), baz(x, y), then
      ('x', 'y') are shareable parameters amounts them, as 'x' and 'y'
      appear in the same order in the parameter list if they ever appear.
  
      Args:
          cells: An iterator yielding cells.
  
      Returns:
          None if parameters are not share,
          tuple of shareable parameter names,
          () if cells are all scalars.