Value type и Reference type в Swift

Вопросы о value type/reference type могут быть, пожалуй, в 90% собеседований. Несмотря на то, что на уровне senior-разработчика я их не встречал, но в разных компаниях как известно разные подходы.
Типы в Swift можно разделить на две категории: первая - «value type», где каждый экземпляр хранит уникальную копию своих данных, обычно определяемую как struct, enum или tuple.
Вторая - «reference type», где экземпляры разделяют одну копию данных, а сам тип обычно определяется как класс.
В закрытой базе я постарался разобрать несколько неочевидных моментов, в том числе к чему же относится decimal (как показывает практика, с этим также бывают вопросы), indirect enum и добавил подборку вопросов для закрепления.