public void write_slice_expr(slice_expr _slice_expr)
		{
			write_dereference(_slice_expr);
			if (_slice_expr.v == null)
			{
				bw.Write((byte)0);
			}
			else
			{
				bw.Write((byte)1);
				_slice_expr.v.visit(this);
			}
			if (_slice_expr.from == null)
			{
				bw.Write((byte)0);
			}
			else
			{
				bw.Write((byte)1);
				_slice_expr.from.visit(this);
			}
			if (_slice_expr.to == null)
			{
				bw.Write((byte)0);
			}
			else
			{
				bw.Write((byte)1);
				_slice_expr.to.visit(this);
			}
			if (_slice_expr.step == null)
			{
				bw.Write((byte)0);
			}
			else
			{
				bw.Write((byte)1);
				_slice_expr.step.visit(this);
			}
		}
		public void read_slice_expr(slice_expr _slice_expr)
		{
			read_dereference(_slice_expr);
			_slice_expr.v = _read_node() as addressed_value;
			_slice_expr.from = _read_node() as expression;
			_slice_expr.to = _read_node() as expression;
			_slice_expr.step = _read_node() as expression;
		}
		public void visit(slice_expr _slice_expr)
		{
			bw.Write((Int16)210);
			write_slice_expr(_slice_expr);
		}
		public void visit(slice_expr _slice_expr)
		{
			read_slice_expr(_slice_expr);
		}