@Test
@SuppressWarnings("unchecked")
public void testMixedTypes() {

  List<Object> input = Arrays.<Object> asList(null, true, 1, 1.0, "Hello world",
      ElementType.METHOD, Arrays.asList(1, 2, 3), Collections.singletonMap("a", "b"));
  List<Object> output = Protected.object(input);
  assertEquals(input, output);
  try {
    ((List<Object>) output.get(6)).set(0, 0);
    fail();
  } catch (UnsupportedOperationException expected) {}
  try {
    ((Map<Object, Object>) output.get(7)).put(0, 0);
    fail();
  } catch (UnsupportedOperationException expected) {}
}