#pragma once

#include <hilti/ast/all.h>

#define VISITOR_DISPATCHERS \
  if constexpr ( std::is_base_of<hilti::Declaration, Erased>::value ) { \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::Constant, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::Expression, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::Field, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::Function, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::GlobalVariable, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::ImportedModule, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::LocalVariable, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::Module, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::Parameter, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::Property, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::declaration::Type, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
  } \
 \
  if constexpr ( std::is_base_of<hilti::Node, Erased>::value ) { \
    if ( auto r = do_dispatch_one<Result, hilti::Attribute, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::AttributeSet, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::Ctor, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::Declaration, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::Expression, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::Function, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ID, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::Module, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::Statement, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::Type, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::function::Result, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::function::Parameter, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::switch_::Case, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::try_::Catch, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::enum_::Label, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::tuple::Element, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::map::Element, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
  } \
 \
  if constexpr ( std::is_base_of<hilti::Type, Erased>::value ) { \
    if ( auto r = do_dispatch_one<Result, hilti::type::Address, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Any, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Auto, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Bool, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Bytes, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::DocOnly, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Enum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Error, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Exception, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Function, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Interval, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Library, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::List, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Map, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Member, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Network, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Null, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::OperandList, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Optional, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Port, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Real, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::StrongReference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::RegExp, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Result, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Set, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::SignedInteger, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Stream, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::String, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Struct, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Time, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Tuple, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Type_, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Union, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Unknown, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::UnresolvedID, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::UnsignedInteger, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Vector, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::Void, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::WeakReference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::ValueReference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::bytes::Iterator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::list::Iterator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::map::Iterator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::set::Iterator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::stream::Iterator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::stream::View, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::type::vector::Iterator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
  } \
 \
  if constexpr ( std::is_base_of<hilti::Statement, Erased>::value ) { \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Assert, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Block, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Break, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Comment, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Continue, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Declaration, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Expression, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::For, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::If, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Return, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::SetLocation, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Switch, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Throw, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Try, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::While, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::statement::Yield, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
  } \
 \
  if constexpr ( std::is_base_of<hilti::Expression, Erased>::value ) { \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Assign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::BuiltinFunction, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Coerced, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Ctor, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Deferred, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Grouping, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Keyword, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::ListComprehension, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::PendingCoerced, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::LogicalAnd, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::LogicalOr, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::LogicalNot, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Member, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Move, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::ResolvedID, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::ResolvedOperator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Ternary, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Type_, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::TypeInfo, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::TypeWrapped, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::UnresolvedID, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::UnresolvedOperator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::expression::Void, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
  } \
 \
  if constexpr ( std::is_base_of<hilti::Ctor, Erased>::value ) { \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Address, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Bool, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Bytes, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Coerced, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Default, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Enum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Error, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Exception, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Interval, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::List, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Library, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Map, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Network, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Null, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Optional, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Port, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Real, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::RegExp, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Result, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Set, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::SignedInteger, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Stream, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::String, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::StrongReference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Struct, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Time, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Tuple, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::UnsignedInteger, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::ValueReference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::Vector, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::WeakReference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::ctor::ValueReference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
  } \
 \
  if constexpr ( std::is_base_of<hilti::expression::ResolvedOperator, Erased>::value ) { \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::address::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::address::Family, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::address::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bool_::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bool_::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::At, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Decode, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Find, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Greater, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::GreaterEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::In, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Join, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Lower, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::LowerCase, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::LowerEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Match, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Size, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Split, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Split1, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::StartsWith, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Strip, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::SubIterator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::SubIterators, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::SubOffsets, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Sum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::SumAssignBytes, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::SumAssignStreamView, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::SumAssignUInt8, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::ToIntAscii, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::ToIntBinary, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::ToTimeAscii, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::ToTimeBinary, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::ToUIntAscii, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::ToUIntBinary, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::UpperCase, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::Difference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::Greater, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::GreaterEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::IncrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::IncrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::Lower, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::LowerEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::Sum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::SumAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::bytes::iterator::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::enum_::CastToSignedInteger, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::enum_::CastToUnsignedInteger, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::enum_::CtorSigned, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::enum_::CtorUnsigned, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::enum_::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::enum_::HasLabel, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::enum_::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::error::Ctor, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::error::Description, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::exception::Ctor, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::exception::Description, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::function::Call, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::generic::Begin, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::generic::CastedCoercion, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::generic::End, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::generic::New, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::generic::Pack, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::generic::Unpack, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::CtorRealSecs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::CtorSignedIntegerNs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::CtorSignedIntegerSecs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::CtorUnsignedIntegerNs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::CtorUnsignedIntegerSecs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::Difference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::Greater, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::GreaterEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::Lower, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::LowerEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::MultipleReal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::MultipleUnsignedInteger, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::Nanoseconds, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::Seconds, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::Sum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::interval::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::list::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::list::Size, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::list::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::list::iterator::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::list::iterator::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::list::iterator::IncrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::list::iterator::IncrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::list::iterator::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::Clear, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::Delete, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::Get, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::In, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::IndexAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::IndexConst, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::IndexNonConst, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::Size, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::iterator::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::iterator::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::iterator::IncrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::iterator::IncrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::map::iterator::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::network::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::network::Family, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::network::In, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::network::Length, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::network::Prefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::network::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::optional::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::port::Ctor, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::port::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::port::Protocol, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::port::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::CastToInterval, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::CastToSignedInteger, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::CastToTime, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::CastToUnsignedInteger, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Difference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::DifferenceAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Division, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::DivisionAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Greater, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::GreaterEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Lower, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::LowerEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Modulo, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Multiple, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::MultipleAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Power, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::SignNeg, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Sum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::SumAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::real::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::regexp::Find, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::regexp::Match, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::regexp::MatchGroups, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::regexp::TokenMatcher, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::regexp_match_state::AdvanceBytes, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::regexp_match_state::AdvanceView, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::result::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::result::Error, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::Add, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::Clear, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::Delete, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::In, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::Size, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::iterator::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::iterator::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::iterator::IncrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::iterator::IncrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::set::iterator::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CastToBool, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CastToEnum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CastToInterval, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CastToReal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CastToSigned, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CastToUnsigned, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CtorSigned16, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CtorSigned32, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CtorSigned64, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CtorSigned8, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CtorUnsigned16, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CtorUnsigned32, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CtorUnsigned64, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::CtorUnsigned8, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::DecrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::DecrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Difference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::DifferenceAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Division, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::DivisionAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Greater, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::GreaterEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::IncrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::IncrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Lower, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::LowerEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Modulo, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Multiple, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::MultipleAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Power, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::SignNeg, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Sum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::SumAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::signed_integer::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::At, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::Ctor, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::Freeze, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::IsFrozen, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::Size, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::SumAssignBytes, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::SumAssignView, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::Trim, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::Unfreeze, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::Difference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::Greater, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::GreaterEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::IncrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::IncrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::IsFrozen, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::Lower, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::LowerEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::Offset, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::Sum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::SumAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::iterator::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::AdvanceBy, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::AdvanceTo, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::AdvanceToNextData, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::At, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::EqualBytes, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::EqualView, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::Find, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::InBytes, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::InView, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::Limit, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::Offset, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::Size, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::StartsWith, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::SubIterator, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::SubIterators, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::SubOffsets, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::UnequalBytes, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::stream::view::UnequalView, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::string::Encode, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::string::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::string::Modulo, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::string::Size, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::string::Sum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::string::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::strong_reference::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::strong_reference::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::strong_reference::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::struct_::HasMember, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::struct_::MemberCall, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::struct_::MemberConst, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::struct_::MemberNonConst, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::struct_::TryMember, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::struct_::Unset, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::CtorRealSecs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::CtorSignedIntegerNs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::CtorSignedIntegerSecs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::CtorUnsignedIntegerNs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::CtorUnsignedIntegerSecs, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::DifferenceInterval, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::DifferenceTime, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::Greater, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::GreaterEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::Lower, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::LowerEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::Nanoseconds, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::Seconds, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::SumInterval, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::time::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::tuple::CustomAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::tuple::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::tuple::Index, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::tuple::Member, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::tuple::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::union_::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::union_::HasMember, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::union_::MemberConst, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::union_::MemberNonConst, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::union_::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::BitAnd, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::BitOr, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::BitXor, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CastToBool, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CastToEnum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CastToInterval, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CastToReal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CastToSigned, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CastToTime, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CastToUnsigned, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CtorSigned16, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CtorSigned32, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CtorSigned64, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CtorSigned8, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CtorUnsigned16, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CtorUnsigned32, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CtorUnsigned64, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::CtorUnsigned8, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::DecrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::DecrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Difference, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::DifferenceAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Division, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::DivisionAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Greater, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::GreaterEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::IncrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::IncrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Lower, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::LowerEqual, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Modulo, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Multiple, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::MultipleAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Negate, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Power, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::ShiftLeft, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::ShiftRight, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::SignNeg, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Sum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::SumAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::unsigned_integer::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::value_reference::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::value_reference::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::value_reference::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::Assign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::At, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::Back, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::Front, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::IndexConst, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::IndexNonConst, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::PopBack, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::PushBack, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::Reserve, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::Resize, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::Size, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::SubEnd, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::SubRange, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::Sum, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::SumAssign, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::iterator::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::iterator::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::iterator::IncrPostfix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::iterator::IncrPrefix, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::vector::iterator::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::weak_reference::Deref, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::weak_reference::Equal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
    if ( auto r = do_dispatch_one<Result, hilti::operator_::weak_reference::Unequal, Erased, Dispatcher, Iterator>(n, tn, d, i, no_match_so_far) ) return r; \
  } \
 \

