+### And then ...
+- constructors(called by @new) and destructors (called by @free)
+- "?type" which includes an error flag in the type
+- interfaces - with syntax for function type declarations, including
+ type parameterisation
+- const arrays that are extended incrementally
+- enums that are extended incrementally
+- enum as array index. foo:[:enum]int. foo[.baz] = 23
+- modules - exported names in versions, and import lists
+ on types, fields, constants, etc
+- foreach variable-list := make_generator() do
+ A generator has 'first', 'next' and 'finally' methods
+ 'first' and 'next' return the same type which is conditional ('?' works)
+ 'finally' returns some other type - possibly Tnone - which goes to
+ a set of case at end of loop
+ NOTE need to understand how break/continue are handled.
+- lamba - inline functions. If possible allow a syntax that looks like 'while'...
+- "run" statement which copies things to a new frame and runs in
+ parallel. It has no 'return' value
+
+### static analysis
+- add generic attributes with rules for what values are allowed with
+ which attributes. Need to track:
+ - when object should be freed
+ - when ref is NULL
+ - when value is valid
+ - when int is in some range
+ - when object is "locked"
+ structures can have virtual 'state' fields which align with attributes
+ and certain state values imply certain attributes.
+
+### export
+- structs which have endian and are not sorted (records)
+- interface to C api (FFI)
+
+### escape
+- for an attribute
+- convert between integers and refs.
+
+### compile time reflection
+- code that can interpret attributes etc??
+