import type { ReadonlyVector2 } from "../../math/ReadonlyVector2"; import type { Vector2 } from "three/src/Three"; import type { Physics2DLoader } from "../../physics/2d/Physics2DLoader"; import type { PhysicsMaterial2D } from "../../physics/2d/PhysicsMaterial2D"; import type * as CollisionLayerConstType from "../../physics/CollisionLayerConstType"; export type PhysicsSettingObject = { loader?: typeof Physics2DLoader; gravity?: Vector2; defaultMaterial?: PhysicsMaterial2D; velocityIterations?: number; positionIterations?: number; queriesHitTriggers?: boolean; reuseCollisionCallbacks?: boolean; collisionLayerMaskMatrix?: object; }; export declare class PhysicsSetting { private readonly _physicsSettingObject; constructor(physicsSettingObject: PhysicsSettingObject); static createDefaultObject(): PhysicsSettingObject; /** * load physics engine from Physics2DLoader. you must call this method for use physics engine. * @param value Physics2DLoader * @returns this */ loader(value: typeof Physics2DLoader): this; /** * The gravity applied to all rigid bodies in the Scene. (default: (0, -9.81)) * @param value gravity * @returns this */ gravity(value: ReadonlyVector2): this; /** * default physics material of rigidbody. (default: null) * @param value default physics material * @returns this */ defaultMaterial(value: PhysicsMaterial2D): this; /** * The number of iterations of the physics solver when considering objects' velocities. (default: 8) * * A higher number of interations will improve accuracy at the expense of processing overhead. * @param value velocity iterations * @returns this */ velocityIterations(value: number): this; /** * The number of iterations of the physics solver when considering objects' positions. (default: 3) * * A higher number of interations will improve accuracy at the expense of processing overhead. * @param value position iterations * @returns this */ positionIterations(value: number): this; /** * specifies whether queries (raycasts, spherecasts, overlap tests, etc.) hit Triggers by default. (default: true) * @param value if true, queries hit Triggers by default. * @returns this */ queriesHitTriggers(value: boolean): this; /** * Determines whether the garbage collector should reuse only a single instance of a Collision type for all collision callbacks. * * When an Component.onCollisionEnter, Component.onCollisionStay or Component.onCollisionExit collision callback occurs, * the Collision object passed to it is created for each individual callback. * This means the garbage collector has to remove each object, which reduces performance. * * When this option is true, * only a single instance of the Collision type is created and reused for each individual callback. * This reduces waste for the garbage collector to handle and improves performance. * * You would only set this option to false if the Collision object is referenced outside of the collision callback for processing later, * so recycling the Collision object is not required. * * (default: true) * @param value if true, reuse Collision object. * @returns this */ reuseCollisionCallbacks(value: boolean): this; /** * Layer-based collision detection is a way to make a GameObject collide with another GameObject that is set up to a specific Layer or Layers. * * layerCollisionMatrix can define layers and their collision behavior. * * for example: * * ```typescript * type MyLayer = ["default", "player", "enemy"]; * * this.setting.physics.layerCollisionMatrix({ * default: { enemy: true, player: true, default: true }, * player: { enemy: false, player: true }, * enemy: { enemy: true } * }); * ``` * means that the default layer will collide with all layers, * the player layer will collide with the default and themself, * and the enemy layer will collide with the default and themself. * * @param collisionMatrix The collision matrix. * @returns this */ layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[0]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[1]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[2]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[3]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[4]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[5]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[6]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[7]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[8]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[9]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[10]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[11]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[12]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[13]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[14]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[15]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[16]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[17]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[18]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[19]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[20]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[21]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[22]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; }; } & { [key in T[23]]: { [key in T[23]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; }; } & { [key in T[23]]: { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; }; } & { [key in T[24]]: { [key in T[24]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; }; } & { [key in T[23]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; }; } & { [key in T[24]]: { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; }; } & { [key in T[25]]: { [key in T[25]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; }; } & { [key in T[23]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; }; } & { [key in T[24]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; }; } & { [key in T[25]]: { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; }; } & { [key in T[26]]: { [key in T[26]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; }; } & { [key in T[23]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; }; } & { [key in T[24]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; }; } & { [key in T[25]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; }; } & { [key in T[26]]: { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; }; } & { [key in T[27]]: { [key in T[27]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; }; } & { [key in T[23]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; }; } & { [key in T[24]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; }; } & { [key in T[25]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; }; } & { [key in T[26]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; }; } & { [key in T[27]]: { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; }; } & { [key in T[28]]: { [key in T[28]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; }; } & { [key in T[23]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; }; } & { [key in T[24]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; }; } & { [key in T[25]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; }; } & { [key in T[26]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; }; } & { [key in T[27]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; }; } & { [key in T[28]]: { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; }; } & { [key in T[29]]: { [key in T[29]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; }; } & { [key in T[23]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; }; } & { [key in T[24]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; }; } & { [key in T[25]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; }; } & { [key in T[26]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; }; } & { [key in T[27]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; }; } & { [key in T[28]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; }; } & { [key in T[29]]: { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; }; } & { [key in T[30]]: { [key in T[30]]: boolean; }; }): this; layerCollisionMatrix(collisionMatrix: T extends never ? never : object & { [key in T[0]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; } & { [key in T[0]]: boolean; }; } & { [key in T[1]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; } & { [key in T[1]]: boolean; }; } & { [key in T[2]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; } & { [key in T[2]]: boolean; }; } & { [key in T[3]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; } & { [key in T[3]]: boolean; }; } & { [key in T[4]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; } & { [key in T[4]]: boolean; }; } & { [key in T[5]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; } & { [key in T[5]]: boolean; }; } & { [key in T[6]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; } & { [key in T[6]]: boolean; }; } & { [key in T[7]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; } & { [key in T[7]]: boolean; }; } & { [key in T[8]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; } & { [key in T[8]]: boolean; }; } & { [key in T[9]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; } & { [key in T[9]]: boolean; }; } & { [key in T[10]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; } & { [key in T[10]]: boolean; }; } & { [key in T[11]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; } & { [key in T[11]]: boolean; }; } & { [key in T[12]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; } & { [key in T[12]]: boolean; }; } & { [key in T[13]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; } & { [key in T[13]]: boolean; }; } & { [key in T[14]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; } & { [key in T[14]]: boolean; }; } & { [key in T[15]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; } & { [key in T[15]]: boolean; }; } & { [key in T[16]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; } & { [key in T[16]]: boolean; }; } & { [key in T[17]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; } & { [key in T[17]]: boolean; }; } & { [key in T[18]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; } & { [key in T[18]]: boolean; }; } & { [key in T[19]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; } & { [key in T[19]]: boolean; }; } & { [key in T[20]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; } & { [key in T[20]]: boolean; }; } & { [key in T[21]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; } & { [key in T[21]]: boolean; }; } & { [key in T[22]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; } & { [key in T[22]]: boolean; }; } & { [key in T[23]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; } & { [key in T[23]]: boolean; }; } & { [key in T[24]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; } & { [key in T[24]]: boolean; }; } & { [key in T[25]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; } & { [key in T[25]]: boolean; }; } & { [key in T[26]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; } & { [key in T[26]]: boolean; }; } & { [key in T[27]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; } & { [key in T[27]]: boolean; }; } & { [key in T[28]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; } & { [key in T[28]]: boolean; }; } & { [key in T[29]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; } & { [key in T[29]]: boolean; }; } & { [key in T[30]]: { [key in T[31]]: boolean; } & { [key in T[30]]: boolean; }; } & { [key in T[31]]: { [key in T[31]]: boolean; }; }): this; }