final VertexProgram vertexProgram = ((GiraphWorkerContext) this.getWorkerContext()).getVertexProgram();
final GiraphMemory memory = ((GiraphWorkerContext) this.getWorkerContext()).getMemory();
final GiraphMessenger messenger = ((GiraphWorkerContext) this.getWorkerContext()).getMessenger(this, messages);
///////////
if (!(Boolean) ((RuleWritable) this.getAggregatedValue(Constants.GREMLIN_GIRAPH_HALT)).getObject())
vertexProgram.execute(this.tinkerVertex, messenger, memory); // TODO provide a wrapper around TinkerVertex for Edge and non-ComputeKeys manipulation
else if (this.getConf().getBoolean(Constants.GREMLIN_GIRAPH_DERIVE_MEMORY, false)) {
final Map<String, Object> memoryMap = new HashMap<>(memory.asMap());
memoryMap.put(Constants.SYSTEM_ITERATION, memory.getIteration() - 1);
this.tinkerVertex.singleProperty(Constants.MEMORY_MAP, memoryMap);
}