 g = h // should type check, but cause a failure at runtime
 
 
-class I : _BridgedToObjectiveC {
-  class func getObjectiveCType() -> Any.Type {
-    return AnyObject.self
+struct I : _BridgedToObjectiveC {
+  static func getObjectiveCType() -> Any.Type {
+    return A.self
   }
   func bridgeToObjectiveC() -> AnyObject {
-    return self
+    return A()
   }
-  class func bridgeFromObjectiveC(x: AnyObject) -> I? {
+  static func bridgeFromObjectiveC(x: AnyObject) -> I? {
     _preconditionFailure("implement")
   }
 }

  var x = 0
}

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

  var x = 0
}

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