# File lib/active_support/vendor/tzinfo-0.3.11/tzinfo/timezone.rb, line 78
    def self.get(identifier)
      instance = @@loaded_zones[identifier]
      unless instance  
        raise InvalidTimezoneIdentifier, 'Invalid identifier' if identifier !~ /^[A-z0-9\+\-_]+(\/[A-z0-9\+\-_]+)*$/
        identifier = identifier.gsub(/-/, '__m__').gsub(/\+/, '__p__')
        begin
          # Use a temporary variable to avoid an rdoc warning
          file = "tzinfo/definitions/#{identifier}"
          require file
          
          m = Definitions
          identifier.split(/\//).each {|part|
            m = m.const_get(part)
          }
          
          info = m.get
          
          # Could make Timezone subclasses register an interest in an info
          # type. Since there are currently only two however, there isn't
          # much point.
          if info.kind_of?(DataTimezoneInfo)
            instance = DataTimezone.new(info)
          elsif info.kind_of?(LinkedTimezoneInfo)
            instance = LinkedTimezone.new(info)
          else
            raise InvalidTimezoneIdentifier, "No handler for info type #{info.class}"
          end
          
          @@loaded_zones[instance.identifier] = instance         
        rescue LoadError, NameError => e
          raise InvalidTimezoneIdentifier, e.message
        end
      end
      
      instance
    end