# File lib/ruote/extract.rb, line 108
  def self.extract_fexp(context, fei_or_fexp)

    return fei_or_fexp if fei_or_fexp.is_a?(Ruote::Exp::FlowExpression)

    fei = case fei_or_fexp
      when Ruote::FlowExpressionId then fei_or_fexp
      when Hash, String then extract_fei(fei_or_fexp)
      else nil
    end

    raise ArgumentError.new(
      "failed to extract flow expression out of #{fei_or_fexp.class} instance"
    ) unless fei

    Ruote::Exp::FlowExpression.fetch(context, fei)
  end