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<MyLayer>({
     *     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<T extends [CollisionLayerConstType.DefaultLayerName] = never>(collisionMatrix: T extends never ? never : object & {
        [key in T[0]]: {
            [key in T[0]]: boolean;
        };
    }): this;
    layerCollisionMatrix<T extends [CollisionLayerConstType.DefaultLayerName, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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<T extends [CollisionLayerConstType.DefaultLayerName, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] = never>(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;
}
