Fix isAssignable bug: constrain ancestor chain to sub expression