### Question:
Optionality { public static DataType deep_unoptionalize(DataType dt) { Ensure.not_null(dt); if (is_optional(dt)) { return deep_unoptionalize(((OptionalDataType) dt).inner_type()); } return dt; } private  Optionality(); static boolean is_optional(DataType dt); static boolean is_optional(DataValue dv); static DataType unoptionalize(DataType dt); static DataType deep_unoptionalize(DataType dt); static DataValue unoptionalize(DataValue dv); static DataValue deep_unoptionalize(DataValue dv); static DataValue optionalize(DataValue v, DataType dt); static boolean is_optional_of(DataType opt, DataType inner); static boolean is_deep_optional_of(DataType opt, DataType inner);  }### Answer:
@Test public void deep_unoptionalize_optional_data_type() throws Exception { assertEquals(m_dt, Optionality.deep_unoptionalize(m_odt)); }
@Test public void deep_unoptionalize_non_optional_data_type() throws Exception { assertEquals(m_dt, Optionality.deep_unoptionalize(m_dt)); }
@Test public void deep_unoptionalize_deep_optional_data_type() throws Exception { assertEquals(m_dt, Optionality.deep_unoptionalize(m_oodt)); }
@Test public void deep_unoptionalize_non_null_optional_data_value() throws Exception { assertEquals(m_dv, Optionality.deep_unoptionalize(m_odv)); }
@Test public void deep_unoptionalize_non_optional_data_value() throws Exception { assertEquals(m_dv, Optionality.deep_unoptionalize(m_dv)); }
@Test public void deep_unoptionalize_non_null_deep_optional_data_value() throws Exception { assertEquals(m_dv, Optionality.deep_unoptionalize(m_oodv)); }
@Test public void deep_unoptionalize_null_optional_data_value() throws Exception { assertNull(Optionality.deep_unoptionalize(m_odvn)); }
@Test public void deep_unoptionalize_null_deep_optional_data_value() throws Exception { assertNull(Optionality.deep_unoptionalize(m_oodvn)); assertNull(Optionality.deep_unoptionalize(m_oodvin)); }