// NslInt4
  public static int[][][][] eval(
      int[][][][] dest,
      NslInt4 num,
      int start1,
      int start2,
      int start3,
      int start4,
      int end1,
      int end2,
      int end3,
      int end4) {
    int[][][][] _data = num.get();

    if (start1 < 0) start1 = 0;
    if (start2 < 0) start2 = 0;
    if (start3 < 0) start3 = 0;
    if (start4 < 0) start4 = 0;
    if (end1 > _data.length) end1 = _data.length;
    if (end2 > _data[0].length) end2 = _data[0].length;
    if (end3 > _data[0][0].length) end3 = _data[0][0].length;
    if (end4 > _data[0][0][0].length) end4 = _data[0][0][0].length;

    int length1 = end1 - start1 + 1;
    int length2 = end2 - start2 + 1;
    int length3 = end3 - start3 + 1;
    int length4 = end4 - start4 + 1;

    return eval(dest, _data, start1, start2, start3, start4, end1, end2, end3, end4);
  }
 public int[][][][] eval(int[][][][] dest, NslInt4 a, NslInt4 b) {
   return eval(dest, a.getint4(), b.getint4());
 }
 public int[][][][] eval(int a, NslInt4 b) {
   return eval(a, b.getint4());
 }
 public int[][][][] eval(NslInt4 a, NslInt4 b) {
   return eval(a.getint4(), b.getint4());
 }
 public int[][][][] eval(NslInt4 a, int b) {
   return eval(a.getint4(), b);
 }