code: public List<JcError> store(Map<Long, Integer> elementVersionsMap) {
  		Map<GrNode, JcNumber> createdNodeToIdMap = new HashMap<GrNode, JcNumber>();
  		Map<GrRelation, JcNumber> createdRelationToIdMap = new HashMap<GrRelation, JcNumber>();
  		List<ElemId2Query> elemIds2Query = createUpdateQueries(createdNodeToIdMap, createdRelationToIdMap, elementVersionsMap);
  		Map<Long, Integer> elemId2ResultIndex = new HashMap<Long, Integer>();
  		List<JcQuery> queries = collectQueries(elemIds2Query, elemId2ResultIndex);
  		Util.printQueries(queries, QueryToObserve.UPDATE_QUERY, Format.PRETTY_1);
  		List<JcError> errors = new ArrayList<JcError>();
  		if (queries.size() > 0) {
  			List<JcQueryResult> results = dbAccess.execute(queries);
  			errors.addAll(Util.collectErrors(results));
  			if (errors.isEmpty()) { // success
  				JcError error;
  				if ((error = checkLockingError(results, !createdNodeToIdMap.isEmpty() || !createdRelationToIdMap.isEmpty(),
  						elemIds2Query)) != null) {
  					errors.add(error);
  					ITransaction tx = this.dbAccess.getTX();
  					if (tx != null)
  						tx.failure();
  				}
  				this.handleSyncState(results, createdNodeToIdMap,
  						createdRelationToIdMap, error != null, elemId2ResultIndex);
  			}
  		}
  		return errors;
  	}
docs: Update the underlying database with changes made on the graph
  @return a list of errors, which is empty if no errors occurred