Class AlgebraicDataType