public void readOrgs() throws Exception {
        current = nextToken();
        if (current == JsonToken.END_ARRAY) {
            return;
        }
        while (nextToken() != JsonToken.END_ARRAY) {
            // Traverse each org definition
            while(nextToken() != JsonToken.END_OBJECT) {
                if (jp.getCurrentName().equals(OrganizationBean.class.getSimpleName())) {
                    current = nextToken();
                    OrganizationBean orgBean = jp.readValueAs(OrganizationBean.class);
                    dispatcher.organization(orgBean);
                } else {
                    OrgElementsEnum fieldName = OrgElementsEnum.valueOf(jp.getCurrentName());
                    current = nextToken();

                    switch (fieldName) {
                        case Memberships:
                            processEntities(RoleMembershipBean.class, dispatcher::membership);
                            break;
                        case Plans:
                            readPlans();
                            break;
                        case Apis:
                            readApis();
                            break;
                        case Clients:
                            readClients();
                            break;
                        case Audits:
                            processEntities(AuditEntryBean.class, dispatcher::audit);
                            break;
                        default:
                            throw new RuntimeException("Unhandled entity " + fieldName + " with token " + current);
                    }
                }
            }
        }
    }
@see io.apiman.manager.api.exportimport.read.IImportReader#setDispatcher(io.apiman.manager.api.exportimport.read.IImportReaderDispatcher)
manager/api/export-import/src/main/java/io/apiman/manager/api/exportimport/json/JsonImportReader.java