public OUpdateExecutionPlan createExecutionPlan(OCommandContext ctx, boolean enableProfiling) {
OUpdateExecutionPlan result = new OUpdateExecutionPlan(ctx);
handleTarget(result, ctx, this.target, this.whereClause, this.timeout, enableProfiling);
if(updateEdge){
result.chain(new CheckRecordTypeStep(ctx, "E", enableProfiling));
}
handleUpsert(result, ctx, this.target, this.whereClause, this.upsert, enableProfiling);
handleTimeout(result, ctx, this.timeout, enableProfiling);
convertToModifiableResult(result, ctx, enableProfiling);
handleLimit(result, ctx, this.limit, enableProfiling);
handleReturnBefore(result, ctx, this.returnBefore, enableProfiling);
handleOperations(result, ctx, this.operations, enableProfiling);
handleLock(result, ctx, this.lockRecord);
handleSave(result, ctx, enableProfiling);
handleResultForReturnBefore(result, ctx, this.returnBefore, returnProjection, enableProfiling);
handleResultForReturnAfter(result, ctx, this.returnAfter, returnProjection, enableProfiling);
handleResultForReturnCount(result, ctx, this.returnCount, enableProfiling);
return result;
}