     public let hashValue: Int = nextHashValue()
 }
 
-public struct IntLiteralExpression : ValueExpression, RValueExpression {
+public protocol LiteralExpression : ValueExpression, RValueExpression {}
+
+public struct IntLiteralExpression : LiteralExpression {
     public typealias ValueType = Int
     
     public let hashValue: Int = nextHashValue()

    }
}

public struct StringLiteralExpression : ValueExpression, RValueExpression {
    public typealias ValueType = String
    
    public let hashValue: Int = nextHashValue()

    }
}

public struct BoolLiteralExpression : LiteralExpression {
    public typealias ValueType = Bool
    
    public let hashValue: Int = nextHashValue()
