code: @SuppressWarnings("unchecked")
  	@Override
  	public Parsed<State> parse(T in, Parsed<State> parsed) throws ParseException {
  		Ladder<Iterator<?>> ladder = parsed.state.ladder;
  		Iterator<Marshal<T>> iter = (Iterator<Marshal<T>>)ladder.peek();
  		if(iter==null) {
  			if(pml.length>0) {
  				ladder.push(new FieldsIterator());
  				parsed.event = START_OBJ;
  			} else {
  				ladder.push(DONE_ITERATOR);
  			}
  		} else if (DONE_ITERATOR.equals(iter)) {
  		} else {
  			FieldsIterator fields = (FieldsIterator)iter;
  			ladder.ascend(); // look at field info
  				Iterator<?> currFieldIter = ladder.peek();
  				Marshal<T> marshal;
  				if(currFieldIter==null) {
  					marshal=fields.next();
  				} else if(!DONE_ITERATOR.equals(currFieldIter)) {
  					marshal=fields.peek();
  					if(marshal==null && fields.hasNext())marshal=fields.next();
  				} else if(fields.hasNext()) {
  					marshal=fields.next();
  					ladder.push(null);
  				} else {
  					marshal=null;
  				}
  				
  				if(marshal!=null)
  					parsed = marshal.parse(in, parsed);
  			ladder.descend();
  			if(marshal==null || parsed.event==NONE) {
  				parsed.event = END_OBJ;
  				ladder.push(DONE_ITERATOR);
  			}
  		}
  		return parsed; // if unchanged, then it will end process
  	}
docs: /* (non-Javadoc)
  @see com.att.rosetta.Parse#parse(java.lang.Object, com.att.rosetta.Parsed)