use {
    r3vi::{
        view::{OuterViewPort, sequence::*},
        buffer::{vec::*, index_hashmap::*}
    },
    crate::{
        repr_tree::ReprTree
    },
    std::sync::{Arc, RwLock},
    cgmath::Point2
};

#[derive(Clone)]
pub struct Message {
    pub addr: Vec<usize>,
    pub disp: Arc<RwLock<ReprTree>>
}

pub trait Diagnostics {
    fn get_msg_port(&self) -> OuterViewPort<dyn SequenceView<Item = Message>> {
        VecBuffer::new().get_port().to_sequence()
    }
}