AbstractExpression is aware of what the super class is and the super class never throws CloneNotSupportedException here. That's why it's "umpossible". In fact, all the implementations of AbstractExpression.clone() and the callers just catch this and treat it as impossible case. So instead of propagating this impossible exception downstream, I thought it would be better to just not throw it here.