Basically, hai object is accessed by shared_ptr
<< operator can output HaiPtr
add assertion in hai constructor
tested by check method
add tatsu
add tatsutest