# File lib/glue/property.rb, line 118
        def self.add_prop(target, prop)
                if idx = target.__props.index(prop)
                        # override in case of duplicates. Keep the order of the props.
                        target.__props[idx] = prop
                else
                        target.__props << prop
                end
                
                # Precompile the property read/write methods

                s, klass = prop.symbol, prop.klass

                if prop.meta[:reader]
                        target.module_eval %{
                                def #{s}
                                        return @#{s}
                                end
                        }
                end
                        
                # gmosx: __force_xxx reuses xxx= to allow for easier
                # overrides.

                if prop.meta[:writer]
                        target.module_eval %{
                                #{prop_setter(prop)}
                                
                                def __force_#{s}(val)
                                                self.#{s}=(} + case klass.name
                                                        when Fixnum.name
                                                                "val.to_i()"
                                                        when String.name
                                                                "val.to_s()"
                                                        when Float.name
                                                                "val.to_f()"
                                                        when Time.name
                                                                "Time.parse(val.to_s())"
                                                        when TrueClass.name, FalseClass.name
                                                                "val.to_i() > 0"
                                                        else
                                                                "val"
                                                end + %{) 
                                end
                        }
                end
        end