LazyList implements Cloneable, Serializable { @SuppressWarnings("unchecked") public static <E> ListIterator<E> listIterator(Object list) { if (list == null) { List<E> empty = Collections.emptyList(); return empty.listIterator(); } if (list instanceof List) return ((List<E>) list).listIterator(); List<E> l = getList(list); return l.listIterator(); } private  LazyList(); @SuppressWarnings("unchecked") static Object add(Object list, Object item); @SuppressWarnings("unchecked") static Object add(Object list, int index, Object item); static Object addCollection(Object list, Collection<?> collection); static Object addArray(Object list, Object[] array); static Object ensureSize(Object list, int initialSize); static Object remove(Object list, Object o); static Object remove(Object list, int i); static List<E> getList(Object list); @SuppressWarnings("unchecked") static List<E> getList(Object list, boolean nullForEmpty); static boolean hasEntry(Object list); static boolean isEmpty(Object list); static String[] toStringArray(Object list); static Object toArray(Object list, Class<?> clazz); static int size(Object list); @SuppressWarnings("unchecked") static E get(Object list, int i); static boolean contains(Object list, Object item); static Object clone(Object list); static String toString(Object list); @SuppressWarnings("unchecked") static Iterator<E> iterator(Object list); @SuppressWarnings("unchecked") static ListIterator<E> listIterator(Object list);  }
@Test void testListIterator_NullInput() { ListIterator<?> iter = LazyList.listIterator(null); assertNotNull(iter); assertFalse(iter.hasNext()); assertFalse(iter.hasPrevious()); }
@Test void testListIterator_NonListInput() { String input = "a"; ListIterator<?> iter = LazyList.listIterator(input); assertNotNull(iter); assertTrue(iter.hasNext()); assertFalse(iter.hasPrevious()); assertEquals("a", iter.next()); assertFalse(iter.hasNext()); assertTrue(iter.hasPrevious()); }