code: def write_expression(expr, path, overwrite=False):
      """Write an Expression.
  
      In the same vein as Python's pickle, write out an expression
      that does not have a source (such as one that comes from
      Table.aggregate with _localize=False).
  
      Example
      -------
      >>> ht = hl.utils.range_table(100).annotate(x=hl.rand_norm())
      >>> mean_norm = ht.aggregate(hl.agg.mean(ht.x), _localize=False)
      >>> mean_norm
      >>> hl.eval(mean_norm)
      >>> hl.experimental.write_expression(mean_norm, 'output/expression.he')
  
      Parameters
      ----------
  
      expr : :class:`~.Expression`
          Expression to write.
      path : :class:`str`
          Path to which to write expression.
          Suggested extension: .he (hail expression).
      overwrite : :obj:`bool`
          If ``True``, overwrite an existing file at the destination.
  
      Returns
      -------
      None
      """
      source = expr._indices.source
      if source is not None:
          analyze("write_expression.expr", expr, source._global_indices)
          source = source.select_globals(__expr=expr)
          expr = source.index_globals().__expr
      hl.utils.range_table(1).filter(False).key_by().drop(
          "idx"
      ).annotate_globals(expr=expr).write(path, overwrite=overwrite)
  
imports: import hail
  from hail.expr.expressions import expr_any, analyze
  from hail.expr.types import hail_type
  from hail.expr.table_type import ttable
  from hail.typecheck import typecheck, nullable
label_desc: Use image node_id 1 for calling a global function with example usage: write_expression(expr, path, overwrite) without return types