contract ArrayExpressions {
    function test() external {
        /* ARRAY SUBSCRIPT */
        uint[10] memory sample;

        uint256 length = 10;
        uint[] memory sample2 = new  uint[](
            length);

        uint /* comment1 */ [] memory /* comment2 */ sample3 // comment3
        ;

        /* ARRAY SLICE */
        msg.data[4:];
        msg.data[:msg.data.length];
        msg.data[4:msg.data.length];

        msg.data[
            // comment1
            4:];
        msg.data[
            : /* comment2 */ msg.data.length // comment3
            ];
        msg.data[
        // comment4 
        4 // comment5
        :msg.data.length /* comment6 */];

        uint256 someVeryVeryVeryLongVariableNameThatDenotesTheStartOfTheMessageDataSlice = 4;
        uint256 someVeryVeryVeryLongVariableNameThatDenotesTheEndOfTheMessageDataSlice = msg.data.length;
        msg.data[someVeryVeryVeryLongVariableNameThatDenotesTheStartOfTheMessageDataSlice:];
        msg.data[:someVeryVeryVeryLongVariableNameThatDenotesTheEndOfTheMessageDataSlice];
        msg.data[someVeryVeryVeryLongVariableNameThatDenotesTheStartOfTheMessageDataSlice:someVeryVeryVeryLongVariableNameThatDenotesTheEndOfTheMessageDataSlice];

        /* ARRAY LITERAL */
        [1, 2, 3];

        uint256 someVeryVeryLongVariableName = 0;
        [someVeryVeryLongVariableName, someVeryVeryLongVariableName, someVeryVeryLongVariableName];
        uint256[3] memory literal = [someVeryVeryLongVariableName,someVeryVeryLongVariableName,someVeryVeryLongVariableName];
        
        uint8[3] memory literal2 = /* comment7 */ [ // comment8 
        1, 2, /* comment9 */ 3 // comment10
        ];
        uint256[1] memory literal3 = [ /* comment11 */ someVeryVeryLongVariableName /* comment13 */]; 
    }
}