code: @VisibleForTesting
  	protected CounterData createCounterData(final String counterName)
  	{
  		this.counterNameValidator.validateCounterName(counterName);
  
  		final Key<CounterData> counterKey = CounterData.key(counterName);
  
  		// Perform a transactional GET to see if the counter exists. If it does, throw an exception. Otherwise, create
  		// the counter in the same TX.
  		return ObjectifyService.ofy().transact(new Work<CounterData>()
  		{
  			@Override
  			public CounterData run()
  			{
  				final CounterData loadedCounterData = ObjectifyService.ofy().load().key(counterKey).now();
  				if (loadedCounterData == null)
  				{
  					final CounterData counterData = new CounterData(counterName, config.getNumInitialShards());
  					ObjectifyService.ofy().save().entity(counterData).now();
  					return counterData;
  				}
  				else
  				{
  					throw new CounterExistsException(counterName);
  				}
  			}
  		});
  	}
docs: Helper method to create the {@link CounterData} associated with the supplied counter information.
  
  @param counterName
  @return
  @throws IllegalArgumentException If the {@code counterName} is invalid.
  @throws CounterExistsException If the counter with {@code counterName} already exists in the Datastore.