anchor.diff:    if isDockable then result := false
     else result := fModal;
   end;
  -
  -{$ENDREGION}
  -
  -{$REGION ICESessionOptionsObserver ---------------------------------------------}
  -procedure TCEWidget.sesoptBeforeSave;
  -begin
  -end;
  -
  -procedure TCEWidget.sesoptDeclareProperties(aFiler: TFiler);
  -begin
  -  // override rules: inherited must be called. No dots in the property name, property name prefixed with the widget Name
  -  aFiler.DefineProperty(Name + '_updaterByLoopInterval', @optset_LoopInterval, @optget_LoopInterval, true);
  -  aFiler.DefineProperty(Name + '_updaterByDelayDuration', @optset_UpdaterDelay, @optget_UpdaterDelay, true);
  -end;
  -
  -procedure TCEWidget.sesoptAfterLoad;
  -begin
  -end;
  -
  -procedure TCEWidget.optget_LoopInterval(aWriter: TWriter);
  -begin
  -  aWriter.WriteInteger(fLoopInter);
  -end;
  -
  -procedure TCEWidget.optset_LoopInterval(aReader: TReader);
  -begin
  -  updaterByLoopInterval := aReader.ReadInteger;
  -end;
  -
  -procedure TCEWidget.optget_UpdaterDelay(aWriter: TWriter);
  -begin
  -  aWriter.WriteInteger(fDelayDur);
  -end;
  -
  -procedure TCEWidget.optset_UpdaterDelay(aReader: TReader);
  -begin
  -  updaterByDelayDuration := aReader.ReadInteger;
  -end;
   {$ENDREGION}
   
   {$REGION ICEContextualActions---------------------------------------------------}
  
positive.code:     property widget[index: integer]: TCEWidget read getWidget;
    end;
  
  
  
    TWidgetEnumerator = class
      fList: TCEWidgetList;
      fIndex: Integer;
  
negative.code:     procedure setLoopInt(aValue: Integer);
      procedure updaterAutoProc(Sender: TObject);
      procedure updaterLatchProc(Sender: TObject);
    protected
      fDockable: boolean;
      fModal: boolean;
  