# File lib/ruote/dashboard.rb, line 1237
    def update_expression(fei, opts)

      fei = Ruote.extract_fei(fei)
      fexp = Ruote::Exp::FlowExpression::fetch(@context, fei)

      raise ArgumentError.new(
        "no expression found with fei #{fei.sid}"
      ) unless fexp

      if t = opts[:tree]
        fexp.h.updated_tree = opts[:tree]
      end

      r = @context.storage.put(fexp.h)

      raise ArgumentError.new(
        "expression #{fei.sid} is gone"
      ) if r == true

      return update_expression(fei, opts) unless r.nil?
    end