@Override
 public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException {
   if (ea.matches(keyTag)) {
     state.loader = keyLoader;
     state.receiver = keyReceiver;
     return;
   }
   if (ea.matches(valueTag)) {
     state.loader = valueLoader;
     state.receiver = valueReceiver;
     return;
   }
   super.childElement(state, ea);
 }
        @Override
        public void text(UnmarshallingContext.State state, CharSequence text) throws SAXException {
          List<Object> r = new FinalArrayList<Object>();

          int idx = 0;
          int len = text.length();

          while (true) {
            int p = idx;
            while (p < len && !WhiteSpaceProcessor.isWhiteSpace(text.charAt(p))) p++;

            CharSequence token = text.subSequence(idx, p);
            if (!token.equals(""))
              try {
                r.add(xducer.parse(token));
              } catch (AccessorException e) {
                handleGenericException(e, true);
                continue; // move on to next
              }

            if (p == len) break; // done

            while (p < len && WhiteSpaceProcessor.isWhiteSpace(text.charAt(p))) p++;
            if (p == len) break; // done

            idx = p;
          }

          state.target = toArray(r);
        }
 @Override
 public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException {
   if (ea.matches(entryTag)) {
     state.loader = entryLoader;
   } else {
     super.childElement(state, ea);
   }
 }
 @Override
 public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException {
   // create or obtain the Map object
   try {
     target = (BeanT) state.prev.target;
     map = acc.get(target);
     if (map == null) {
       map = ClassFactory.create(mapImplClass);
     }
     map.clear();
     state.target = map;
   } catch (AccessorException e) {
     // recover from error by setting a dummy Map that receives and discards the values
     handleGenericException(e, true);
     state.target = new HashMap();
   }
 }
 @Override
 public void startElement(UnmarshallingContext.State state, TagName ea) {
   state.target = new Object[2]; // this is inefficient
 }