//SILP: EXTRA_SETUP_PROPERTY(Bool, bool)
 public static BoolProperty SetupBoolProperty(this Extra ext,                                                           //__SILP__
                                              string fragment, Func <bool> getter,                                      //__SILP__
                                              Func <IVar <bool>, bool, bool> checker,                                   //__SILP__
                                              Action <IVar <bool>, bool> watcher)                                       //__SILP__
 {
     return(ext.SetupProperty <BoolProperty, bool>(PropertiesConsts.TypeBoolProperty,                                   //__SILP__
                                                   fragment, getter,                                                    //__SILP__
                                                   checker == null ? null : new BlockValueChecker <bool>(ext, checker), //__SILP__
                                                   watcher == null ? null : new BlockValueWatcher <bool>(ext, watcher)  //__SILP__
                                                   ));                                                                  //__SILP__
 }                                                                                                                      //__SILP__
        }                                                                                    //__SILP__

        //__SILP__
        //SILP: EXTRA_SETUP_PROPERTY(Float, float)
        public static FloatProperty SetupFloatProperty(this Extra ext,                                                            //__SILP__
                                                       string fragment, Func <float> getter,                                      //__SILP__
                                                       Func <IVar <float>, float, bool> checker,                                  //__SILP__
                                                       Action <IVar <float>, float> watcher)                                      //__SILP__
        {
            return(ext.SetupProperty <FloatProperty, float>(PropertiesConsts.TypeFloatProperty,                                   //__SILP__
                                                            fragment, getter,                                                     //__SILP__
                                                            checker == null ? null : new BlockValueChecker <float>(ext, checker), //__SILP__
                                                            watcher == null ? null : new BlockValueWatcher <float>(ext, watcher)  //__SILP__
                                                            ));                                                                   //__SILP__
        }                                                                                                                         //__SILP__
        }                                                                                       //__SILP__

        //__SILP__
        //SILP: EXTRA_SETUP_PROPERTY(Double, double)
        public static DoubleProperty SetupDoubleProperty(this Extra ext,                                                             //__SILP__
                                                         string fragment, Func <double> getter,                                      //__SILP__
                                                         Func <IVar <double>, double, bool> checker,                                 //__SILP__
                                                         Action <IVar <double>, double> watcher)                                     //__SILP__
        {
            return(ext.SetupProperty <DoubleProperty, double>(PropertiesConsts.TypeDoubleProperty,                                   //__SILP__
                                                              fragment, getter,                                                      //__SILP__
                                                              checker == null ? null : new BlockValueChecker <double>(ext, checker), //__SILP__
                                                              watcher == null ? null : new BlockValueWatcher <double>(ext, watcher)  //__SILP__
                                                              ));                                                                    //__SILP__
        }                                                                                                                            //__SILP__
        }                                                                                    //__SILP__

        //__SILP__
        public static LongProperty SetupLongProperty(this Extra ext,                         //__SILP__
                                                     string fragment, Func <long> getter)    //__SILP__
        {
            return(SetupLongProperty(ext, fragment, getter, null, null));                    //__SILP__
        }                                                                                    //__SILP__
        }                                                                                    //__SILP__

        //__SILP__
        public static BoolProperty SetupBoolProperty(this Extra ext,                         //__SILP__
                                                     string fragment, Func <bool> getter)    //__SILP__
        {
            return(SetupBoolProperty(ext, fragment, getter, null, null));                    //__SILP__
        }                                                                                    //__SILP__
        }                                                                                          //__SILP__

        //__SILP__
        public static DoubleProperty SetupDoubleProperty(this Extra ext,                           //__SILP__
                                                         string fragment, Func <double> getter)    //__SILP__
        {
            return(SetupDoubleProperty(ext, fragment, getter, null, null));                        //__SILP__
        }                                                                                          //__SILP__
        }                                                                                       //__SILP__

        //__SILP__
        public static FloatProperty SetupFloatProperty(this Extra ext,                          //__SILP__
                                                       string fragment, Func <float> getter)    //__SILP__
        {
            return(SetupFloatProperty(ext, fragment, getter, null, null));                      //__SILP__
        }                                                                                       //__SILP__