whole_func_string: function getStaticPropertyName(node) {
      let prop = null
  
      switch (node && node.type) {
          case "Property":
          case "MethodDefinition":
              prop = node.key
              break
  
          case "MemberExpression":
              prop = node.property
              break
  
          // no default
      }
  
      switch (prop && prop.type) {
          case "Literal":
              return String(prop.value)
  
          case "TemplateLiteral":
              if (prop.expressions.length === 0 && prop.quasis.length === 1) {
                  return prop.quasis[0].value.cooked
              }
              break
  
          case "Identifier":
              if (!node.computed) {
                  return prop.name
              }
              break
  
          // no default
      }
  
      return null
  }
func_code_string: function getStaticPropertyName(node) {
      let prop = null
  
      switch (node && node.type) {
          case "Property":
          case "MethodDefinition":
              prop = node.key
              break
  
          case "MemberExpression":
              prop = node.property
              break
  
          // no default
      }
  
      switch (prop && prop.type) {
          case "Literal":
              return String(prop.value)
  
          case "TemplateLiteral":
              if (prop.expressions.length === 0 && prop.quasis.length === 1) {
                  return prop.quasis[0].value.cooked
              }
              break
  
          case "Identifier":
              if (!node.computed) {
                  return prop.name
              }
              break
  
          // no default
      }
  
      return null
  }
func_documentation_string: /*istanbul ignore next 
  This function is copied from https://github.com/eslint/eslint/blob/2355f8d0de1d6732605420d15ddd4f1eee3c37b6/lib/ast-utils.js#L648-L684
  
  @param {ASTNode} node - The node to get.
  @returns {string|null} The property name if static. Otherwise, null.
  @private