@Override
      @SuppressWarnings("unchecked")
      protected T clone() {
        try {
          return (T)super.clone();
        }
        catch (CloneNotSupportedException e) {
          throw new AssertionError("Code bug: Cloneable must not throw CloneNotSupportedException", e);
        }
      }
@Override
      @SuppressWarnings("unchecked")
      protected T clone()