   print("Numbers-as-doubles failed")
 }
 
-// CHECK: Numbers-as-floats cast produces [3.9375, 2.71828{{.*}}, 0.0]
+// CHECK-FAIL: Numbers-as-floats cast produces [3.9375, 2.71828{{.*}}, 0.0]
+// TODO: check if this is intention: rdar://33021520
 if let floatArr = obj as? [Float] {
   print(MemoryLayout<Float>.size)
   print("Numbers-as-floats cast produces \(floatArr)")

  print("Numbers-as-floats failed")
}

// CHECK: Numbers-as-ints cast produces [3, 2, 0]
if let intArr = obj as? [Int] {
  print("Numbers-as-ints cast produces \(intArr)")
} else {
  print("Numbers-as-ints failed")
}

// CHECK: Numbers-as-bools cast produces [true, true, false]
if let boolArr = obj as? [Bool] {
  print("Numbers-as-bools cast produces \(boolArr)")
} else {

}

// CHECK: {{^}}some(some(some(["a", "b", "c"]))){{$}}
var objOptOpt: AnyObject?? = .some(.some(["a", "b", "c"] as NSObject))
downcastToStringArrayOptOpt(objOptOpt)

// CHECK: {{^}}none{{$}}
objOptOpt = .some(.some([1 : "hello", 2 : "swift", 3 : "world"] as NSObject))
downcastToStringArrayOptOpt(objOptOpt)

// CHECK: {{^}}none{{$}}
objOptOpt = .some(.some([1, 2, 3] as NSObject))
downcastToStringArrayOptOpt(objOptOpt)

print("ok")  // CHECK: ok
