   var x = 0
 }
 
-class H : G, _ConditionallyBridgedToObjectiveC {
-  class func getObjectiveCType() -> Any.Type {
+struct H : _ConditionallyBridgedToObjectiveC {
+  static func getObjectiveCType() -> Any.Type {
     return G.self
   }
   func bridgeToObjectiveC() -> G {
-    return self
+    return G()
   }
-  class func bridgeFromObjectiveC(x: G) -> H? {
+  static func bridgeFromObjectiveC(x: G) -> H? {
     _preconditionFailure("implement")
   }
-  class func isBridgedToObjectiveC() -> Bool {
+  static func isBridgedToObjectiveC() -> Bool {
     return false
   }
 }

  var x = 0
}

class F : E, _BridgedToObjectiveC {
  class func getObjectiveCType() -> Any.Type {
    return E.self
  }
  func bridgeToObjectiveC() -> E {
    return self
  }
  class func bridgeFromObjectiveC(x: E) -> F? {
    _preconditionFailure("implement")
  }
}

g = h // should type check, but cause a failure at runtime


struct I : _BridgedToObjectiveC {
  static func getObjectiveCType() -> Any.Type {
    return A.self
  }
  func bridgeToObjectiveC() -> AnyObject {
    return A()
  }
  static func bridgeFromObjectiveC(x: AnyObject) -> I? {
    _preconditionFailure("implement")
  }
}
