import Foundation

protocol __PrivProto {
}
class Foo : NSObject, __PrivProto {
  var __privValue: Any!
  class var __privClassValue: Any!
  func __noArgs()
  func __oneArg(_ arg: Int32)
  func __twoArgs(_ arg: Int32, other arg2: Int32)
  class func __withNoArgs() -> Self!
  @available(swift, obsoleted: 3, renamed: "__withNoArgs()")
  class func __fooWithNoArgs() -> Self!
  convenience init!(__oneArg arg: Int32)
  @available(*, unavailable, renamed: "init(__oneArg:)", message: "Not available in Swift")
  class func __fooWithOneArg(_ arg: Int32) -> Self!
  convenience init!(__twoArgs arg: Int32, other arg2: Int32)
  @available(*, unavailable, renamed: "init(__twoArgs:other:)", message: "Not available in Swift")
  class func __fooWithTwoArgs(_ arg: Int32, other arg2: Int32) -> Self!
  convenience init!(__ arg: Int32)
  @available(*, unavailable, renamed: "init(__:)", message: "Not available in Swift")
  class func __foo(_ arg: Int32) -> Self!
  func objectForKeyedSubscript(_ index: Any!) -> Any!
  func __setObject(_ object: Any!, forKeyedSubscript index: Any!)
  func __objectAtIndexedSubscript(_ index: Int32) -> Any!
  func setObject(_ object: Any!, atIndexedSubscript index: Int32)
  init()
}
class Bar : NSObject {
  init!()
  init!(__noArgs: ())
  init!(__oneArg arg: Int32)
  init!(__twoArgs arg: Int32, other arg2: Int32)
  init!(__ arg: Int32)
}
class __PrivFooSub : Foo {
  convenience init!(__oneArg arg: Int32)
  convenience init!(__twoArgs arg: Int32, other arg2: Int32)
  convenience init!(__ arg: Int32)
  init()
}
func __privTest()
struct S0 {
  var __privValue: Int32
  init()
  init(__privValue: Int32)
}
struct __PrivS1 {
  var value: Int32
  init()
  init(value: Int32)
}
struct __PrivS2 {
  var value: Int32
  init()
  init(value: Int32)
}
var __PrivAnonymousA: Int { get }
struct E0 : RawRepresentable, Equatable {
  init(_ rawValue: UInt32)
  init(rawValue: UInt32)
  var rawValue: UInt32
  typealias RawValue = UInt32
}
var __E0PrivA: E0 { get }
struct __PrivE1 : RawRepresentable, Equatable {
  init(_ rawValue: UInt32)
  init(rawValue: UInt32)
  var rawValue: UInt32
  typealias RawValue = UInt32
}
var __PrivE1A: __PrivE1 { get }
struct __PrivE2 : RawRepresentable, Equatable {
  init(_ rawValue: UInt32)
  init(rawValue: UInt32)
  var rawValue: UInt32
  typealias RawValue = UInt32
}
var __PrivE2A: __PrivE2 { get }
enum __PrivNSEnum : Int {
  init?(rawValue: Int)
  var rawValue: Int { get }
  case A
}
enum NSEnum : Int {
  init?(rawValue: Int)
  var rawValue: Int { get }
  case __privA
  @available(swift, obsoleted: 3, renamed: "__privA")
  static var __PrivA: NSEnum { get }
  case B
}
struct __PrivNSOptions : OptionSet {
  init(rawValue: Int)
  let rawValue: Int
  typealias RawValue = Int
  typealias Element = __PrivNSOptions
  static var A: __PrivNSOptions { get }
}
struct NSOptions : OptionSet {
  init(rawValue: Int)
  let rawValue: Int
  typealias RawValue = Int
  typealias Element = NSOptions
  static var __privA: NSOptions { get }
  @available(swift, obsoleted: 3, renamed: "__privA")
  static var __PrivA: NSOptions { get }
  static var B: NSOptions { get }
}
class __PrivCFType {
}
@available(swift, obsoleted: 3, renamed: "__PrivCFType")
typealias __PrivCFTypeRef = __PrivCFType
typealias __PrivCFSub = __PrivCFType
@available(swift, obsoleted: 3, renamed: "__PrivCFSub")
typealias __PrivCFSubRef = __PrivCFSub
typealias __PrivInt = Int32
