@Override
 public void dispose() {
   myTimer.stop();
   super.dispose();
   if (myGraphics != null) {
     myGraphics.dispose();
   }
   myImage = null;
   myPipetteImage = null;
   myMaskImage = null;
 }
 @Nullable
 private ColorPipette createPipette(
     @NotNull ColorListener colorListener, @NotNull Disposable parentDisposable) {
   if (ColorPipetteBase.canUseMacPipette()) {
     ColorPipette pipette =
         getPipetteIfAvailable(new MacColorPipette(this, colorListener), parentDisposable);
     if (pipette != null) {
       return pipette;
     }
   }
   return getPipetteIfAvailable(new DefaultColorPipette(this, colorListener), parentDisposable);
 }
 @Override
 public void cancelPipette() {
   myTimer.stop();
   super.cancelPipette();
 }