code: function compileGraphQLTag(
    t: $FlowFixMe,
    path: Object,
    state: BabelState,
    ast: DocumentNode,
  ): void {
    if (ast.definitions.length !== 1) {
      throw new Error(
        'BabelPluginRelay: Expected exactly one definition per graphql tag.',
      );
    }
    const definition = ast.definitions[0];
    if (
      definition.kind !== 'FragmentDefinition' &&
      definition.kind !== 'OperationDefinition'
    ) {
      throw new Error(
        'BabelPluginRelay: Expected a fragment, mutation, query, or ' +
          'subscription, got `' +
          definition.kind +
          '`.',
      );
    }
    return replaceMemoized(t, path, createAST(t, state, path, definition));
  }
docs: Given a graphql`` tagged template literal, replace it with the appropriate
  runtime artifact.