public virtual bool IsSubclassOf(IType other) { var external = other as ExternalType; if (external == null) return false; return _type.IsSubclassOf(external._type) || (external.IsInterface && external._type.IsAssignableFrom(_type)); }