docs: public <FT, FID> BaseForeignCollection<FT, FID> buildForeignCollection(Object parent, FID id) throws SQLException {
  		// this can happen if we have a foreign-auto-refresh scenario
  		if (foreignFieldType == null) {
  			return null;
  		}
  		@SuppressWarnings("unchecked")
  		Dao<FT, FID> castDao = (Dao<FT, FID>) foreignDao;
  		if (!fieldConfig.isForeignCollectionEager()) {
  			// we know this won't go recursive so no need for the counters
  			return new LazyForeignCollection<FT, FID>(castDao, parent, id, foreignFieldType,
  					fieldConfig.getForeignCollectionOrderColumnName(), fieldConfig.isForeignCollectionOrderAscending());
  		}
  
  		// try not to create level counter objects unless we have to
  		LevelCounters levelCounters = threadLevelCounters.get();
  		if (levelCounters == null) {
  			if (fieldConfig.getForeignCollectionMaxEagerLevel() == 0) {
  				// then return a lazy collection instead
  				return new LazyForeignCollection<FT, FID>(castDao, parent, id, foreignFieldType,
  						fieldConfig.getForeignCollectionOrderColumnName(),
  						fieldConfig.isForeignCollectionOrderAscending());
  			}
  			levelCounters = new LevelCounters();
  			threadLevelCounters.set(levelCounters);
  		}
  
  		if (levelCounters.foreignCollectionLevel == 0) {
  			levelCounters.foreignCollectionLevelMax = fieldConfig.getForeignCollectionMaxEagerLevel();
  		}
  		// are we over our level limit?
  		if (levelCounters.foreignCollectionLevel >= levelCounters.foreignCollectionLevelMax) {
  			// then return a lazy collection instead
  			return new LazyForeignCollection<FT, FID>(castDao, parent, id, foreignFieldType,
  					fieldConfig.getForeignCollectionOrderColumnName(), fieldConfig.isForeignCollectionOrderAscending());
  		}
  		levelCounters.foreignCollectionLevel++;
  		try {
  			return new EagerForeignCollection<FT, FID>(castDao, parent, id, foreignFieldType,
  					fieldConfig.getForeignCollectionOrderColumnName(), fieldConfig.isForeignCollectionOrderAscending());
  		} finally {
  			levelCounters.foreignCollectionLevel--;
  		}
  	}