public ArrayList<Object> map2(final Function2<? super Object,? super Object,? extends Object> fn, final List<? extends Object> bs, final List<? extends Object> cs) {
    ArrayList<Object> _xblockexpression = null;
    {
      final ArrayList<Object> finalResult = CollectionLiterals.<Object>newArrayList();
      int _length = ((Object[])Conversions.unwrapArray(bs, Object.class)).length;
      int _minus = (_length - 1);
      IntegerRange _upTo = new IntegerRange(0, _minus);
      final Procedure1<Integer> _function = new Procedure1<Integer>() {
        public void apply(final Integer i) {
          Object _get = bs.get(i);
          Object _get_1 = cs.get(i);
          Object _apply = fn.apply(_get, _get_1);
          finalResult.add(_apply);
        }
      };
      IterableExtensions.<Integer>forEach(_upTo, _function);
      _xblockexpression = (finalResult);
    }
    return _xblockexpression;
  }