Once upon a time there was a class:
public class Scope<C extends Cloneable & Comparable<C>> implements Comparable<Scope<C>>, Cloneable, Serializable {
   private C starts;
   private C ends;
   ...
   @SuppressWarnings("unchecked")
   @Override
   public Object clone() {
       Scope<C> scope;
       try {
           scope = (Scope<C>) super.clone();
           scope.setStarts((C) starts.clone()); // The method clone() from the type Object is not visible
           scope.setEnds((C) ends.clone()); // The method clone() from the type Object is not visible
       } catch (CloneNotSupportedException e) {
           throw new RuntimeException("Clone not supported");
       }
       return scope;
   }
}
In Object we have:
protected native Object clone() throws CloneNotSupportedException;
And Cloneable interface is:
public interface Cloneable { 
}
How should I clone this?
 
     
     
     
     
     
     
     
    