public static int[] eval(NslInt2 _data, int i) {
   int[] sizes = _data.getSizes();
   int size1 = sizes[0];
   int size2 = sizes[1];
   int[] dest = new int[size2];
   return (eval(dest, _data, i));
 }
  public static int[][] eval(
      int[][] dest, NslInt2 num, int start1, int start2, int end1, int end2) {

    int[][] _data = num.get();

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

    return eval(dest, _data, start1, start2, end1, end2);
  }
  public static int[][] eval(NslInt2 num, int start1, int start2, int end1, int end2) {

    int[][] _data = num.get();

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

    int length1 = end1 - start1 + 1;
    int length2 = end2 - start2 + 1;

    return eval(new int[length1][length2], _data, start1, start2, end1, end2);
  }
 public int[][] eval(int[][] dest, NslInt2 a, NslInt2 b) {
   return eval(dest, a.getint2(), b.getint2());
 }
 public int[][] eval(NslInt2 a, NslInt2 b) {
   return eval(a.getint2(), b.getint2());
 }
 public int[][] eval(int a, NslInt2 b) {
   return eval(a, b.getint2());
 }
 public int[][] eval(NslInt2 a, int b) {
   return eval(a.getint2(), b);
 }
 // NslInt 2d NslNumeric
 public static int[] eval(int[] dest, NslInt2 _data, int i) {
   dest = _data.getint1(i);
   return dest;
 }