code: def reason_message(cls, reason):
      if isinstance(reason, list):
          return " and ".join(
              'subfields "{}" conflict because {}'.format(
                  reason_name, cls.reason_message(sub_reason)
              )
              for reason_name, sub_reason in reason
          )
  
      return reason
  
imports: import itertools
  from collections import OrderedDict
  from ...error import GraphQLError
  from ...language import ast
  from ...language.printer import print_ast
  from ...pyutils.pair_set import PairSet
  from ...type.definition import GraphQLInterfaceType, GraphQLList, GraphQLNonNull, GraphQLObjectType, get_named_type, is_leaf_type
  from ...utils.type_comparators import is_equal_type
  from ...utils.type_from_ast import type_from_ast
  from .base import ValidationRule
label_desc: Use image node_id 5 for calling the OverlappingFieldsCanBeMerged obj's underlying member method code with example usage: obj.reason_message(cls, reason) and returns: reason, str