pub trait ExplicitOperationDefinition {
type VariableDefinitions: VariableDefinitions;
type Directives: VariableDirectives;
type SelectionSet: SelectionSet;
// Required methods
fn operation_type(&self) -> OperationType;
fn name(&self) -> Option<&str>;
fn variable_definitions(&self) -> Option<&Self::VariableDefinitions>;
fn directives(&self) -> Option<&Self::Directives>;
fn selection_set(&self) -> &Self::SelectionSet;
}