package ru.dbotthepony.kstarbound.util

import com.github.benmanes.caffeine.cache.Interner

class ListInterner<E : Any> : Interner<E>, MutableIterable<E> {
	val list = ArrayList<E>()

	override fun intern(sample: E): E {
		val indexOf = list.indexOf(sample)

		if (indexOf == -1) {
			list.add(sample)
			return sample
		}

		return list[indexOf]
	}

	override fun iterator(): MutableIterator<E> {
		return list.iterator()
	}
}
