+
+use JSObjectMakeError to build exception objects
+replace cy$getProperty's return value with JSValueRef
+flatten compound expressions made up of compound expressions
+
+cy# {{5,6};6;{7;{8;5}}}
+got: {5,6;6;{7;8,5}}
+wanted: 5,6,6,7,8,5
+
+cy# for each (var i = 9 in [1, 2]) system.print(i);
+got: {i=9;(function(e,t){for(t in e){i=e[t];system.print(i)}})([1,2])}
+wanted: i=9,function(e,t){for(t in e)i=e[t],system.print(i)}([1,2])
+
+with is being translated in a manner that doesn't handle variables
+cy# function b() { for each (var t in a) {} }
+function b(){var e,t,n;with({t:a,n:undefined})for(n in t)e=t[n]}
+
+I feel like [[self toJSON] toCYON] might should be one or the other
+
+the non-local transform used for let is ludicrous... :( :(
+
+cy# function q(e) { }
+function q(e){var e}
+
+CYCompound needs to be able to replace itself away without causing multiple Replace
+fat arrows are currently output with too much verbosity
+
+CYJSString <- wrap JavaScript strings and provide them back to Objective-C
+ruby blocks need to return their last thing
+Objective-C strings might should be cyonified using double-quotes
+
+apparently you can have random escape sequences in strings, like \!
+cycript -p with processes that have spaces doesn't work