### Question:
SchemaEventTransformer implements SchemaTransformationRule { @Override public Map<String, Object> transform(Map<String, Object> event) { for (RenameTransformationRule renameRule : renameTransformationRules) { event = renameRule.transform(event); } for (CreateNestedTransformationRule createRule : createNestedTransformationRules) { event = createRule.transform(event); } for (MoveTransformationRule moveRule : moveTransformationRules) { event = moveRule.transform(event); } for (DeleteTransformationRule deleteRule : deleteTransformationRules) { event = deleteRule.transform(event); } return event; } SchemaEventTransformer(List<TransformationRule> rules);  SchemaEventTransformer(List<RenameTransformationRule> renameTransformationRules,
                                  List<CreateNestedTransformationRule> createNestedTransformationRules,
                                  List<MoveTransformationRule> moveTransformationRules,
                                  List<DeleteTransformationRule> deleteTransformationRules); @Override Map<String, Object> transform(Map<String, Object> event); List<RenameTransformationRule> getRenameTransformationRules(); void setRenameTransformationRules(List<RenameTransformationRule> renameTransformationRules); List<CreateNestedTransformationRule> getCreateNestedTransformationRules(); void setCreateNestedTransformationRules(List<CreateNestedTransformationRule> createNestedTransformationRules); List<MoveTransformationRule> getMoveTransformationRules(); void setMoveTransformationRules(List<MoveTransformationRule> moveTransformationRules); List<DeleteTransformationRule> getDeleteTransformationRules(); void setDeleteTransformationRules(List<DeleteTransformationRule> deleteTransformationRules);  }### Answer:
@Test public void transform() { Map<String, Object> event = getFirstEvent(); List<TransformationRule> rules = new ArrayList<>(); rules.add(new RenameTransformationRule(Arrays.asList("a"), "a1")); rules.add(new RenameTransformationRule(Arrays.asList("b"), "b1")); rules.add(new RenameTransformationRule(Arrays.asList("c"), "c1")); rules.add(new RenameTransformationRule(Arrays.asList("c1", "d"), "d1")); rules.add(new CreateNestedTransformationRule(Arrays.asList("c1", "f"))); rules.add(new MoveTransformationRule(Arrays.asList("b1"), Arrays.asList("c1", "f"))); rules.add(new DeleteTransformationRule(Arrays.asList("e"))); SchemaEventTransformer eventTransformer = new SchemaEventTransformer(rules); Map<String, Object> result = eventTransformer.transform(event); assertEquals(2, result.keySet().size()); assertTrue(result.containsKey("a1")); assertTrue(result.containsKey("c1")); Map<String, Object> nested = ((Map<String, Object>) result.get("c1")); assertEquals(2, nested.keySet().size()); assertTrue(nested.containsKey("f")); nested = (Map<String, Object>) nested.get("f"); assertEquals(1, nested.keySet().size()); assertEquals("z", nested.get("b1")); }