| 
					
					
						
							
						
					
					
				 | 
				@ -348,24 +348,49 @@ mod test { | 
			
		
		
	
		
			
				 | 
				 | 
				  #[test]
 | 
				 | 
				 | 
				  #[test]
 | 
			
		
		
	
		
			
				 | 
				 | 
				  fn correctly_handles_symbol_tuples() {
 | 
				 | 
				 | 
				  fn correctly_handles_symbol_tuples() {
 | 
			
		
		
	
		
			
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    setup.run_symbol((TestSymbol { reached: false }, TestSymbol { reached: false }), false).unwrap();
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    setup
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .run_symbol(
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        (TestSymbol { reached: false }, TestSymbol { reached: false }),
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        false,
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      )
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .unwrap();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    assert_eq!(*count.borrow(), 2);
 | 
				 | 
				 | 
				    assert_eq!(*count.borrow(), 2);
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    setup.run_symbol((TestSymbol { reached: true }, TestSymbol { reached: false }), false).unwrap();
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    setup
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .run_symbol(
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        (TestSymbol { reached: true }, TestSymbol { reached: false }),
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        false,
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      )
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .unwrap();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    assert_eq!(*count.borrow(), 1);
 | 
				 | 
				 | 
				    assert_eq!(*count.borrow(), 1);
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				    // An unreached symbol forces all further symbols
 | 
				 | 
				 | 
				    // An unreached symbol forces all further symbols
 | 
			
		
		
	
		
			
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    setup.run_symbol((TestSymbol { reached: false }, TestSymbol { reached: true }), false).unwrap();
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    setup
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .run_symbol(
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        (TestSymbol { reached: false }, TestSymbol { reached: true }),
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        false,
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      )
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .unwrap();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    assert_eq!(*count.borrow(), 2);
 | 
				 | 
				 | 
				    assert_eq!(*count.borrow(), 2);
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    setup.run_symbol((TestSymbol { reached: true }, TestSymbol { reached: true }), false).unwrap();
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    setup
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .run_symbol(
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        (TestSymbol { reached: true }, TestSymbol { reached: true }),
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        false,
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      )
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .unwrap();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    assert_eq!(*count.borrow(), 0);
 | 
				 | 
				 | 
				    assert_eq!(*count.borrow(), 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
				 | 
				 | 
				    let (count, setup) = get_setup();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    setup.run_symbol((TestSymbol { reached: true }, TestSymbol { reached: true }), true).unwrap();
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    setup
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .run_symbol(
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        (TestSymbol { reached: true }, TestSymbol { reached: true }),
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        true,
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      )
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      .unwrap();
 | 
			
		
		
	
		
			
				 | 
				 | 
				    assert_eq!(*count.borrow(), 2);
 | 
				 | 
				 | 
				    assert_eq!(*count.borrow(), 2);
 | 
			
		
		
	
		
			
				 | 
				 | 
				  }
 | 
				 | 
				 | 
				  }
 | 
			
		
		
	
		
			
				 | 
				 | 
				}
 | 
				 | 
				 | 
				}
 |