code: public void check(ILexLocation execl, Context ctxt)
  	{
  		// skips if breakpoint is disabled
  		// if(!enabled){
  		// return;
  		// }
  
  		location.hit();
  		hits++;
  
  		ThreadState state = ctxt.threadState;
  
  		if (Settings.dialect != Dialect.VDM_SL)
  		{
  			state.reschedule(ctxt, execl);
  		}
  
  		if (state.stepline != null)
  		{
  			if (execl.getStartLine() != state.stepline.getStartLine()) // NB just line, not pos
  			{
  				if (state.nextctxt == null && state.outctxt == null
  						|| state.nextctxt != null
  						&& !isAboveNext(ctxt.getRoot())
  						|| state.outctxt != null && isOutOrBelow(ctxt))
  				{
  					try
  					{
  						enterDebugger(ctxt);
  					}
  					catch (DebuggerException e)
  					{
  						throw e;
  					}
  				}
  			}
  		}
  	}
docs: Check whether to stop. The implementation in Breakpoint is used to check for the "step" and "next" commands,
  using the stepline, nextctxt and outctxt fields. If the current line is different to the last step line, and the
  current context is not "above" the next context or the current context equals the out context or neither the next
  or out context are set, a {@link Stoppoint} is created and its check method is called - which starts a
  DebuggerReader session.
  
  @param execl
  The execution location.
  @param ctxt
  The execution context.