static bool is_unique(MultiPass const& mp) { return 0 == mp.shared() || 1 == mp.shared()->count; }
static void clone(MultiPass& mp) { if (0 != mp.shared()) ++mp.shared()->count; }
static bool release(MultiPass& mp) { return 0 != mp.shared() && 0 == --mp.shared()->count; }
static bool has_include_guards(MultiPass& mp, std::string& guard_name) { return mp.shared()->ftor->has_include_guards(guard_name); }
static void set_position(MultiPass& mp, position_type const &pos) { mp.shared()->ftor->set_position(pos); }
static void destroy(MultiPass& mp) { delete mp.shared()->ftor; }
static void clear_queue(MultiPass& mp) { ++mp.shared()->shared_buf_id; ++mp.buf_id; }
static void check(MultiPass const& mp) { if (mp.buf_id != mp.shared()->shared_buf_id) boost::throw_exception(illegal_backtracking()); }