|  | @@ -4,11 +4,22 @@ import static com.reactnativenavigation.utils.ObjectUtils.equalsNotNull;
 | 
	
		
			
			| 4 | 4 |  
 | 
	
		
			
			| 5 | 5 |  public abstract class Param<T> {
 | 
	
		
			
			| 6 | 6 |      protected T value;
 | 
	
		
			
			|  | 7 | +    private boolean consumed;
 | 
	
		
			
			| 7 | 8 |  
 | 
	
		
			
			| 8 | 9 |      Param(T value) {
 | 
	
		
			
			| 9 | 10 |          this.value = value;
 | 
	
		
			
			| 10 | 11 |      }
 | 
	
		
			
			| 11 | 12 |  
 | 
	
		
			
			|  | 13 | +    public T getAndConsume() {
 | 
	
		
			
			|  | 14 | +        T value = get();
 | 
	
		
			
			|  | 15 | +        consumed = true;
 | 
	
		
			
			|  | 16 | +        return value;
 | 
	
		
			
			|  | 17 | +    }
 | 
	
		
			
			|  | 18 | +
 | 
	
		
			
			|  | 19 | +    public void consume() {
 | 
	
		
			
			|  | 20 | +        consumed = true;
 | 
	
		
			
			|  | 21 | +    }
 | 
	
		
			
			|  | 22 | +
 | 
	
		
			
			| 12 | 23 |      public T get() {
 | 
	
		
			
			| 13 | 24 |          if (hasValue()) {
 | 
	
		
			
			| 14 | 25 |              return value;
 | 
	
	
		
			
			|  | @@ -21,7 +32,7 @@ public abstract class Param<T> {
 | 
	
		
			
			| 21 | 32 |      }
 | 
	
		
			
			| 22 | 33 |  
 | 
	
		
			
			| 23 | 34 |      public boolean hasValue() {
 | 
	
		
			
			| 24 |  | -        return value != null;
 | 
	
		
			
			|  | 35 | +        return value != null && !consumed;
 | 
	
		
			
			| 25 | 36 |      }
 | 
	
		
			
			| 26 | 37 |  
 | 
	
		
			
			| 27 | 38 |      public boolean canApplyValue() {
 |