static async create({ builder, graph, graphOptions, currentGraph }) {
    if (graphOptions.isInsertOnly()) {
      // With insertGraph, we never want to do anything but inserts.
      return GraphNodeDbExistence.createEveryNodeExistsExistence();
    }

    const graphData = new GraphData({
      graph,
      graphOptions,
      currentGraph,
      // We don't yet have an instance of GraphNodeDbExistence since we are
      // creating one. We can (and should) safely use an instance that
      // assumes that all nodes exist in the db for the purposes of this
      // method.
      nodeDbExistence: GraphNodeDbExistence.createEveryNodeExistsExistence(),
    });

    const { mayNotExist, mayNotExistNodes } = createMayNotExistMap(graphData);

    if (mayNotExist.size == 0) {
      // Early exit if we found no items for which we should check their
      // existence in the db.
      return GraphNodeDbExistence.createEveryNodeExistsExistence();
    }

    const dontExist = await createDontExistMap({ builder, mayNotExist, mayNotExistNodes });

    return new GraphNodeDbExistence(dontExist);
  }
Goes through the graphs and identifies nodes that may not exist in the db
(nodes that have an id, but are not found in `currentGraph`) and
creates an instance of GraphNodeDbExistence that can be used to
synchronously check if a node exist in the database.