&gt; Reflection, downcasts and assigning `null` to pointers are completely opt-in in Java too.<p>No, they&#x27;re not -- not in the same sense, at least. A GADT&#x2F;TypeFamily is going to be <i>visible</i> in the API. None of the things you mentioned are visible in the API.<p>There&#x27;s a <i>HUGE</i> difference.