1) In the context of Git Flow: A. What is a feature branch? B. Why do we use them (i.e. what benefit do they convey)? 2) Explain in your own words the process of Test Driven Development, focusing on best practices/perfect world when writing new code. 3) Explain what scratch refactoring is in your words, emphasizing why it’s an important code exploration technique. 4) Aside from scratch refactoring, name and explain in your own words another code exploration technique. 5)Give a real-world example classes violating the Liskov Substitution Principle. Please be sure the example is not an example from the book.