comefrom: <awangdev>4Sum_2.java
code: public ArrayList<ArrayList<Integer>> fourSum(int[] numbers, int target) {     
        ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>();
        if(numbers == null || numbers.length < 4) {
          return rst;
        }
        Arrays.sort(numbers);
        for (int i = 0; i < numbers.length - 3; i++) {
          if (i != 0 && numbers[i] == numbers[i - 1]) {
            continue;
          }
          for (int j = i + 1; j < numbers.length - 2; j++) {
            if (j != i + 1 && numbers[j] == numbers[j - 1]) {
              continue;
            }
            int third = j + 1;
            int fourth = numbers.length - 1;
            while (third < fourth) {
              int sum = numbers[i] + numbers[j] + numbers[third] + numbers[fourth];
              if (sum < target) {
                third++;
              } else if (sum > target) {
                fourth--;
              } else {
                ArrayList<Integer> list = new ArrayList<Integer>();
                list.add(numbers[i]);
                list.add(numbers[j]);
                list.add(numbers[third]);
                list.add(numbers[fourth]);
                rst.add(list);
                third++;
                fourth--;
                while (third < fourth && numbers[third] == numbers[third - 1]) {
                  third++;
                }
                while (third < fourth && numbers[fourth] == numbers[fourth + 1]){
                  fourth--;
                }
              }
            }
          }
        }
        return rst;
      }
masked: public ArrayList < ArrayList < Integer >> var_2 ( int [ ] var_3 , int var_4 ) {
    ArrayList < ArrayList < Integer >> var_5 = new ArrayList < ArrayList < Integer >> ( ) ;
    if ( var_3 == null || var_3 . length < 4 ) {
      return var_5 ;
    }
    Arrays . sort ( var_3 ) ;
    for ( int var_12 = 0 ;
    var_12 < var_3 . length - 3 ;
    var_12 ++ ) {
      if ( var_12 != 0 && var_3 [ var_12 ] == var_3 [ var_12 - 1 ] ) {
        continue ;
      }
      for ( int var_15 = var_12 + 1 ;
      var_15 < var_3 . length - 2 ;
      var_15 ++ ) {
        if ( var_15 != var_12 + 1 && var_3 [ var_15 ] == var_3 [ var_15 - 1 ] ) {
          continue ;
        }
        int var_17 = var_15 + 1 ;
        int var_18 = var_3 . length - 1 ;
        while ( var_17 < var_18 ) {
          int var_19 = var_3 [ var_12 ] + var_3 [ var_15 ] + var_3 [ var_17 ] + var_3 [ var_18 ] ;
          if ( var_19 < var_4 ) {
            var_17 ++ ;
          }
          else if ( var_19 > var_4 ) {
            var_18 -- ;
          }
          else {
            ArrayList < Integer > var_20 = new ArrayList < Integer > ( ) ;
            var_20 . add ( var_3 [ var_12 ] ) ;
            var_20 . add ( var_3 [ var_15 ] ) ;
            var_20 . add ( var_3 [ var_17 ] ) ;
            var_20 . add ( var_3 [ var_18 ] ) ;
            var_5 . add ( var_20 ) ;
            var_17 ++ ;
            var_18 -- ;
            while ( var_17 < var_18 && var_3 [ var_17 ] == var_3 [ var_17 - 1 ] ) {
              var_17 ++ ;
            }
            while ( var_17 < var_18 && var_3 [ var_18 ] == var_3 [ var_18 + 1 ] ) {
              var_18 -- ;
            }
          }
        }
      }
    }
    return var_5 ;
  }
  