code: private void findReferencesIterable(SerIterator itemIterator, Map<Object, Integer> objects) {
          if (itemIterator.category() == SerCategory.MAP) {
              while (itemIterator.hasNext()) {
                  itemIterator.next();
                  findReferencesBean(itemIterator.key(), itemIterator.keyType(), objects, null);
                  findReferencesBean(itemIterator.value(), itemIterator.valueType(), objects, itemIterator);
              }
          } else if (itemIterator.category() == SerCategory.COUNTED) {
              while (itemIterator.hasNext()) {
                  itemIterator.next();
                  findReferencesBean(itemIterator.value(), itemIterator.valueType(), objects, itemIterator);
              }
          } else if (itemIterator.category() == SerCategory.TABLE) {
              while (itemIterator.hasNext()) {
                  itemIterator.next();
                  findReferencesBean(itemIterator.key(), itemIterator.keyType(), objects, null);
                  findReferencesBean(itemIterator.column(), itemIterator.columnType(), objects, null);
                  findReferencesBean(itemIterator.value(), itemIterator.valueType(), objects, itemIterator);
              }
          } else if (itemIterator.category() == SerCategory.GRID) {
              while (itemIterator.hasNext()) {
                  itemIterator.next();
                  findReferencesBean(itemIterator.value(), itemIterator.valueType(), objects, itemIterator);
              }
          } else {
              while (itemIterator.hasNext()) {
                  itemIterator.next();
                  findReferencesBean(itemIterator.value(), itemIterator.valueType(), objects, itemIterator);
              }
          }
      }
docs: recursively find the references in an iterable