anchor.diff:    }
   
     /// change the value of the model
  -  rate(num value) {
  +  void rate(num value) {
       if (!readonly && value >= 0 && value <= range.length) {
         writeValue(value);
       }
     }
   
     /// fired when a mouse enters to the icon, and it change the [value] of the rating
  -  enter(num _value) {
  +  void enter(num _value) {
       if (!readonly) {
         value = _value;
         _onHoverCtrl.add(_value);
  
positive.code:   }
  
    /// update model to view
    writeValue(_value) {
      onChange((value = preValue = _value ??= 0).toString());
    }
  
    /// build the template of the objects that will be rendered
  
negative.code:   }
  
    /// fired when the mouse leave the icon, and it resets the [value] of the rating
    void reset() {
      value = preValue;
      _onLeaveCtrl.add(value);
    }
  
    /// listen when the user does a key-down on the elements
    @HostListener('keydown', const ['\$event'])
    void onKeydown(KeyboardEvent event) {
      if (![KeyCode.LEFT, KeyCode.UP, KeyCode.RIGHT, KeyCode.DOWN].contains(event.which)) {
        return;
      }
  