title: Why can we change the unmodifiable list if we have the original one?
body: <p>By looking at the code of <a href="http://download-llnw.oracle.com/javase/6/docs/api/java/util/Collections.html" rel="noreferrer"><code>Collections</code></a> class, i got to know that when we are using    the method <code>unmodifiableList(List list)</code> or <code>unmodifiableCollection(Collection c)</code> it is not creating a new object but it is returning the reference of the same object and overriding the methods which can modify the <code>List</code> [ <code>add</code>, <code>addall</code>, <code>remove</code>, <code>retainAll</code> ... ]<br>
  So i ran this test:  </p>
  
  <pre><code>List modifiableList = new ArrayList();
  modifiableList.add ( 1 );   
  List unmodifiableList = Collections.unmodifiableList( modifiableList );
  // unmodifiableList.add(3);  // it will throw the exception 
  modifiableList.add ( 2 );       
  System.out.println( unmodifiableList );
  </code></pre>
  
  <p>result is <code>[ 1,2 ]</code> .<br>
  Now the point is why it is referring to the same object? Why it don't create a new object?</p>