code: function (a1, a2, fnEqual) {
          
          if (   !Arrays.isArrayLike(a1)
              || !Arrays.isArrayLike(a2)
              || a1.length !== a2.length )
              return false;
          
          if (typeof fnEqual === 'undefined')
              fnEqual = Arrays._valueEquals;
          else if (typeof fnEqual !== 'function')
              throw "IllegalArgumentException: fnEqual must be a Function.";
          
          var areEqual = true;
          for ( var i = 0, len = a1.length;
                    i < len && areEqual === true;
                    i++ ) {
              if (!fnEqual(a1[i], a2[i]))
                  areEqual = false;
          }
          return areEqual;
      }
docs: <p>
  Compares two Array objects and returns
  true if they both contains the same items
  in the same order.  This function uses the '==='
  operator to compare the items with each other.
  </p>
  
  <p>
  If any of the argument is not an Array,
  this function returns <em>false</em>.
  </p>
  @param a1 {Array}
  @param a2 {Array}
  @return {Boolean}