 	stackish.dump = ->
 		int.push """
 			#{pre.join '\n'}
+			#{read.join '\n'}
 			programState.push(#{stack.join ', '})
 			#{post.join '\n'}
 		"""
 
 		stack = []
 		pre = []
+		read = []
 		post = []
 
 		return

		return


	# these need to be declared like pops
	'&': (x, y, dir, index, stack) ->
		stack.push 'programState.next()'
		return


	'~': (x, y, dir, index, stack) ->
		stack.push 'programState.nextChar()'
		return



			pre.push "const #{name} = programState.peek()"
			name

	makeNext = (methodName) ->
		->
			name = "r#{uid}_#{read.length}"
			read.push "const #{name} = programState.#{methodName}()"
			name

	stackish.next = makeNext 'next'
	stackish.nextChar = makeNext 'nextChar'

	stackish.out = (entry) ->
		post.push entry
		return
