code: @SuppressWarnings("unchecked")
      public <T extends AbstractJaxb> T copy(Class<T> tagType)
              throws TagTypeUnmatchException {
      	T copy = null;
          if (!tagType.equals(this.getClass())) {
              log.warn("to use copy() method, tagType must be same type of the original object.");
              throw new TagTypeUnmatchException(getClass(), tagType);
          }
          try {
  			copy = (T) this.clone();
  		} catch (CloneNotSupportedException e) {
  			log.error("can not create clone(copy) of this object.", e);
  		}
          CopyUtil.copyOtherAttr(this, copy);
          return copy;
      }
docs: <p>
  return deep copy of myself
  </p>
  <p>
  <strong>NOTICE: DO NOT USE clone() and copyTo() method !</strong>
  They has bug. Use this copy() method instead of them.
  </p>
  
  <pre>
  // usage
  Div div = html.getById(Div.class, &quot;foo&quot;);
  Div div2 = div.copy(Div.class);
  </pre>
  
  @param tagType
  @return
  @throws TagTypeUnmatchException