pass all tests
add scala docs and refine shrink method
add shrink test