非公開constructor読み取り専用agentこの操作をしている者。操作でもなく、問う側がagentを渡すのでもない文脈ではundefined(11.5節)。
読み取り専用instrumentこの操作で働きかけに使われる物。それを伴わない操作ではundefined(11.5節)。
読み取り専用patientこの操作で働きかけられる物。操作の外(rangeイベント等)ではundefined(11.5節)。
読み取り専用pickedamongが周りから選んだ相手。amongを書いた候補の中でのみ居る(10.3節)。
読み取り専用selfこの文脈のself。効果の宣言元であり、parent・ancestorはここから辿る。
読み取り専用sessionこの文脈が指している世界。役はどれも欠けうる——selfの居ない文脈(asking)も、役の解決先を 持たない文脈(forSelf)もある——ので、どの役から引くかを受け取る側に選ばせず、組み立てた側が 答える。組み立てる口はどれも、役に就く物を少なくとも1つ必ず受け取るので、ここが空になる 経路は無い。
どの役が答えるかは口ごとに違う——selfを受け取る口はself、askingはagent、withRolesはpatient。 1つの文脈の役はすべて同じ世界の物なので、居るものから引けばどれでも同じ。
この文脈を、宣言を読む側へ渡す形にしたもの(ReferenceValueResolver)。
静的asking操作ではないが、問う側がagentを渡す場所(レシピの解放条件・crafting_conditions、13.2・13.4節)。
関係は張らない——「誰にとって解放されているか」を問う判定であって、誰も何にも働きかけていない
(11.5節)。成果物のインスタンスがまだ無いのでselfも居ない。
問いが「誰にとって」なので、agentは必ず居る(13.2節)。誰かを立てずに条件そのものの有無を
見たいなら、条件を持っているか(RecipeDef.unlock)を直接見る。
rootが指す相手の、そのプロパティの実効値。相手が居ないか、そのプロパティを持たなければundefined (0とは区別する)。
静的for参加者のprops(base・passives、ReferenceScope.participantProps)を読む文脈。役は、selfが今役を
解く関係(世界に刻まれている、InteractionRelation。入れ子なら最も内側、11.5節)から解ける。参加して
いなければforSelfと同じで、役はどれも解決先を持たない。
静的forselfだけが決まっている文脈(ReferenceScope.declaration)。操作の役は解決先を持たない—— rangeイベント(6.3節)は操作ではなく値が端に着いた瞬間への反応なので、selfが今どれかの操作に 参加していても役は見えない(11.5節)。
rootが指すオブジェクト。解決先を持たないrootはundefined——childは相手が1つに定まらず (PropertyPassiveEffect.setChildRegistered)、ancestorは探すプロパティが要る(ownerOfProperty)。
rootが指す、propertyGlobalIdを持つべきオブジェクト。ancestorを解けるのはここだけ—— 「そのプロパティを定義している最初の祖先」なので、探すプロパティが決まって初めて相手が決まる (8.6節)。
instrumentだけを差し替えた文脈。同じ操作を候補ごとに引き直す場面で使う(TransferEffect.acceptedCount)。
pickedだけを差し替えた文脈。amongが候補ごとに重みを引き、選んだ1つへ効果を当てるときに使う。
静的with3役が揃った文脈。組み立てられるのは関係を持っている側だけ(InteractionRelation.contextFor)。
selfだけを差し替えた文脈。役の出どころは変えずに、起点だけを移す場面で使う——passivesのゲートは selfが辺の子側(slotBearer)で、役はその宣言の出どころが答える(11.5節。RegisteredPassiveEffect)。
宣言に書かれたReferenceRootを実行時のオブジェクトへ解くための、どの役に誰が居るかという文脈 (その場所がどの役を用意できるかはReferenceScopeが持つ)。
参照を持つ側はこれを組み立てず、受け取ったものをそのまま下へ渡す。組み立てるのは「誰がこの行動を しているか」を知っている一番外側だけで、途中の誰も中身をばらして持ち回らない。
ancestorはここでは解けない——「参照先のプロパティを定義している最初の祖先」なので、探すプロパティを 知っている側(PropertyPath)でしか決まらない。
selfが居るかは型引数Sが持つ。 selfを要る側(InteractionDef.tryExecute・効果のapply)は
ReferenceContext<WorldObject>を受け取るので、selfの居ない文脈を渡せない。