docs: def pause_point(self,
  	                msg='SHUTIT PAUSE POINT',
  	                print_input=True,
  	                resize=True,
  	                color='32',
  	                default_msg=None,
  	                interact=False,
  	                wait=-1):
  		"""Inserts a pause in the build session, which allows the user to try
  		things out before continuing. Ignored if we are not in an interactive
  		mode.
  		Designed to help debug the build, or drop to on failure so the
  		situation can be debugged.
  
  		@param msg:          Message to display to user on pause point.
  		@param print_input:  Whether to take input at this point (i.e. interact), or
  		                     simply pause pending any input.
  		                     Default: True
  		@param resize:       If True, try to resize terminal.
  		                     Default: False
  		@param color:        Color to print message (typically 31 for red, 32 for green)
  		@param default_msg:  Whether to print the standard blurb
  		@param interact:     Interact without mediation, and set up environment.
  		@param wait:         Wait a few seconds rather than for input (for video mode)
  
  		@type msg:           string
  		@type print_input:   boolean
  		@type resize:        boolean
  		@type wait:          decimal
  
  		@return:             True if pause point handled ok, else false
  		"""
  		shutit = self.shutit
  		# Try and stop user being 'clever' if we are in an exam and not in debug
  		if shutit.build['exam'] and shutit.loglevel not in ('DEBUG',):
  			self.send(ShutItSendSpec(self,
  			                         send=' command alias exit=/bin/true && command alias logout=/bin/true && command alias kill=/bin/true && command alias alias=/bin/true',
  			                         echo=False,
  			                         record_command=False,
  			                         ignore_background=True))
  
  		# Flush history before we 'exit' the current session.
  		# THIS CAUSES BUGS IF WE ARE NOT IN A SHELL... COMMENTING OUT
  		# IF THE DEFAULT PEXPECT == THE CURRENCT EXPECTED, THEN OK, gnuplot in shutit-scripts with walkthrough=True is a good test
  		# Errors seen when check_exit=True
  		if self.in_shell:
  			self.send(ShutItSendSpec(self,
  			                         send=' set +m && { : $(history -a) & } 2>/dev/null',
  			                         check_exit=False,
  			                         echo=False,
  			                         record_command=False,
  			                         ignore_background=True))
  
  		if print_input:
  			# Do not resize if we are in video mode (ie wait > 0)
  			if resize and wait < 0:
  				# It is possible we do not have distro set yet, so wrap in try/catch
  				try:
  					assert not self.sendline(ShutItSendSpec(self,
  					                                        send='',
  					                                        echo=False,
  					                                        ignore_background=True)), shutit_util.print_debug()
  				except Exception:
  					pass
  			if default_msg is None:
  				if not shutit.build['video'] and not shutit.build['training'] and not shutit.build['exam'] and not shutit.build['walkthrough'] and self.shutit.loglevel not in ('DEBUG',):
  					pp_msg = '\r\nYou now have a standard shell.'
  					if not interact:
  						pp_msg += '\r\nHit CTRL and then ] at the same time to continue ShutIt run, CTRL-q to quit.'
  					if shutit.build['delivery'] == 'docker':
  						pp_msg += '\r\nHit CTRL and u to save the state to a docker image'
  					shutit.log(shutit_util.colorise(color,'\r\n' + 80*'=' + '\r\n' + msg + '\r\n' + 80*'='+'\r\n' + pp_msg),transient=True, level=logging.CRITICAL)
  				else:
  					shutit.log('\r\n' + (shutit_util.colorise(color, msg)),transient=True, level=logging.critical)
  			else:
  				shutit.log(shutit_util.colorise(color, msg) + '\r\n' + default_msg + '\r\n',transient=True, level=logging.CRITICAL)
  			oldlog = self.pexpect_child.logfile
  			self.pexpect_child.logfile = None
  			if wait > 0:
  				time.sleep(wait)
  			else:
  				# Re-set the window size to match the original window.
  				# TODO: sigwinch. Line assumes no change.
  				self.pexpect_child.setwinsize(shutit_global.shutit_global_object.root_window_size[0],shutit_global.shutit_global_object.root_window_size[1])
  				# TODO: handle exams better?
  				self.expect('.*')
  				if not shutit.build['exam'] and self.shutit.loglevel not in ('DEBUG',):
  					if self.in_shell:
  						# Give them a 'normal' shell.
  						assert not self.sendline(ShutItSendSpec(self,
  						                                        send=' bash',
  						                                        echo=False,
  						                                        ignore_background=True)), shutit_util.print_debug()
  						self.expect('.*')
  					else:
  						shutit.log('Cannot create subshell, as not in a shell.', level=logging.DEBUG)
  				if interact:
  					self.pexpect_child.interact()
  				try:
  					#shutit_global.shutit_global_object.shutit_print('pre interact')
  					if shutit_global.shutit_global_object.ispy3:
  						# For some reason interact barfs when we use _pause_input_filter, so drop it for PY3: https://github.com/pexpect/pexpect/blob/master/pexpect/pty_spawn.py#L819
  						self.pexpect_child.interact()
  					else:
  						self.pexpect_child.interact(input_filter=self._pause_input_filter)
  					#shutit_global.shutit_global_object.shutit_print('post interact')
  					self.handle_pause_point_signals()
  					#shutit_global.shutit_global_object.shutit_print('post handle_pause_point_signals')
  				except Exception as e:
  					shutit.fail('Terminating ShutIt within pause point.\r\n' + str(e)) # pragma: no cover
  				if not shutit.build['exam'] and self.shutit.loglevel not in ('DEBUG',):
  					if self.in_shell:
  						assert not self.send(ShutItSendSpec(self,
  						                                    send=' exit',
  						                                    check_exit=False,
  						                                    echo=False,
  						                                    ignore_background=True)), shutit_util.print_debug()
  					else:
  						shutit.log('Cannot exit as not in shell', level=logging.DEBUG)
  			self.pexpect_child.logfile = oldlog
  		else:
  			pass
  		shutit.build['ctrlc_stop'] = False
  		return True