pub trait Stack {
fn top(&mut self) -> *mut u8;
fn limit(&self) -> *const u8;
}
pub trait StackSource {
type Output: Stack;
fn get_stack(size: usize) -> Self::Output;