replaced SingletonList/EmptyList implementations with the JDK default ones ...

... and introduced some generics