@Override
 public void transform(AffineTransform tx) {
   if (get(TRANSFORM) != null
       || (tx.getType() & (AffineTransform.TYPE_TRANSLATION)) != tx.getType()) {
     if (get(TRANSFORM) == null) {
       TRANSFORM.setClone(this, tx);
     } else {
       AffineTransform t = TRANSFORM.getClone(this);
       t.preConcatenate(tx);
       set(TRANSFORM, t);
     }
   } else {
     super.transform(tx);
   }
 }
 @Override
 public void invalidate() {
   super.invalidate();
   cachedDrawingArea = null;
 }