code: def get_directive_values(
      directive_def: GraphQLDirective,
      node: NodeWithDirective,
      variable_values: Dict[str, Any] = None,
  ) -> Optional[Dict[str, Any]]:
      
      directives = node.directives
      if directives:
          directive_name = directive_def.name
          for directive in directives:
              if directive.name.value == directive_name:
                  return get_argument_values(directive_def, directive, variable_values)
      return None
docs: Get coerced argument values based on provided nodes.
  
      Prepares a dict of argument values given a directive definition and an AST node
      which may contain directives. Optionally also accepts a dict of variable values.
  
      If the directive does not exist on the node, returns None.