partial progress on type checking. no enum support yet. no range checking yet. no duplicate set element checking yet.