/*********************************************************************************
 *                                                                               *
 * WARNING: File automatically generated by DMXmlJson. DON'T CHANGE IT manually! *
 *                                                                               *
 *********************************************************************************/

package it.bz.tis.sasabus.backend.shared;


public class SASAbusBackendUnmarshaller_Helper extends bz.davide.dmxmljson.unmarshalling.Unmarshaller
{
   protected SASAbusBackendUnmarshaller_Helper()
   {
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.NewsList", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.NewsList>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.NewsList  ret){
            // news
            if (ret.news != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.NewsList.news");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.NewsList", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.NewsList ret = new it.bz.tis.sasabus.backend.shared.NewsList();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.NewsList").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.NewsList", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // news
            if ((value = structure.property("news")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.NewsList)obj).news = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  java.util.ArrayList arrayList = new java.util.ArrayList(arr.length());       
                  while ((value = arr.nextItem()) != null) {                       
                     if (value.isNull())                                           
                        arrayList.add(null);                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList.add(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("News"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList.add(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.NewsList)obj).news = arrayList;
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.BusLineList", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.BusLineList>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.BusLineList  ret){
            // busLines
            if (ret.busLines != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusLineList.busLines");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.BusLineList", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.BusLineList ret = new it.bz.tis.sasabus.backend.shared.BusLineList();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.BusLineList").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.BusLineList", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // busLines
            if ((value = structure.property("busLines")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusLineList)obj).busLines = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  it.bz.tis.sasabus.backend.shared.BusLine[] arrayList = new it.bz.tis.sasabus.backend.shared.BusLine[arr.length()];       
                  for (int i = 0; i < arrayList.length; i++) {                       
                     value = arr.nextItem();                                       
                     if (value.isNull())                                           
                        arrayList[i] = null;                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusLine)(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("BusLine"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusLine)(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.BusLineList)obj).busLines = arrayList;
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.AreaList", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.AreaList>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.AreaList  ret){
            // areas
            if (ret.areas != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.AreaList.areas");
            // lastModified
            if (ret.lastModified != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.AreaList.lastModified");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.AreaList", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.AreaList ret = new it.bz.tis.sasabus.backend.shared.AreaList();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.AreaList").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.AreaList", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // areas
            if ((value = structure.property("areas")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.AreaList)obj).areas = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  it.bz.tis.sasabus.backend.shared.Area[] arrayList = new it.bz.tis.sasabus.backend.shared.Area[arr.length()];       
                  for (int i = 0; i < arrayList.length; i++) {                       
                     value = arr.nextItem();                                       
                     if (value.isNull())                                           
                        arrayList[i] = null;                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.Area)(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("Area"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.Area)(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.AreaList)obj).areas = arrayList;
               }
            // lastModified
            if ((value = structure.property("lastModified")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.AreaList)obj).lastModified = value.integer();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.BusTripStopList", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.BusTripStopList>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.BusTripStopList  ret){
            // busTripStops
            if (ret.busTripStops != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTripStopList.busTripStops");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.BusTripStopList", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.BusTripStopList ret = new it.bz.tis.sasabus.backend.shared.BusTripStopList();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.BusTripStopList").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.BusTripStopList", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // busTripStops
            if ((value = structure.property("busTripStops")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusTripStopList)obj).busTripStops = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  it.bz.tis.sasabus.backend.shared.BusTripStopReference[] arrayList = new it.bz.tis.sasabus.backend.shared.BusTripStopReference[arr.length()];       
                  for (int i = 0; i < arrayList.length; i++) {                       
                     value = arr.nextItem();                                       
                     if (value.isNull())                                           
                        arrayList[i] = null;                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusTripStopReference)(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("BusTripStopReference"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusTripStopReference)(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.BusTripStopList)obj).busTripStops = arrayList;
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified  ret){
            // timestamp
            if (ret.timestamp != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified.timestamp");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified ret = new it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // timestamp
            if ((value = structure.property("timestamp")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.SASAbusDBLastModified)obj).timestamp = value.integer();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.ParkingInfo", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.ParkingInfo>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.ParkingInfo  ret){
            // slots
            if (ret.slots != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.ParkingInfo.slots");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.ParkingInfo", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.ParkingInfo ret = new it.bz.tis.sasabus.backend.shared.ParkingInfo();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.ParkingInfo").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.ParkingInfo", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // slots
            if ((value = structure.property("slots")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.ParkingInfo)obj).slots = (int)value.integer();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.FreeSlots", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.FreeSlots>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.FreeSlots  ret){
            // slots
            if (ret.slots != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.FreeSlots.slots");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.FreeSlots", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.FreeSlots ret = new it.bz.tis.sasabus.backend.shared.FreeSlots();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.FreeSlots").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.FreeSlots", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // slots
            if ((value = structure.property("slots")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.FreeSlots)obj).slots = (int)value.integer();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.News", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.News>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.News  ret){
            // id
            if (ret.id != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.News.id");
            // lastmod
            if (ret.lastmod != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.News.lastmod");
            // linienliste
            if (ret.linienliste != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.News.linienliste");
            // nachricht_de
            if (ret.nachricht_de != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.News.nachricht_de");
            // nachricht_it
            if (ret.nachricht_it != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.News.nachricht_it");
            // titel_de
            if (ret.titel_de != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.News.titel_de");
            // titel_it
            if (ret.titel_it != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.News.titel_it");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.News", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.News ret = new it.bz.tis.sasabus.backend.shared.News();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.News").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.News", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // id
            if ((value = structure.property("id")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.News)obj).id = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.News)obj).id = value.string();
               }
            // lastmod
            if ((value = structure.property("lastmod")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.News)obj).lastmod = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.News)obj).lastmod = value.string();
               }
            // linienliste
            if ((value = structure.property("linienliste")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.News)obj).linienliste = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  java.util.ArrayList arrayList = new java.util.ArrayList(arr.length());       
                  while ((value = arr.nextItem()) != null) {                       
                     if (value.isNull())                                           
                        arrayList.add(null);                                       
                     else                                                          
                        arrayList.add(value.string());
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.News)obj).linienliste = arrayList;
               }
            // nachricht_de
            if ((value = structure.property("nachricht_de")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.News)obj).nachricht_de = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.News)obj).nachricht_de = value.string();
               }
            // nachricht_it
            if ((value = structure.property("nachricht_it")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.News)obj).nachricht_it = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.News)obj).nachricht_it = value.string();
               }
            // titel_de
            if ((value = structure.property("titel_de")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.News)obj).titel_de = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.News)obj).titel_de = value.string();
               }
            // titel_it
            if ((value = structure.property("titel_it")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.News)obj).titel_it = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.News)obj).titel_it = value.string();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.BusLine", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.BusLine>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.BusLine  ret){
            // area
            if (ret.area != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusLine.area");
            // busStops
            if (ret.busStops != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusLine.busStops");
            // id
            if (ret.id != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusLine.id");
            // number
            if (ret.number != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusLine.number");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.BusLine", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.BusLine ret = new it.bz.tis.sasabus.backend.shared.BusLine();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.BusLine").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.BusLine", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // area
            if ((value = structure.property("area")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusLine)obj).area = null;
               else
               {
                  String refid = value.structure().getRefId();    
                  if (refid != null)                              
                     ((it.bz.tis.sasabus.backend.shared.BusLine)obj).area = (it.bz.tis.sasabus.backend.shared.Area)identities.get(refid);
                  else {
                     Object o = newInstance(value.structure().getRuntimeClassName("Area"));              
                     internalUnmarschall(value.structure(), o.getClass().getName(), o, identities); 
                     ((it.bz.tis.sasabus.backend.shared.BusLine)obj).area = (it.bz.tis.sasabus.backend.shared.Area)o;
                  }
               }
            // busStops
            if ((value = structure.property("busStops")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusLine)obj).busStops = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  it.bz.tis.sasabus.backend.shared.BusStop[] arrayList = new it.bz.tis.sasabus.backend.shared.BusStop[arr.length()];       
                  for (int i = 0; i < arrayList.length; i++) {                       
                     value = arr.nextItem();                                       
                     if (value.isNull())                                           
                        arrayList[i] = null;                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusStop)(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("BusStop"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusStop)(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.BusLine)obj).busStops = arrayList;
               }
            // id
            if ((value = structure.property("id")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusLine)obj).id = (int)value.integer();
               }
            // number
            if ((value = structure.property("number")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusLine)obj).number = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusLine)obj).number = value.string();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.Area", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.Area>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.Area  ret){
            // bounds
            if (ret.bounds != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.Area.bounds");
            // busLines
            if (ret.busLines != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.Area.busLines");
            // id
            if (ret.id != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.Area.id");
            // name_de
            if (ret.name_de != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.Area.name_de");
            // name_it
            if (ret.name_it != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.Area.name_it");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.Area", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.Area ret = new it.bz.tis.sasabus.backend.shared.Area();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.Area").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.Area", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // bounds
            if ((value = structure.property("bounds")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.Area)obj).bounds = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  it.bz.tis.sasabus.backend.shared.LatLng[] arrayList = new it.bz.tis.sasabus.backend.shared.LatLng[arr.length()];       
                  for (int i = 0; i < arrayList.length; i++) {                       
                     value = arr.nextItem();                                       
                     if (value.isNull())                                           
                        arrayList[i] = null;                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.LatLng)(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("LatLng"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.LatLng)(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.Area)obj).bounds = arrayList;
               }
            // busLines
            if ((value = structure.property("busLines")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.Area)obj).busLines = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  it.bz.tis.sasabus.backend.shared.BusLine[] arrayList = new it.bz.tis.sasabus.backend.shared.BusLine[arr.length()];       
                  for (int i = 0; i < arrayList.length; i++) {                       
                     value = arr.nextItem();                                       
                     if (value.isNull())                                           
                        arrayList[i] = null;                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusLine)(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("BusLine"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusLine)(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.Area)obj).busLines = arrayList;
               }
            // id
            if ((value = structure.property("id")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.Area)obj).id = (int)value.integer();
               }
            // name_de
            if ((value = structure.property("name_de")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.Area)obj).name_de = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.Area)obj).name_de = value.string();
               }
            // name_it
            if ((value = structure.property("name_it")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.Area)obj).name_it = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.Area)obj).name_it = value.string();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.BusTripStopReference", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.BusTripStopReference>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.BusTripStopReference  ret){
            // busTrip
            if (ret.busTrip != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTripStopReference.busTrip");
            // index
            if (ret.index != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTripStopReference.index");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.BusTripStopReference", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.BusTripStopReference ret = new it.bz.tis.sasabus.backend.shared.BusTripStopReference();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.BusTripStopReference").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.BusTripStopReference", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // busTrip
            if ((value = structure.property("busTrip")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusTripStopReference)obj).busTrip = null;
               else
               {
                  String refid = value.structure().getRefId();    
                  if (refid != null)                              
                     ((it.bz.tis.sasabus.backend.shared.BusTripStopReference)obj).busTrip = (it.bz.tis.sasabus.backend.shared.BusTrip)identities.get(refid);
                  else {
                     Object o = newInstance(value.structure().getRuntimeClassName("BusTrip"));              
                     internalUnmarschall(value.structure(), o.getClass().getName(), o, identities); 
                     ((it.bz.tis.sasabus.backend.shared.BusTripStopReference)obj).busTrip = (it.bz.tis.sasabus.backend.shared.BusTrip)o;
                  }
               }
            // index
            if ((value = structure.property("index")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusTripStopReference)obj).index = (int)value.integer();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.BusStop", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.BusStop>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.BusStop  ret){
            // busStation
            if (ret.busStation != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusStop.busStation");
            // id
            if (ret.id != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusStop.id");
            // lat
            if (ret.lat != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusStop.lat");
            // lon
            if (ret.lon != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusStop.lon");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.BusStop", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.BusStop ret = new it.bz.tis.sasabus.backend.shared.BusStop();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.BusStop").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.BusStop", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // busStation
            if ((value = structure.property("busStation")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusStop)obj).busStation = null;
               else
               {
                  String refid = value.structure().getRefId();    
                  if (refid != null)                              
                     ((it.bz.tis.sasabus.backend.shared.BusStop)obj).busStation = (it.bz.tis.sasabus.backend.shared.BusStation)identities.get(refid);
                  else {
                     Object o = newInstance(value.structure().getRuntimeClassName("BusStation"));              
                     internalUnmarschall(value.structure(), o.getClass().getName(), o, identities); 
                     ((it.bz.tis.sasabus.backend.shared.BusStop)obj).busStation = (it.bz.tis.sasabus.backend.shared.BusStation)o;
                  }
               }
            // id
            if ((value = structure.property("id")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusStop)obj).id = (int)value.integer();
               }
            // lat
            if ((value = structure.property("lat")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusStop)obj).lat = value.decimal();
               }
            // lon
            if ((value = structure.property("lon")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusStop)obj).lon = value.decimal();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.LatLng", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.LatLng>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.LatLng  ret){
            // lat
            if (ret.lat != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.LatLng.lat");
            // lon
            if (ret.lon != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.LatLng.lon");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.LatLng", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.LatLng ret = new it.bz.tis.sasabus.backend.shared.LatLng();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.LatLng").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.LatLng", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // lat
            if ((value = structure.property("lat")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.LatLng)obj).lat = value.decimal();
               }
            // lon
            if ((value = structure.property("lon")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.LatLng)obj).lon = value.decimal();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.BusTrip", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.BusTrip>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.BusTrip  ret){
            // busLineId
            if (ret.busLineId != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTrip.busLineId");
            // busTripStop
            if (ret.busTripStop != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTrip.busTripStop");
            // endHHMMSS
            if (ret.endHHMMSS != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTrip.endHHMMSS");
            // id
            if (ret.id != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTrip.id");
            // startHHMMSS
            if (ret.startHHMMSS != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTrip.startHHMMSS");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.BusTrip", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.BusTrip ret = new it.bz.tis.sasabus.backend.shared.BusTrip();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.BusTrip").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.BusTrip", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // busLineId
            if ((value = structure.property("busLineId")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusTrip)obj).busLineId = (int)value.integer();
               }
            // busTripStop
            if ((value = structure.property("busTripStop")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusTrip)obj).busTripStop = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  it.bz.tis.sasabus.backend.shared.BusTripStop[] arrayList = new it.bz.tis.sasabus.backend.shared.BusTripStop[arr.length()];       
                  for (int i = 0; i < arrayList.length; i++) {                       
                     value = arr.nextItem();                                       
                     if (value.isNull())                                           
                        arrayList[i] = null;                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusTripStop)(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("BusTripStop"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusTripStop)(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.BusTrip)obj).busTripStop = arrayList;
               }
            // endHHMMSS
            if ((value = structure.property("endHHMMSS")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusTrip)obj).endHHMMSS = (int)value.integer();
               }
            // id
            if ((value = structure.property("id")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusTrip)obj).id = (int)value.integer();
               }
            // startHHMMSS
            if ((value = structure.property("startHHMMSS")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusTrip)obj).startHHMMSS = (int)value.integer();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.BusStation", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.BusStation>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.BusStation  ret){
            // busLines
            if (ret.busLines != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusStation.busLines");
            // busStops
            if (ret.busStops != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusStation.busStops");
            // id
            if (ret.id != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusStation.id");
            // name_de
            if (ret.name_de != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusStation.name_de");
            // name_it
            if (ret.name_it != null)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusStation.name_it");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.BusStation", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.BusStation ret = new it.bz.tis.sasabus.backend.shared.BusStation();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.BusStation").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.BusStation", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // busLines
            if ((value = structure.property("busLines")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).busLines = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  it.bz.tis.sasabus.backend.shared.BusLine[] arrayList = new it.bz.tis.sasabus.backend.shared.BusLine[arr.length()];       
                  for (int i = 0; i < arrayList.length; i++) {                       
                     value = arr.nextItem();                                       
                     if (value.isNull())                                           
                        arrayList[i] = null;                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusLine)(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("BusLine"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusLine)(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).busLines = arrayList;
               }
            // busStops
            if ((value = structure.property("busStops")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).busStops = null;
               else
               {
                  bz.davide.dmxmljson.unmarshalling.Array arr = value.array();        
                  arr.open();        
                  it.bz.tis.sasabus.backend.shared.BusStop[] arrayList = new it.bz.tis.sasabus.backend.shared.BusStop[arr.length()];       
                  for (int i = 0; i < arrayList.length; i++) {                       
                     value = arr.nextItem();                                       
                     if (value.isNull())                                           
                        arrayList[i] = null;                                       
                     else                                                          
                     {                                                                   
                        bz.davide.dmxmljson.unmarshalling.Structure tmpStructure = value.structure();
                        String refid = tmpStructure.getRefId();    
                        if (refid != null)                              
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusStop)(identities.get(refid));                                                
                        else {
                           Object o = newInstance(tmpStructure.getRuntimeClassName("BusStop"));              
                           internalUnmarschall(tmpStructure, o.getClass().getName(), o, identities); 
                           arrayList[i] = (it.bz.tis.sasabus.backend.shared.BusStop)(o);                                                
                        }
                     }                                                                   
                  }                                                                   
                  arr.close();        
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).busStops = arrayList;
               }
            // id
            if ((value = structure.property("id")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).id = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).id = value.string();
               }
            // name_de
            if ((value = structure.property("name_de")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).name_de = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).name_de = value.string();
               }
            // name_it
            if ((value = structure.property("name_it")) != null)
               if (value.isNull())
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).name_it = null;
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusStation)obj).name_it = value.string();
               }
            structure.close();
         }
      });
      this.emptyObjectCheck.put("it.bz.tis.sasabus.backend.shared.BusTripStop", new bz.davide.dmxmljson.unmarshalling.EmptyFieldChecker<it.bz.tis.sasabus.backend.shared.BusTripStop>() {
         @Override public void check(it.bz.tis.sasabus.backend.shared.BusTripStop  ret){
            // busStopId
            if (ret.busStopId != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTripStop.busStopId");
            // id
            if (ret.id != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTripStop.id");
            // timeHHMMSS
            if (ret.timeHHMMSS != 0)
               throw new RuntimeException("The constructor initialized the field it.bz.tis.sasabus.backend.shared.BusTripStop.timeHHMMSS");
         }
      });
      this.putInstanceFactory("it.bz.tis.sasabus.backend.shared.BusTripStop", new bz.davide.dmxmljson.unmarshalling.InstanceFactory() {
         @Override public Object newInstance() throws Exception {
            it.bz.tis.sasabus.backend.shared.BusTripStop ret = new it.bz.tis.sasabus.backend.shared.BusTripStop();
            emptyObjectCheck.get("it.bz.tis.sasabus.backend.shared.BusTripStop").check(ret);
            return ret;
         }
      });

      this.putClassUnmarshaller("it.bz.tis.sasabus.backend.shared.BusTripStop", new bz.davide.dmxmljson.unmarshalling.ClassUnmarshaller() {
         @Override public void unmarshall(bz.davide.dmxmljson.unmarshalling.Structure structure, Object obj, java.util.HashMap<String, Object> identities) throws Exception {
            structure.open();
            String id = structure.getId();
            if (id != null)
               identities.put(id, obj);
            bz.davide.dmxmljson.unmarshalling.Value value;
            // busStopId
            if ((value = structure.property("busStopId")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusTripStop)obj).busStopId = (int)value.integer();
               }
            // id
            if ((value = structure.property("id")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusTripStop)obj).id = (int)value.integer();
               }
            // timeHHMMSS
            if ((value = structure.property("timeHHMMSS")) != null)
               if (value.isNull())
                  new RuntimeException("Impossibile value for primitive type");
               else
               {
                  ((it.bz.tis.sasabus.backend.shared.BusTripStop)obj).timeHHMMSS = (int)value.integer();
               }
            structure.close();
         }
      });

   }
}
