kotlin RecyclerViewAdapter IndexOutOfBoundException

Me mudé de Java a Kotlin y creé este recyclerViewAdapter:

class MisPedidosAdapter(private val context: Context, private var pedidos: List<ParseObject>?, private val onMisPedidosClickListener: OnMisPedidosClickListener) : CustomRecyclerViewAdapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { when(getItemViewType(viewType)){ STATIC ->return NoMisPedidosHolder(LayoutInflater.from(parent.context).inflate(R.layout.no_pedidos_recibidos_item, parent, false)) else -> return MisPedidosHolder(LayoutInflater.from(parent.context).inflate(R.layout.mis_pedidos_item, parent, false), onMisPedidosClickListener, pedidos) } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (getItemViewType(position) == STATIC) { val mHolder = holder as NoMisPedidosHolder } else { val mHolder = holder as MisPedidosHolder val pedido = pedidos!![position] val menuShop = pedido.getParseObject("menu_shop") mHolder.numPlati.text = pedido.getNumber("quantity")?.toInt().toString() mHolder.horario.text = pedido.getString("horario") mHolder.dateOrder.text = StringUtils.getDataFormatted("dd MMM yyyy", pedido.createdAt!!) } } override fun getItemViewType(position: Int): Int = when{ pedidos!!.isEmpty() -> STATIC else -> DINAMIC } override fun getItemCount(): Int = when{ pedidos!!.isEmpty() -> 1 else -> pedidos!!.size } fun updatePedidos(pedidos: List<ParseObject>) { this.pedidos = pedidos notifyDataSetChanged() } companion object { private val STATIC = 0 private val DINAMIC = 1 } } 

el problema es que, probablemente, cuando list.size en Kotlin incluye también el índice de tamaño (por ejemplo, si el tamaño es 4, se considera {0,1,2,3,4}). Cuando uso el ciclo puedo bloquear {0,1,2,3} until , pero en este caso no sé cómo hacerlo. Alguien sabe una forma de resolverlo? Gracias