pub trait SchemaDocumentExtension {
fn type_by_name(&self, name: &String) -> Option<TypeDefinition>;
fn type_map(&self) -> HashMap<String, TypeDefinition>;
fn directive_by_name(&self, name: &String) -> Option<DirectiveDefinition>;
fn object_type_by_name(&self, name: &String) -> Option<ObjectType>;
fn schema_definition(&self) -> SchemaDefinition;
fn query_type(&self) -> ObjectType;
fn mutation_type(&self) -> Option<ObjectType>;
fn subscription_type(&self) -> Option<ObjectType>;
fn is_subtype(&self, sub_type: &Type, super_type: &Type) -> bool;
fn is_named_subtype(
&self,
sub_type_name: &String,
super_type_name: &String
) -> bool;
fn is_possible_type(
&self,
abstract_type: &TypeDefinition,
possible_type: &TypeDefinition
) -> bool;
}