public static <T> List<T> move(List<T> list, T element, int newPosition) {
		Assert.notNull(list);
		if (false == list.contains(element)) {
			list.add(newPosition, element);
		} else {
			list.remove(element);
			list.add(newPosition, element);
		}
		return list;
	}
@Test
	public void testMoveElementToPosition() {
		List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));

		// Move "B" to position 2
		List<String> expectedResult1 = new ArrayList<>(Arrays.asList("A", "C", "B", "D"));
		assertEquals(expectedResult1, ListUtil.move(list, "B", 2));

		list = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));

		// Move "D" to position 0
		List<String> expectedResult2 = new ArrayList<>(Arrays.asList("D", "A", "B", "C"));
		assertEquals(expectedResult2, ListUtil.move(list, "D", 0));

		list = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));

		// Move "E" (not in list) to position 1
		List<String> expectedResult3 = new ArrayList<>(Arrays.asList("A", "E", "B", "C", "D"));
		assertEquals(expectedResult3, ListUtil.move(list, "E", 1));
	}