@Test
public void testMatrixVector2() throws Exception {

  final String shader = "#version 300 es\n"
        + "void main() { mat3x4 As[5];"
        + "  int x = 17;"
        + "  int y = -22;"
        + "  int z = 100;"
        + "  mat3x4 A = As[x];"
        + "  vec4 v;"
        + "  v = A[y];"
        + "  float f;"
        + "  f = v[z];"
        + "}";
  final String expected = "#version 300 es\n"
        + "void main() { mat3x4 As[5];"
        + "  int x = 17;"
        + "  int y = -22;"
        + "  int z = 100;"
        + "  mat3x4 A = As[" + Constants.GLF_MAKE_IN_BOUNDS_INT + "(x, 5)];"
        + "  vec4 v;"
        + "  v = A[" + Constants.GLF_MAKE_IN_BOUNDS_INT + "(y, 3)];"
        + "  float f;"
        + "  f = v[" + Constants.GLF_MAKE_IN_BOUNDS_INT + "(z, 4)];"
        + "}";
  final TranslationUnit tu = ParseHelper.parse(shader);
  MakeArrayAccessesInBounds.makeInBounds(tu);
  assertEquals(PrettyPrinterVisitor.prettyPrintAsString(ParseHelper.parse(expected)),
        PrettyPrinterVisitor.prettyPrintAsString(tu));
}