code: void initializeScalarFields(DBEntity caller, List<String> scalarFields, DBEntitySequenceOptions options) {
  
  		TableDefinition tableDef = caller.getTableDef();
  		String category = toEntityCategory(tableDef.getTableName(), scalarFields);
  		LRUCache<ObjectID, Map<String, String>> cache = getScalarCache(category);
  		Set<ObjectID> idSet = new HashSet<ObjectID>();
  
  		List<DBEntity> entities = collectUninitializedEntities(caller, cache, idSet, options.adjustEntityBuffer(cache));
  		if (idSet.size() == 0){
  			// all requested scalar values have been found in the cache, no fetching is required
  			return;
  		}
  		
  
  		Map<ObjectID, Map<String, String>> fetchResult = fetchScalarFields(tableDef, idSet, scalarFields, category);
  
  		for (Map.Entry<ObjectID, Map<String, String>> entry: fetchResult.entrySet()) {
  			cache.put(entry.getKey(), entry.getValue());
  		}
  
          // Initialize the entities with the cached scalar values
          for (DBEntity entity : entities) {
              ObjectID key = entity.id();
              Map<String, String> values = cache.get(key);
              if(values == null) {
                  values = new HashMap<String, String>();
              }
              entity.initialize(values);
          }
  	}
docs: Fetches the scalar values of the specified entity.
  Also fetches the scalar values of other entities to be returned by the iterators of the same category
  Uses {@link #multiget_slice(List, ColumnParent, SlicePredicate)} method with the 'slice list' parameter to perform bulk fetch
  
  @param tableDef     entity type
  @param caller       next entity to be returned by the iterator (must be initialized first)
  @param scalarFields list of the fields to be fetched
  @param options      defines now many entities should be initialized