code: public <M> Graph<K, VV, EV> runGatherSumApplyIteration(
  			org.apache.flink.graph.gsa.GatherFunction<VV, EV, M> gatherFunction, SumFunction<VV, EV, M> sumFunction,
  			ApplyFunction<K, VV, M> applyFunction, int maximumNumberOfIterations) {
  
  		return this.runGatherSumApplyIteration(gatherFunction, sumFunction, applyFunction,
  				maximumNumberOfIterations, null);
  	}
docs: Runs a Gather-Sum-Apply iteration on the graph.
  No configuration options are provided.
  
  @param gatherFunction the gather function collects information about adjacent vertices and edges
  @param sumFunction the sum function aggregates the gathered information
  @param applyFunction the apply function updates the vertex values with the aggregates
  @param maximumNumberOfIterations maximum number of iterations to perform
  @param <M> the intermediate type used between gather, sum and apply
  
  @return the updated Graph after the gather-sum-apply iteration has converged or
  after maximumNumberOfIterations.