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

    }
}

public struct RealLiteralExpression : LiteralExpression {
    public typealias ValueType = Double
    
    public let hashValue: Int = nextHashValue()

    }
}

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