If you try to cast a reference type (complex type whatever you wanna call it) to a bool, implicit cast (if it's even a cast at this point) works fine while explicit cast throws some nonsense error.
class MyType { } void MyFn() { MyType myType; bool isNull1 = myType; bool isNull2 = (bool)myType; // throws error, "Can't find variable 'myType'" wat? }