Any throw new LogicException should be rewritten to:
- Log at error or warning level, making sure this will be tagged with the extension name.
- Safely escape from the unknown state. Degrade the output if necessary (for a dramatic example, don't process any remaining references) but without the fatal exception. Another possibility is to throw a recoverable exception and catch it elsewhere.