public Chunk(int diff, bool inverse, bool jump)
    {
        Rows = new List <Row>();
        switch (diff)
        {
        case 0:
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            break;

        case 1:
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, null, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, null, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            break;

        case 2:
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            break;

        case 3:
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            break;

        case 4:
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            break;

        case 5:
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(null, true, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            break;

        case 6:
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            break;

        case 7:
            Row.AddRow(true, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, true, inverse, jump, Rows);
            Row.AddRow(false, false, null, null, inverse, jump, Rows);
            Row.AddRow(false, false, true, true, inverse, jump, Rows);
            Row.AddRow(false, false, true, true, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, true, false, false, inverse, jump, Rows);
            break;

        case 8:
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, true, null, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            break;

        case 9:
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, null, inverse, jump, Rows);
            break;

        case 10:
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(null, null, null, null, inverse, jump, Rows);
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(null, null, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            break;

        case 11:
            Row.AddRow(true, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, null, false, inverse, jump, Rows);
            Row.AddRow(true, null, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            break;

        case 12:
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(true, null, true, null, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(null, true, null, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            break;

        case 13:
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, null, true, null, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, null, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            break;

        case 14:
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, null, false, true, inverse, jump, Rows);
            break;

        case 15:
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, null, inverse, jump, Rows);
            Row.AddRow(false, false, true, true, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, true, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            break;

        case 16:
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(null, false, false, null, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, true, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            break;

        case 17:
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, null, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, null, inverse, jump, Rows);
            Row.AddRow(false, null, true, true, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, true, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            break;

        case 18:
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(true, true, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            break;

        case 19:
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            break;

        case 20:
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, true, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            break;

        case 21:
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            Row.AddRow(false, null, false, null, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, null, inverse, jump, Rows);
            Row.AddRow(false, true, false, null, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            break;

        case 22:
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, true, false, true, inverse, jump, Rows);
            break;

        case 23:
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(null, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(null, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, true, null, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            break;

        case 24:
            Row.AddRow(true, false, false, null, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, null, true, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            break;

        case 25:
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(null, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            break;

        case 26:
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, true, true, false, inverse, jump, Rows);
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            Row.AddRow(true, true, true, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, false, true, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, true, inverse, jump, Rows);
            Row.AddRow(null, true, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            break;

        case 27:
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(null, null, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(false, false, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(false, false, false, false, inverse, jump, Rows);
            break;

        case 28:
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, true, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            Row.AddRow(true, false, true, false, inverse, jump, Rows);
            break;

        case 29:
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, false, false, true, inverse, jump, Rows);
            Row.AddRow(false, false, true, false, inverse, jump, Rows);
            Row.AddRow(false, true, false, false, inverse, jump, Rows);
            Row.AddRow(true, false, false, false, inverse, jump, Rows);
            break;

        default:
            break;
        }
    }