pub fn buf_write(
    buf_idx: usize,
    idx: Box<ASTNode>,
    val: Box<ASTNode>
) -> Box<ASTNode>