| 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     if false then x else y -> y 
                   
                 
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                   Evaluate simple math between two constants.
  9  *  3     -->    27
 "G" + "G"    -->   "GG" 
                 
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     Evaluating constants to not mess with our expressions:
                   
                 
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              
                
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     Optimize range/interval comparisons with proper max/min logic
                   
                 
              
              
                - 
                  
                    exp
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     String comparisons to IsNullOrEmpty
                   
                 
              
              
                - 
                  
                    _arg1
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     Purpose of this is to replace non-used anonymous types:
 new AnonymousObject(Item1 = x, Item2 = "").Item1    -->   x
                   
                 
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  e
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  e
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                   The purpose of this is to optimize away already known constant=constant style expressions.
   7 > 8      -->   False
 "G" = "G"    -->   True 
                 
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     Additional arithmetic identity optimizations
 x - 0 -> x, x - x -> 0, x % 1 -> 0
                   
                 
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     Simplify conditional expressions 
 x ? true : false -> x, x ? false : true -> !x, x ? y : y -> y
                   
                 
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     String concatenation with empty string optimization
 "" + x -> x, x + "" -> x
                   
                 
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     Not in use, would cause looping...
                   
                 
              
              
                - 
                  
                    _arg1
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  exp
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     Balance tree that is too much weighted to other side.
 The real advantage is not-so-nested-stack
                   
                 
              
              
                - 
                  
                    _arg1
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     Not in use, would cause looping...
                   
                 
              
              
                - 
                  
                    _arg1
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  exp
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              
                
                  
                    
                   
                  
                    
                   
                  
                    
                  
                  
                     Not in use, would cause looping...
 This is opposite of gather
                   
                 
              
              
                - 
                  
                    e
                  
                  :
                  
Expression
                 
                
               
              
                - 
                  
                    Returns: 
                  
                  
Expression
                 
                
               
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  exp
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           | 
        
        
          | 
            
           | 
          
            
              - 
                
                  _arg1
                
                :
                
Expression
               
              
             
            
              - 
                
                  Returns: 
                
                
Expression
               
              
             
           |