lwtDev::BidirectionalLayer Node1 lwtDev::BidirectionalLayer + BidirectionalLayer() + ~BidirectionalLayer() + scan() Node2 lwtDev::IRecurrentLayer + m_go_backwards + m_return_sequence + ~IRecurrentLayer() + scan() Node2->Node1 Node3 std::unique_ptr< const lwtDev::IRecurrentLayer > + operator->() Node2->Node3 +ptr Node3->Node1 -m_backward_layer -m_forward_layer Node4 std::string Node4->Node1 -m_merge_mode Node5 std::basic_string< char > Node5->Node4