pub( crate ) mod private
{
  use crate::prelude::*;
  use core::fmt;
  use core::hash::Hash;
      
  pub trait EdgeKindInterface
  where
    Self :
      'static +
      Copy +
      fmt::Debug +
      PartialEq +
      Hash  +
      Default +
    ,
  {
  }
  impl< T > EdgeKindInterface for T
  where
    T :
      'static +
      Copy +
      fmt::Debug +
      PartialEq +
      Hash  +
      Default +
    ,
  {
  }
      
  #[ derive( Debug, PartialEq, Eq, Copy, Clone, Hash, Default ) ]
  pub struct EdgeKindless();
      
  pub trait EdgeBasicInterface
  where
    Self :
      HasId +
  {
  }
}
pub mod protected
{
  pub use super::orphan::*;
}
pub use protected::*;
pub mod orphan
{
  pub use super::exposed::*;
}
pub mod exposed
{
  pub use super::prelude::*;
  pub use super::private::EdgeKindless;
}
pub use exposed::*;
pub mod prelude
{
  pub use super::private::
  {
    EdgeKindInterface,
    EdgeBasicInterface,
  };
}