code: function abstractSynchronousLayout(assign, graph, params) {
    if (!isGraph(graph))
      throw new Error('graphology-layout-forceatlas2: the given graph is not a valid graphology instance.');
  
    if (typeof params === 'number')
      params = {iterations: params};
  
    var iterations = params.iterations;
  
    if (typeof iterations !== 'number')
      throw new Error('graphology-layout-forceatlas2: invalid number of iterations.');
  
    if (iterations <= 0)
      throw new Error('graphology-layout-forceatlas2: you should provide a positive number of iterations.');
  
    // Validating settings
    var settings = helpers.assign({}, DEFAULT_SETTINGS, params.settings),
        validationError = helpers.validateSettings(settings);
  
    if (validationError)
      throw new Error('graphology-layout-forceatlas2: ' + validationError.message);
  
    // Building matrices
    var matrices = helpers.graphToByteArrays(graph),
        i;
  
    // Iterating
    for (i = 0; i < iterations; i++)
      iterate(settings, matrices.nodes, matrices.edges);
  
    // Applying
    if (assign) {
      helpers.applyLayoutChanges(graph, matrices.nodes);
      return;
    }
  
    return helpers.collectLayoutChanges(graph, matrices.nodes);
  }
docs: Asbtract function used to run a certain number of iterations.
  
  @param  {boolean}       assign       - Whether to assign positions.
  @param  {Graph}         graph        - Target graph.
  @param  {object|number} params       - If number, params.iterations, else:
  @param  {number}          iterations - Number of iterations.
  @param  {object}          [settings] - Settings.
  @return {object|undefined}