public void testMultiDimensionalArrayWithUnfilledDimensions() {
    // Set up array type
    TyClass objectClass = makeStubObjectClass();
    TyJavaArray tax = new TyJavaArray("", objectClass);
    TyJavaArray tay = new TyJavaArray("", objectClass);
    TyJavaArray taz = new TyJavaArray("", objectClass);

    TyPointer tpx = new TyPointer();
    TyPointer tpy = new TyPointer();

    TyInt intType = TyInt.get();

    taz.addToEnd(intType);
    tpy.addToEnd(taz);
    tay.addToEnd(tpy);
    tpx.addToEnd(tay);
    tax.addToEnd(tpx);

    // Set up NodeList
    NodeList dimensions = new NodeList();

    ConstInt x = new ConstInt(TyInt.get(), "3", 3);
    ConstInt y = new ConstInt(TyInt.get(), "4", 4);
    dimensions.addLastChild(x);
    dimensions.addLastChild(y);

    TyPointer tp = new TyPointer();
    tp.addToEnd(tax);
    ExpNewArray exp = new ExpNewArray(tp, dimensions);
    PointerDatum thePointer = runTest(exp);

    assertTrue(thePointer.deref() != null);
    assertTrue(thePointer.deref() instanceof ArrayDatum);

    ArrayDatum ax = (ArrayDatum) thePointer.deref();
    assertEquals(3, ((IntDatum) ax.getLength()).getValue());
    for (int i = 0; i < 3; i++) {
      assertTrue(ax.getElement(i) instanceof PointerDatum);
      PointerDatum px = (PointerDatum) ax.getElement(i);
      assertTrue(px.deref() instanceof ArrayDatum);
      ArrayDatum ay = (ArrayDatum) px.deref();
      assertEquals(4, ((IntDatum) ay.getLength()).getValue());
      for (int j = 0; j < 4; j++) {
        assertTrue(ay.getElement(j) instanceof PointerDatum);
        PointerDatum py = (PointerDatum) ay.getElement(j);
        assertTrue(py.isNull());
      }
    }
  }