public void setValue(V value)
    {
        try
            {
            BeanInfo beanInfo = Introspector.getBeanInfo(source.getClass());
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
            PropertyDescriptor foundProperty = null;

            for (PropertyDescriptor propertyDescriptor : propertyDescriptors)
                {
                if (propertyDescriptor.getName().equals(this.property))
                    {
                    foundProperty = propertyDescriptor;
                    }
                }
            if (foundProperty != null)
                {
                foundProperty.getWriteMethod().invoke(source, value);
                }
            }
        catch (InvocationTargetException e)
            {
            System.out.println("Problem calling method for: " + ((source != null) ? source.getClass() : null));
            }
        catch (IllegalAccessException e)
            {
            System.out.println("Problem calling method for: " + ((source != null) ? source.getClass() : null));
            }
        catch (IntrospectionException e)
            {
            System.out.println("Problem getting BeanInfo for: " + ((source != null) ? source.getClass() : null));
            }
    }