メソッドを展開する時にその独自のビルダーを使うようにしたりする事も出来たりします。属性で適切なビルダーを紐づけて上げるだけです。使用されるようになったりします。)導入されたものなので、普通の開発者がビルダーを自前で実装したりする事はまず無いし、すべきでもないと思っておいてください。型に対してアノテーションするだけじゃなくて、メソッド単位でもアノテーションする事ができます。その際に使われるビルダーをカスタムできます。指定したビルダーが使われるようになる。}}脇道から帰ってきて、本題に戻りましょう。呼び出され、状態が進んでも、メソッド本体の実装から利用できる必要があります。そのためこれらの引数をステートマシンに格納しなければいけません。あれば、メソッドを初めて最初から実行する事と同義になります。その次に、非常に地味だけど大事な行があります。メソッドの呼び出しです。メソッドは、実質的にはこれだけです。本当はもうちょっといろいろあるが、実質的にはこれだけ。私が説明した以上のものがあるからです。理解する必要があります。ExecutionContext我々はメソッドからメソッドへ状態を受け渡す事に慣れ親しんでいます。メソッドを呼ぶ際、そのメソッドにパラメータ(仮引数)が定義されていたら、呼び出し側はメソッドに対して(実)引数を渡して呼び出します。これは明示的にデータを受け渡す事です。暗黙的にデータを渡す事も出来ます。読み出して利用するといった形のデータの受け渡し方が暗黙的なデータの渡し方です。呼ばれるもので、パラメータで渡されるのではなく、ただどこかしらに存在し、必要であれば利用することができるものです。このような場合、呼び出し元と呼び出し先の間には、呼び出し元がどこかにデータを格納し、呼び出し先がそのデータをどこかしらから読み込むという暗黙の了解があるだけです。状態を使用する事を考える事もできます。型によって実現できます。データへのアクセスはそれぞれの実行スレッドだけに制限されており、各スレッド事に独立及び分離しています。フィールドに戻すことで、暗黙的にやりとりされているデータをスレッド毎に完全に分離した形で利用できるようになります。アクセスしたい場合には一筋縄ではいきません。メソッドは平行ないし並列で実行されます。書き換えられてしまうわけです。渡し方として成立しないわけです。メソッドはそれにアクセスすることができますが、それが期待する挙動をするのは呼び出し元のスレッドで同期的に実行されなくなる時点までです。どこのスレッドで実行されるかは分かりません。これは非常に多くの人が勘違いしている事です。自体に「もともと実行されていたスレッドに戻ってくる」という機能はありません。そのような仕事をするように実装されているから、というだけの事です。スレッドで実行される」と言った方が誤解が生まれないかもしれないですね。結果的に戻っているように見えるだけなのです。フローさせるための仕組みが必要です。メソッド用の論理フローを実現させるための仕組みです。非同期操作から非同期操作へフローさせるためのモノです。フローさせる事ができるようになります。様々なコンテキストを内包し、それら全てのコンテキストをフローさせていました。格納し、それをフローするだけのものになりました。具体的な挙動を見てみましょう。