### Question:
PojoSink extends NamedSink { protected static Pair<String, Class<? extends Object>> getChildInfo(Class target) { Field[] declaredFields = target.getDeclaredFields(); for (Field field : declaredFields) { final Class<?> type = field.getType(); if (type.isAssignableFrom(Collection.class)) { final ParameterizedType parameterizedType = (ParameterizedType) field.getGenericType(); String clazz = null; try { clazz = parameterizedType.getActualTypeArguments()[0].getTypeName(); return new Pair(field.getName(), Class.forName(clazz)); } catch (ClassNotFoundException ex) { throw new IllegalStateException("Cannot find class " + clazz, ex); } } } return null; } PojoSink(Class target, Consumer<Object> consumer, Consumer<Map<String, Object>> devNull);  PojoSink(String sinkName, Class target, Consumer<Object> consumer, Consumer<Map<String, Object>> devNull); @Override void processRow(Row currentRow); void setField(Object target, String name, Optional<Object> value); static Field getFieldAnnotatedWith(Class clazz, String name);  }### Answer:
@Test public void getChildInfo() { Class<? extends Object> childType = PojoSink.getChildInfo(Developer.class).getValue(); assertNotNull(childType); System.out.println("Childtype: " + childType); assertTrue(ProgrammingLanguage.class.isAssignableFrom(childType)); }