schema { query: RootSchemaQuery } directive @filter(op: String!, value: [String!]) repeatable on FIELD | INLINE_FRAGMENT directive @tag(name: String) on FIELD directive @output(name: String) on FIELD directive @optional on FIELD directive @recurse(depth: Int!) on FIELD directive @fold on FIELD directive @transform(op: String!) on FIELD type RootSchemaQuery { Base: Base Derived: Derived DeeperDerived: DeeperDerived FinalDerived: FinalDerived } interface Base { field: Int } interface Derived implements Base { field: Int firstEdge: Base } interface DeeperDerived implements Base & Derived { field: Int firstEdge: Derived secondEdge: Base } type FinalDerived implements Base & Derived & DeeperDerived { field: Int firstEdge: Derived secondEdge: Derived cyclic: Unrelated } type Unrelated { field: Int cyclic: Base }