//1 # NO PROBLEM- A typed collection of type object is declared. //2 # NO PROBLEM- A untyped collection is declared. //3 # PROBLEM- A typed reference is being forced to refer to a collection which is not typed and can take any element... so warning for refering a possible currupted collection. //4 # NO PROBLEM-element of type Object is added in collection of type Object. //5 # NO PROBLEM-no collection modification. //6 # NO PROBLEM-no collection modification. //7 # NO PROBLEM - Unsafe collection can refer any type of collection. //8 # PROBLEM-There is always a warning when we use a non-typed collection to add a element. //9 # NO PROBLEM-no collection modification. //10 # NO PROBLEM-no collection modification.
more about line 4: an object is added to an <Object> list. Adding to a parameterized collection never produces a warning. Either it compiles (type OK) or not (type not OK).
Only reference type counts: The variable is generic, it doesn't matter that the object (the ArrayList) is non-generic. You can safely put objects in "typeSafe". We have been already warned (that the ArrayList "typeSafe" refers to is non-generic) in line three.