Outer outer = new Outer();
outer.setName("outer name");
Inner inner = outer.new Inner();
inner.setName("inner name");
outer.setInner(inner);
OuterCanonico outerCanonico = new OuterCanonico();
OuterCanonico returningObject = new Mapping().apply(outer).to(outerCanonico);
assertTrue(outerCanonico == returningObject);
assertEquals(outer.getName(), outerCanonico.getName());
assertEquals(outer.getInner().getName(), outerCanonico.getInnerCanonico().getName());
}