public void testNestedMetawidget() {

    Contact contact = new PersonalContact();
    AndroidMetawidget metawidget = new AndroidMetawidget(null);
    Stub stub = new Stub(null);
    stub.setTag("dateOfBirth");
    metawidget.addView(stub);
    metawidget.setToInspect(contact);

    // Just TableLayout

    assertEquals(null, contact.getFirstname());
    assertEquals(null, contact.getAddress().getStreet());
    ((EditText) metawidget.findViewWithTags("firstname")).setText("Foo");
    ((EditText) metawidget.findViewWithTags("address", "street")).setText("Bar");
    assertEquals(
        metawidget,
        metawidget
            .findViewWithTags("address", "street")
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent());
    assertEquals(
        metawidget,
        metawidget
            .findViewWithTags("address", "postcode")
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent()
            .getParent());
    metawidget.getWidgetProcessor(SimpleBindingProcessor.class).save(metawidget);
    assertEquals("Foo", contact.getFirstname());
    assertEquals("Bar", contact.getAddress().getStreet());

    // With TabSheetLayoutDecorator

    metawidget.setLayout(
        new TabHostLayoutDecorator(
            new LayoutDecoratorConfig<View, ViewGroup, AndroidMetawidget>()
                .setLayout(
                    new org.metawidget.android.widget.layout.TableLayout(
                        new LinearLayoutConfig()))));
    ((EditText) metawidget.findViewWithTags("firstname")).setText("Foo1");
    ((EditText) metawidget.findViewWithTags("address", "street")).setText("Bar1");
    assertTrue(
        metawidget
                .findViewWithTags("address", "street")
                .getParent()
                .getParent()
                .getParent()
                .getParent()
                .getParent()
                .getParent()
                .getParent()
                .getParent()
                .getParent()
            instanceof TabHost);
    metawidget.getWidgetProcessor(SimpleBindingProcessor.class).save(metawidget);
    assertEquals("Foo1", contact.getFirstname());
    assertEquals("Bar1", contact.getAddress().getStreet());
  }