def name!(node)
      return node unless node.is_a?(Parser::AST::Node)
      type = node.type
      return '' if type == :cbase
      first, second = node.children
      if type == :str
        loc = node.loc
        # Preserve quote formatting, some folks may prefer double quotes.
        return "#{loc.begin.source}#{first}#{loc.end.source}"
      end
      first ? [name!(first), second].join('::') : second
    end
def name!(node)
      return node unless node.is_a?(Parser::AST::Node)
      type = node.type
      return '' if type == :cbase
      first, second = node.children
      if type == :str
        loc = node.loc
        # Preserve quote formatting, some folks may prefer double quotes.
        return "#{loc.begin.source}#{first}#{loc.end.source}"
      end
      first ? [name!(first), second].join('::') : second
    end
This method reeks of :reek:FeatureEnvy and :reek:TooManyStatements.