@Override
    public AbstractComponent clone() {
        try {
            AbstractComponent clone=(AbstractComponent)super.clone();
            clone.id = null;
            return clone;
        }
        catch (CloneNotSupportedException e) {
            throw new RuntimeException("'" + this + "' is not clonable",e);
        }

    }
Clones this by returning a new instance <i>which does not have an id</i>.
An id can subsequently be assigned by calling {@link #initId}.
Note that even though this implements clone, the component subclass may
not in fact be clonable.

@throws RuntimeException if the component is not clonable
component/src/main/java/com/yahoo/component/AbstractComponent.java