@Test
    public void testContinueVisit() {
        System.out.println("DocumentVisitorTest: continueVisit(String ...)");
        Person person = new Person("Bill","Smith", new Date(), 1);
        Order order = new Order(125L, 12345);
        person.setOrder(order);
        Order exporder = new Order(125L, 12345);
        
        Document document = new ObjectDocument(person);
        
        Object expResult;
        Object result = document.get("family");
        
        
        GetVisitor instance = new GetVisitor(document);
        instance.visitDocument("firstName");
        assertEquals(1,instance.infoList.size());
        VisitorInfo vinfo = instance.infoList.get(instance.infoList.size()-1);
        assertEquals("Bill",vinfo.getResult());

        
        instance.visitDocument("order/orderNum");
        assertEquals(125L,instance.getResult());

        instance.visitDocument("order");
        assertEquals(exporder,instance.getResult());
        instance.continueVisit("orderNum");
        assertEquals(125L,instance.getResult());
        
        //
        // fail when field doesn't exist
        //
        try {
            instance.visitDocument("frstName");            
            if ( instance.getException() != null ) {
                throw (NullPointerException)instance.getException();
            }
            fail("A schema doesn't contain a field for key = frstName");
        } catch(NullPointerException e) {
            System.out.println("fail when field doesn't exist");            
        }
        //
        // fail when null value for a not last element in the path
        //
        try {
            Person person1 = new Person(null,"Smith", new Date(), 1);
            ObjectDocument doc = new ObjectDocument(person1);
            
            GetVisitor instance1 = new GetVisitor(doc);
            instance1.visitDocument("firstName/lastName");            
            if ( instance1.getException() != null ) {
                throw (NullPointerException)instance1.getException();
            }
            fail("Null value for key path");
        } catch(NullPointerException e) {
            System.out.println("fail when Null value for key path");            
        }
        //
        // fail when there is a path for a ValueType
        //
        try {
            Person person1 = new Person("Bill","Smith", new Date(), 1);
            ObjectDocument doc = new ObjectDocument(person1);
            GetVisitor instance1 = new GetVisitor(doc);
            instance1.visitDocument("firstName/lastName");            
            if ( instance1.getException() != null ) {
                throw (IllegalArgumentException)instance1.getException();
            }
            fail("Path requires ValueType");
        } catch(IllegalArgumentException e) {
            System.out.println("fail when Path requires ValueType");            
        }

        
        expResult = 125L;
        instance.visitDocument("order/orderNum");
        
        result = instance.getResult();
        assertEquals(expResult, result);
        
    }