type Query {
  deity(name: String): Deity!
}

interface Character {
  name(id: ID): String!
}

interface Supernatural {
  power(id: ID!): [String!]!
}

type Deity implements Character & Supernatural {
  # undefined args (id: String)
  name: String!
  # arg: id has different type
  power(id: String!): [String!]!
}

type Hero implements Supernatural {
  # arg: id has weeker type
  power(id: ID): String!
}
