with

inline fun <R, T : Component?> Entity.with(let: (T) -> R): R?
inline fun <R, T : Component?, T2 : Component?> Entity.with(let: (T, T2) -> R): R?
inline fun <T : Component, T2 : Component, T3 : Component> Entity.with(let: (T, T2, T3) -> Unit): Unit?
inline fun <T : Component, T2 : Component, T3 : Component, T4 : Component> Entity.with(let: (T, T2, T3, T4) -> Unit): Unit?
inline fun <T : Component, T2 : Component, T3 : Component, T4 : Component, T5 : Component> Entity.with(let: (T, T2, T3, T4, T5) -> Unit): Unit?
inline fun <T : Component, T2 : Component, T3 : Component, T4 : Component, T5 : Component, T6 : Component> Entity.with(let: (T, T2, T3, T4, T5, T6) -> Unit): Unit?
inline fun <T : Component, T2 : Component, T3 : Component, T4 : Component, T5 : Component, T6 : Component, T7 : Component> Entity.with(let: (T, T2, T3, T4, T5, T6, T7) -> Unit): Unit?

Runs when an entity has all passed components present.