== 1. clone() does not call a constructor, and it is shallow ==
  Team constructor ran for 'platform'
  b == a                 : false
  b.members == a.members : true
  after a.members.add("meera"), b.members = [asha, ravi, meera]

== 2. The fix: copy the mutable field inside clone() ==
  c.members = [asha, ravi, meera]
  d.members = [asha, ravi]

== 3. Calling super.clone() without implementing Cloneable ==
  CloneNotSupportedException: com.ankurm.copying.CloneDemo$ForgotCloneable

== 4. Array clone() is shallow for nested arrays ==
  gridCopy[0] == grid[0] : true
  grid     = [[99, 2], [3, 4]]
  gridCopy = [[99, 2], [3, 4]]

== 5. ArrayList.clone() is shallow too ==
  original.get(0) = abc-changed
  same element object: true

== 6. A parent clone() that uses 'new' breaks every subclass ==
  ClassCastException: class com.ankurm.copying.CloneDemo$Animal cannot be cast to class com.ankurm.copying.CloneDemo$Dog (com.ankurm.copying.CloneDemo$Animal and com.ankurm.copying.CloneDemo$Dog are in unnamed module of loader 'app')
