code: def get_recursive_variable_usages(self, operation):
      assert isinstance(operation, OperationDefinition)
      usages = self._recursive_variable_usages.get(operation)
      if usages is None:
          usages = self.get_variable_usages(operation)
          fragments = self.get_recursively_referenced_fragments(
              operation
          )
          for fragment in fragments:
              usages.extend(self.get_variable_usages(fragment))
          self._recursive_variable_usages[operation] = usages
  
      return usages
  
imports: from ..language.ast import FragmentDefinition, FragmentSpread, OperationDefinition
  from ..language.visitor import ParallelVisitor, TypeInfoVisitor, Visitor, visit
  from ..type import GraphQLSchema
  from ..utils.type_info import TypeInfo
  from .rules import specified_rules
label_desc: Use image node_id 6 for calling the ValidationContext obj's underlying member method code with example usage: obj.get_recursive_variable_usages(operation) and returns: usages