Типы это свойство отдельных объектов на этапе компиляции. Они позволяют гарантировать что в определенный объект попадет определенное значение из диапазона. Теги это свойства объектов в рантайме. Они на этапе компиляции не позволяют гарантировать что в определенный объект заедет только их выбранного диапазона значение.
если у тебя хоть во одном месте в одгене есть if (something) throw new Exception("Add Something to something") или что-то в таком духе то как бы это намёк)