public void add(final Drawable dobj) {
   if (dobj instanceof Composite) {
     Composite cmplx = (Composite) dobj;
     Primitive[] primes = null;
     if (cmplx.getCategory() != null) {
       super.add(cmplx); // BufForDrawables.add(Composite)
       ensureNonNullShadowBuf();
       primes = cmplx.getPrimitives();
       for (int idx = 0; idx < primes.length; idx++) shadowbuf.add(primes[idx]);
     } else {
       ensureNonNullShadowBuf();
       primes = cmplx.getPrimitives();
       for (int idx = 0; idx < primes.length; idx++) {
         super.add(primes[idx]); // BufForDrawables.add(Primitive)
         shadowbuf.add(primes[idx]);
       }
     }
   } else { // if ( dobj instanceof Primitive )
     Primitive prime = (Primitive) dobj;
     super.add(prime); // BufForDrawables.add(Primitive)
     ensureNonNullShadowBuf();
     shadowbuf.add(prime);
   }
 }