выражения
xtype: X = (jarray / sobject / definition) s;
не компилируются, если типы jarray / sobject / definition не совпадают.
однако их общий тип-предок удовлетворяет описанию метода xtype.
логического противоречия я тут не вижу. а так это из-за идеологии или просто недоработка?