title: Why there's a separate MutableLiveData subclass of LiveData?
body: <p>It looks like <code>MutableLiveData</code> differs from <code>LiveData</code> only by making the <code>setValue()</code> and <code>postValue()</code> methods public, whereas in <code>LiveData</code> they are protected.</p>
  
  <p>What are some reasons to make a separate class for this change and not simply define those methods as public in the <code>LiveData</code> itself?</p>
  
  <p>Generally speaking, is such a form of inheritance (increasing the visibility of certain methods being the only change) a well-known practice and what are some scenarios where it may be useful (assuming we have access to all the code)?</p>