         }
     }
     
-    func getValueFrom<T : Any>(object:A, defaultvalue : T) -> T
+    public func getValueFrom<T : Any>(object:A, defaultvalue : T) -> T
     {
         let value: T? = getValueFrom(object)
         if let v = value {

            objc_setAssociatedObject(object, key, nil, policy)
        }
    }
    func setStrongValueOn<T : AnyObject>(object:A, value : T?)
    {
        let policy = objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC
        objc_setAssociatedObject(object, key, value, policy)
    }
    
    // Any values cannot be captured weakly.  so we don't supply a Weak setter for Any
    func setWeakValueOn<T : AnyObject>(object:A, value : T?)
    {
        let policy = objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC
        if let v = value {

        }
    }
    
    public func clear(object:A)
    {
        let policy = objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC
        objc_setAssociatedObject(object, key, nil, policy)
