public override void OnBeforeCreate( IDescriptorContext context, ISchemaBuilder schemaBuilder) { var allSchemas = new OrderedDictionary <NameString, DocumentNode>(); foreach (KeyValuePair <NameString, IRequestExecutor> executor in context.GetRemoteExecutors()) { allSchemas.Add( executor.Key, Utf8GraphQLParser.Parse(executor.Value.Schema.Print())); } IReadOnlyList <DocumentNode> typeExtensions = context.GetTypeExtensions(); // merge schemas DocumentNode mergedSchema = MergeSchemas(context, allSchemas); mergedSchema = AddExtensions(mergedSchema, typeExtensions); mergedSchema = RewriteMerged(context, mergedSchema); mergedSchema = mergedSchema.RemoveBuiltInTypes(); VisitMerged(context, mergedSchema); MarkExternalFields(schemaBuilder, mergedSchema); BuildNameLookup(context, schemaBuilder, mergedSchema, allSchemas.Keys); schemaBuilder .AddDocument(mergedSchema) .AddDirectiveType <DelegateDirectiveType>() .AddDirectiveType <ComputedDirectiveType>() .AddDirectiveType <SourceDirectiveType>() .SetTypeResolver(IsOfTypeFallback); }