### Question:
DefaultChangerCollector implements ChangerCollector { @Override public List<Item> collect(Object source) { if (source == null){ return Collections.emptyList(); } List<Item> result = Lists.newArrayList(); ReflectionUtils.doWithFields(source.getClass(), field -> { Class fieldCls = field.getType(); if (Changer.class.isAssignableFrom(fieldCls)){ field.setAccessible(true); Object value = field.get(source); if (value != null){ result.add(new Item(field.getName(), value)); } } }); return result; } private  DefaultChangerCollector(); static DefaultChangerCollector getInstance(); @Override List<Item> collect(Object source);  }### Answer:
@Test public void collect() throws Exception { List<ChangerCollector.Item> items = this.changerCollector.collect(this.data); Assert.assertEquals(5, items.size()); }