As stated in the topic. Why do we need bidirectional synchronized methods? What real world use case does it solve? What happens if I don\'t use them?