import Foundation

class MyClass : NSObject {
  @objc var propertyUsedInKeyPath : NSObject? = nil
  @objc dynamic var dynamicVarUsedInSelector : Int { return 2 }
  @objc func overridden() {}
  @objc func usedViaAnyObject() {}
  func unused() {}
}

extension MyClass {
  @objc func inExtensionAndOverridden() {}
}

class MySubClass : MyClass {
  override func overridden() {}
  override func inExtensionAndOverridden() {}
}

func test(object: AnyObject, mine: MyClass) {
  _ = #selector(MyClass.overridden)
  _ = #selector(getter: MyClass.dynamicVarUsedInSelector)
  _ = #keyPath(MyClass.propertyUsedInKeyPath)
  _ = object.usedViaAnyObject?()
}

class SelfReferences : NSObject {
  @objc var prop: Int = 2
  @objc func foo() {
    _ = #selector(self.foo)
    _ = #keyPath(prop)
  }

  @objc func bar() {
    _ = #selector(self.foo)
    _ = #selector(self.bar)
  }
}
