         return Int16(self.int)
     }
     public var int32: Int32 {
-        return (stringValue as NSString).intValue
+        return (stringSource as NSString).intValue
     }
     public var int64: Int64 {
-        return (stringValue as NSString).longLongValue
+        return (stringSource as NSString).longLongValue
     }
     public var int: Int {
-        return (stringValue as NSString).integerValue
+        return (stringSource as NSString).integerValue
     }
     // decimal
     public var float: Float {
-        return (stringValue as NSString).floatValue
+        return (stringSource as NSString).floatValue
     }
     public var double: Double {
-        return (stringValue as NSString).doubleValue
+        return (stringSource as NSString).doubleValue
     }
     public var string: String {
-        return stringValue
+        return stringSource
     }
 }
 

    case index(Int)
    case key(String)
}

public enum XMLSubscriptResult {


// MARK: - String extensions

public protocol StringProvider {
    var stringSource: String { get }
}

extension String : StringProvider {
    public var stringSource: String {
        return self
    }
}

extension XML : StringProvider {
    public var stringSource: String {
        if self.value == nil {
            log("xml: \(self.name) don't have any value")
        }
