code: @Override
  	public <E> E get(Class<E> clazz, Object key)
  			throws ConcurrentModificationException {
  		if (clazz == null) {
  			throw new IllegalArgumentException("'clazz' must not be [" + clazz + "]");
  		}
  		
  		if (key == null) {
  			throw new IllegalArgumentException("'id' must not be [" + key + "]");
  		}
  		
  		Key k = Keys.create(Translation.toKind(clazz), key);
  		Map<Key, Object> references = new HashMap<Key, Object>();
  		
  		if (!isTransactional()) {
  			return Translation.toObject(
  					clazz, datastore.query(new Query(k)), references, datastore);
  		} else {
  			AppEngineTransaction tx = transaction.get();
  			E entity = Translation.toObject(
  					clazz, datastore.query(tx.transaction(), new Query(k)), references, datastore);
  			
  			if (entity == null) {
  				return entity;
  			}
  			
  			List<Log> logs = tx.logs();
  			logs.add(new Log(logs.size() + 1, Log.Operation.GET, entity));
  			return entity;
  		}
  	}
docs: Returns the entity instance corresponding to the specified key. This
  method returns {@code null} if the entity is not found.
  
  @param <E> The entity type.
  @param clazz The entity type that you want to get.
  @param key The key corresponding to the entity that you want to get.
  @return The entity instance corresponding to the specified key.
  @throws ConcurrentModificationException If the entity corresponding to
  the specified key is being modified by the other transaction.
  @see AppEngineResourceManager#get(Class, Object)