protected String createNewDeviceObject() throws Exception {
    List<MobileObject> beans =
        this.runner.getDeviceDatabase().readByStorage(this.runner.getService());

    // Create the new ticket on the device
    MobileObject bean = null;
    for (MobileObject cour : beans) {
      if (!cour.isProxy() && !cour.isCreatedOnDevice()) {
        bean = cour;
        break;
      }
    }

    MobileObject newTicket = new MobileObject();
    newTicket.setStorageId(bean.getStorageId());

    newTicket.setValue("name", "This new refrigerator is broken");

    // Referenced Nested Properties
    newTicket.setValue("customerInfo.id", bean.getValue("customerInfo.id"));
    newTicket.setValue("customerInfo.customerId", bean.getValue("customerInfo.customerId"));
    newTicket.setValue("customerInfo.name", bean.getValue("customerInfo.name"));
    newTicket.setValue("customerInfo.comments", bean.getValue("customerInfo.comments"));

    // Notes
    for (int i = 0; i < 2; i++) {
      BeanListEntry note = new BeanListEntry();
      note.setProperty("note", "note://" + i + "/added");
      IndexingAPIUtil.addBean(newTicket, "notes", note);
    }

    // Parts
    for (int i = 0; i < 2; i++) {
      BeanListEntry part = new BeanListEntry();
      part.setProperty("name", "part://" + i + "/added");
      IndexingAPIUtil.addBean(newTicket, "parts", part);
    }

    this.runner.create(newTicket);

    return newTicket.getRecordId();
  }
  protected void assertBean(MobileObject deviceBean, Ticket serverBean) {
    // Asserting Object Ids
    if (!deviceBean.isCreatedOnDevice()) {
      assertEquals(
          "Object ids must match!!", deviceBean.getServerRecordId(), serverBean.getTicketId());
    }

    assertEquals("Ticket Names must match!!", deviceBean.getValue("name"), serverBean.getName());

    // Asserting Nested Properties
    if (serverBean.getCustomerInfo() != null) {
      assertEquals(
          "Customer Id must match!!",
          deviceBean.getValue("customerInfo.customerId"),
          serverBean.getCustomerInfo().getCustomerId());
      assertEquals(
          "Customer Name must match!!",
          deviceBean.getValue("customerInfo.name"),
          serverBean.getCustomerInfo().getName());
      assertEquals(
          "Customer Comments must match!!",
          deviceBean.getValue("customerInfo.comments"),
          serverBean.getCustomerInfo().getComments());
    }

    if (serverBean.getEquipment() != null) {
      assertEquals(
          "Equipment Name must match!!",
          deviceBean.getValue("equipment.name"),
          serverBean.getEquipment().getName());
    }

    if (serverBean.getTechnician() != null) {
      assertEquals(
          "Technician EmployeeId must match!!",
          deviceBean.getValue("technician.employeeId"),
          serverBean.getTechnician().getEmployeeId());
      assertEquals(
          "Technician Name must match!!",
          deviceBean.getValue("technician.name"),
          serverBean.getTechnician().getName());
      assertEquals(
          "Technician Status must match!!",
          deviceBean.getValue("technician.status"),
          serverBean.getTechnician().getStatus());
    }

    // Asserting Indexed Properties from Server to Device
    List<Note> notes = serverBean.getNotes();
    if (notes != null) {
      for (Note note : notes) {
        this.assertNote(deviceBean, note);
      }
    }

    List<Part> parts = serverBean.getParts();
    if (parts != null) {
      for (Part part : parts) {
        this.assertPart(deviceBean, part);
      }
    }

    // Asserting Indexed Properties from Device to Server
    BeanList deviceNotes = IndexingAPIUtil.readList(deviceBean, "notes");
    for (int i = 0; i < deviceNotes.size(); i++) {
      if (deviceBean.getValue("notes[" + i + "].note") != null) {
        this.assertNote(deviceBean, i, notes);
      }
    }

    BeanList deviceParts = IndexingAPIUtil.readList(deviceBean, "parts");
    for (int i = 0; i < deviceParts.size(); i++) {
      if (deviceBean.getValue("parts[" + i + "].name") != null) {
        this.assertPart(deviceBean, i, parts);
      }
    }
  }