Я думаю, что # 1 - ваша лучшая ставка, и даже это движущаяся цель. Как указано в списке рассылки, структурные типы используют отражение. Я не думаю, что структурные типы распространены в стандартной библиотеке, но я не думаю, что кто-то отслеживает, где они находятся.
Всегда существует вероятность того, что есть другие функции, использующие отражение за кулисами. Например, некоторое время в ветке 2.8 некоторые функции массива использовали отражение. Я думаю, что это изменилось после бенчмаркинга, но всегда есть вероятность, что есть какая-то проблема, когда кто-то говорит: «Ага! Я буду использовать рефлексию, чтобы решить эту проблему».
Стандартная библиотека Scala заполнена синглетонами. Большинство из них являются неизменяемыми, но я знаю, что объект Scheduler в библиотеке акторов может быть использован для связи, потому что он по сути является прокси для фактического планировщика, поэтому вы можете подключить к нему свой собственный планировщик.
В настоящее время я не думаю, что Scala требует использования пользовательского загрузчика классов, и все его классы создаются во время компиляции, а не во время выполнения, но, опять же, это, вероятно, движущаяся цель. Scala генерирует много файлов классов, и всегда говорят о том, чтобы заставить их генерировать некоторые из них во время выполнения, когда они необходимы, а не во время компиляции.
Итак, вкратце, я не думаю, что можно (в рамках разумных ограничений усилий) перечислять и выделять фрагменты Scala, которым можно (и нужно) доверять.