private void fillEntityLists() throws SQLException {
    if (!currentEntity.hasEntityList()) {
      return;
    }

    final Collection<SimpleEntityAssociation> associations = listAssociations;
    listAssociations = new ArrayList<>();

    for (final ListScope entityList : currentEntity.getEntityLists()) {
      final Class<?> genericClazz = (Class<?>) entityList.getGenericType();

      if (listsSettings.isClassRestricted(genericClazz)) {
        continue;
      }

      final String label =
          listsSettings.restrictColumnByObject(genericClazz, currentEntity.getEntityClass());

      currentEntity = SessionManager.getEntity(genericClazz);

      setStatement(new EngineStatementTool(currentEntity).select(
          listsSettings.getPermissions(genericClazz)).where(label));

      openStatement();

      try {
        for (final SimpleEntityAssociation association : associations) {
          final Collection<Object> result = new ArrayList<>();

          addPlaceholderValue(association.code);
          openResultSet();

          while (resultSet.next()) {
            result.add(fillObject(currentEntity.clazz.newInstance(),
                objectsSettings.isFillObjects(), listsSettings.isFillSubLists()));
          }

          closeResultSet();

          entityList.field.set(association.next, result);
        }
      } catch (InstantiationException | IllegalAccessException e) {
        throw new BlueprintException(e);
      }

      currentEntity = defaultEntity;
    }
  }