@@ -0,0 +1,1557 @@
+package sfBugsNew;%0A%0Aimport java.io.Serializable;%0A%0Apublic class Bug1242 %7B%0A%0A%0A    public static class Child extends Parent%3CSomething%3E%0A    %7B%0A        @Override%0A        public Something getDuplicateValue()%0A        %7B%0A            Something value = super.getDuplicateValue();%0A            %0A            System.err.println(%22getValue() called.%22);%0A            %0A            return value;%0A        %7D%0A    %7D%0A    public static interface Duplicatable%3CT extends Duplicatable%3CT%3E%3E extends Cloneable%0A    %7B%0A        T getDuplicate();%0A    %7D%0A    public static class Interim%3CT extends Interim%3CT%3E%3E implements Duplicatable%3CT%3E%0A    %7B%0A        @Override%0A        public T getDuplicate()%0A        %7B%0A            try%0A            %7B%0A                return (T) clone();%0A            %7D%0A            catch (CloneNotSupportedException cnse)%0A            %7B%0A                return null;%0A            %7D%0A        %7D%0A    %7D%0A    // Alternative that produces no bug warnings:%0A    //public class Parent%3CT extends Duplicatable%3CT%3E%3E%0A    public static class Parent%3CT extends Interim%3CT%3E%3E%0A    %7B%0A        private T value;%0A        %0A        public void setValue(T newValue)%0A        %7B%0A            value = newValue;%0A        %7D%0A        %0A        public T getDuplicateValue()%0A        %7B%0A            if (value == null)%0A            %7B%0A                return null;%0A            %7D%0A            T duplicate = value.getDuplicate();%0A            return duplicate;%0A        %7D%0A    %7D%0A    public static class Something extends Interim%3CSomething%3E%0A    %7B%0A        public void doStuff()%0A        %7B%0A            System.err.println(%22Hello%22);%0A        %7D%0A    %7D%0A%0A%7D%0A

add new test case