Sets value of object property specified by its name.

        If the property does not exist or introspection fails
        this method doesn't do anything and doesn't any throw errors.

        :param obj: an object to write property to.

        :param name: a name of the property to set.

        :param value: a new value for the property to set.

def set_property(obj, name, value):
        """
        Sets value of object property specified by its name.

        If the property does not exist or introspection fails
        this method doesn't do anything and doesn't any throw errors.

        :param obj: an object to write property to.

        :param name: a name of the property to set.

        :param value: a new value for the property to set.
        """
        if obj == None:
            raise Exception("Object cannot be null")
        if name == None:
            raise Exception("Property name cannot be null")
        
        name = name.lower()
        
        try:
            for property_name in dir(obj): 
                if property_name.lower() != name:
                    continue

                property = getattr(obj, property_name)

                if PropertyReflector._is_property(property, property_name):
                    setattr(obj, property_name, value)
        except:
            pass