pub trait Select1Support {
fn select1(&self, index: u64) -> Option<u64>;
}
pub trait Select0Support {
fn select0(&self, index: u64) -> Option<u64>;
}
pub trait SelectSupport {
type Over: Copy;
fn select(&self, index: u64, value: Self::Over) -> Option<u64>;
}