class ElasticAPM::Agent

def self.start(config)

rubocop:disable Metrics/MethodLength
def self.start(config)
  return @instance if @instance
  config = Config.new(config) if config.is_a?(Hash)
  unless config.enabled_environments.include?(config.environment)
    config.logger && config.logger.info(
      format('Not tracking anything in "%s" env', config.environment)
    )
    return
  end
  LOCK.synchronize do
    return @instance if @instance
    @instance = new(config.freeze).start
  end
end