docs: function allowedVariableUsage(
    schema: GraphQLSchema,
    varType: GraphQLType,
    varDefaultValue: ?ValueNode,
    locationType: GraphQLType,
    locationDefaultValue: ?mixed,
  ): boolean {
    if (isNonNullType(locationType) && !isNonNullType(varType)) {
      const hasNonNullVariableDefaultValue =
        varDefaultValue && varDefaultValue.kind !== Kind.NULL;
      const hasLocationDefaultValue = locationDefaultValue !== undefined;
      if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {
        return false;
      }
      const nullableLocationType = locationType.ofType;
      return isTypeSubTypeOf(schema, varType, nullableLocationType);
    }
    return isTypeSubTypeOf(schema, varType, locationType);
  }