log.trace("Entering special assignment effects routine for {}", that);
// TODO: This routine is almost comically inefficient.
// Similar to assign, but we also immediately *read* everything, too.
EffectSet lhsEffects = that.lhs.effects.getEffectSet();
SymbolSet readEscaping = lhsEffects.readEscaping == SymbolSet.UNIVERSAL_SET ? SymbolSet.UNIVERSAL_SET : new SymbolSet(lhsEffects.readEscaping);
SymbolSet writeEscaping = lhsEffects.readEscaping == SymbolSet.UNIVERSAL_SET ? SymbolSet.UNIVERSAL_SET : new SymbolSet(lhsEffects.readEscaping);
SymbolSet readInternal = lhsEffects.readInternal == SymbolSet.UNIVERSAL_SET ? SymbolSet.UNIVERSAL_SET : new SymbolSet(lhsEffects.readInternal);
SymbolSet writeInternal = lhsEffects.readInternal == SymbolSet.UNIVERSAL_SET ? SymbolSet.UNIVERSAL_SET : new SymbolSet(lhsEffects.readInternal);
EffectSet newEffects = new EffectSet((readEscaping.isEmpty() ? 0 : EffectType.WRITE_ESCAPING.maskValue
| EffectType.READ_ESCAPING.maskValue)
| (readInternal.isEmpty() ? 0 : EffectType.WRITE_INTERNAL.maskValue
| EffectType.READ_INTERNAL.maskValue));
newEffects.writeEscaping = writeEscaping;