{"id":"visitor-double-dispatch-mechanism","text":"The Visitor pattern achieves operation extensibility through a double-dispatch protocol: the element's Accept method receives a Visitor argument and calls back the type-specific Visit method, bridging two parallel class hierarchies (elements and visitors) without runtime type checks.","truth_value":"IN","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["gof-visitor-double-dispatch-via-accept","visitor-passed-as-argument-to-accept","gof-visitor-two-class-hierarchies"],"outlist":[],"label":"Accept-as-argument + callback-encodes-type + two-hierarchy-structure together constitute the double-dispatch mechanism"}],"dependents":["double-dispatch-enables-governed-recursive-extensibility","double-dispatch-unifies-type-resolution-across-patterns","visitor-dispatch-implements-ocp-inversion"],"metadata":{"source_type":"derived","review_result":"unnecessary"},"created_at":"2026-06-17T18:00:51+00:00","updated_at":"2026-06-18T06:15:08+00:00","reviewed_at":"2026-06-18T06:15:08+00:00","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"visitor-double-dispatch-mechanism","truth_value":"IN","reason":"SL justification valid","antecedents":["gof-visitor-double-dispatch-via-accept","visitor-passed-as-argument-to-accept","gof-visitor-two-class-hierarchies"],"label":"Accept-as-argument + callback-encodes-type + two-hierarchy-structure together constitute the double-dispatch mechanism"},{"node":"gof-visitor-double-dispatch-via-accept","truth_value":"IN","reason":"premise"},{"node":"visitor-passed-as-argument-to-accept","truth_value":"IN","reason":"premise"},{"node":"gof-visitor-two-class-hierarchies","truth_value":"IN","reason":"premise"}]}}