/// <summary>
 /// フロー インターフェイスを呼び出します。
 /// </summary>
 /// <param name="module">呼び出しに用いるモジュール オブジェクト。</param>
 /// <param name="input">フィルタ処理の入力として与えるストレージ オブジェクトのシーケンス。</param>
 /// <param name="session">ストレージ オブジェクトの入出力先として使用するストレージ セッション。</param>
 /// <param name="parameter">処理のパラメータ。</param>
 /// <param name="arguments">処理の引数のディクショナリ。</param>
 /// <param name="variables">リクエスト間で受け渡される変数のディクショナリ。</param>
 /// <returns>処理の結果。</returns>
 public Object Invoke(
     FlowModule module,
     Object input = null,
     StorageSession session = null,
     String parameter = null,
     IDictionary<String, String> arguments = null,
     IDictionary<String, Object> variables = null
 )
 {
     LinkedList<Object> args = new LinkedList<Object>();
     if(this.RequiresInput)
     {
         args.AddLast(input);
     }
     if(this.RequiresSession)
     {
         args.AddLast(session);
     }
     if(this.RequiresParameter)
     {
         args.AddLast(parameter ?? "");
     }
     if(this.RequiresArguments)
     {
         args.AddLast(arguments ?? new Dictionary<String, String>());
     }
     if(this.HandlesVariables)
     {
         args.AddLast(variables ?? new Dictionary<String, Object>());
     }
     Object output = this._method.Invoke(module, args.ToArray());
     if (session != null)
     {
         session.Update();
     }
     return output;
 }