public static void ClearValue(OneToOneAssociation property, NakedObject target)
        {
            object     valueHolder = property.get(target).getObject();
            MethodInfo m           = valueHolder.GetType().GetMethod("clear");

            m.Invoke(valueHolder, new object[] {});
        }
        public static void SetValue <T>(OneToOneAssociation property, NakedObject target, Naked proposed)
        {
            object     valueHolder = property.get(target).getObject();
            MethodInfo m           = valueHolder.GetType().GetMethod("setValue", new[] { typeof(T) });

            m.Invoke(valueHolder, new[] { proposed.getObject() });
        }
        private static bool ClearAssociation(OneToOneAssociation property, NakedObject target)
        {
            Naked existingValue = property.get(target);

            if (existingValue != null)
            {
                if (existingValue is NakedObject)
                {
                    property.clearAssociation(target, (NakedObject)existingValue);
                }
                else
                {
                    ClearValue(property, target);
                }
                return(true);
            }
            return(false);
        }