module Google::Protobuf::Internal

def self.fixup_descriptor(package, msg_names, enum_names)

def self.fixup_descriptor(package, msg_names, enum_names)
  if package.nil?
    package = self.infer_package(msg_names + enum_names)
  end
  nesting = NestingBuilder.new(msg_names, enum_names).build(package)
  return package, nesting
end

def self.infer_package(names)

def self.infer_package(names)
  # Package is longest common prefix ending in '.', if any.
  if not names.empty?
    min, max = names.minmax
    last_common_dot = nil
    min.size.times { |i|
      if min[i] != max[i] then break end
      if min[i] == ?. then last_common_dot = i end
    }
    if last_common_dot
      return min.slice(0, last_common_dot)
    end
  end
  nil
end