         if let v = o as? Double { set(v) ; return }
         if let v = o as? String { set(v) ; return }
         if let v = o as? StaticString { set(v) ; return }
+        if let v = o as? ValueBase { set(v) ; return }
+        if let v = o as? ValueRef { set(v) ; return }
+        if let v = o as? ValueProtocol { set(v) ; return }
         if let v = o as? Object { setObject(vObject: v) ; return }
         if let v = o as? ObjectRef { setObject(vObject: v) ; return }
         if let v = o as? ObjectProtocol { setObject(vObject: v) ; return }

    ///
    /// - Returns: an optional UInt if stored as the value
    public func get() -> UInt8 { return UInt8(uchar) }
    /// Generic Value accessor.
    ///
    /// - Returns: an optional Object reference if stored as the value

        return nil
    }

    /// Generic value copier.
    ///
    /// - Parameter value: original `Value` to copy
    public func set(_ value: ValueBase) { ptr.pointee = value.ptr.pointee }

    /// Generic value copier.
    ///
    /// - Parameter value: original `ValueRef` to copy
    public func set(_ value: ValueRef) { ptr.pointee = value.ptr.pointee }

    /// Generic value copier.
    ///
    /// - Parameter value: original value of kind `ValueProtocol` to copy
    public func set(_ value: ValueProtocol) { ptr.pointee = value.ptr.pointee }

    /// Generic value setter.
    ///
    /// - Parameter value: String value to set
