whole_func_string: function last (o, n) {
                      if(typeof o === 'boolean') return o;
                      var gotN = (!!n || n === 0);
  
                      n = parseInt(n, 10);
                      n = isNaN(n) || !isFinite(n) ? 1 : n;
                      var v = null, keys, len = libs.object.size(o), idx;
  
                      if(typeof o === 'boolean') {
                          return o;
                      }
                      else if(libs.object.isArguments(o)) {
                          keys = getKeys(o);
                          idx  = keys.indexOf('length');
  
                          if(idx > -1) keys.splice(idx, 1);
                          v = []; len = keys.length;
                          // Arguments object should ignore undefined members...
                          libs.object.each(keys, 0, len, function (k) { if(o[k] !== undefined) v.unshift(o[k]); });
                          v = v.slice(0, n);
                      }
                      else if(typeof o !== 'object') {
                          if(n !== 0) v = o.toString().slice(-n); else return null;
                      }
                      else if(o instanceof Array) {
                          if(n === 1 && !gotN) return o[o.length -1];
                          if(n === 0 && !gotN) return undefined;
  
                          return n !== 0 ? o.slice(-n) : [];
                      }
                      else {
                          v = {};
                          if(n < 0) n = 0;
                          libs.object.each(o, len - n, len, function (item, key) { v[key] = item; });
                          keys = getKeys(v);
  
                          if(n === 1 && !gotN && keys.length === 0) return undefined;
                          return keys.length === 1 && !gotN ? v[keys[0]] : v;
                      }
                      return v.length === 1 && !gotN ? v[0] : v;
                  }
func_code_string: function last (o, n) {
                      if(typeof o === 'boolean') return o;
                      var gotN = (!!n || n === 0);
  
                      n = parseInt(n, 10);
                      n = isNaN(n) || !isFinite(n) ? 1 : n;
                      var v = null, keys, len = libs.object.size(o), idx;
  
                      if(typeof o === 'boolean') {
                          return o;
                      }
                      else if(libs.object.isArguments(o)) {
                          keys = getKeys(o);
                          idx  = keys.indexOf('length');
  
                          if(idx > -1) keys.splice(idx, 1);
                          v = []; len = keys.length;
                          // Arguments object should ignore undefined members...
                          libs.object.each(keys, 0, len, function (k) { if(o[k] !== undefined) v.unshift(o[k]); });
                          v = v.slice(0, n);
                      }
                      else if(typeof o !== 'object') {
                          if(n !== 0) v = o.toString().slice(-n); else return null;
                      }
                      else if(o instanceof Array) {
                          if(n === 1 && !gotN) return o[o.length -1];
                          if(n === 0 && !gotN) return undefined;
  
                          return n !== 0 ? o.slice(-n) : [];
                      }
                      else {
                          v = {};
                          if(n < 0) n = 0;
                          libs.object.each(o, len - n, len, function (item, key) { v[key] = item; });
                          keys = getKeys(v);
  
                          if(n === 1 && !gotN && keys.length === 0) return undefined;
                          return keys.length === 1 && !gotN ? v[keys[0]] : v;
                      }
                      return v.length === 1 && !gotN ? v[0] : v;
                  }
func_documentation_string: Returns the last n elements of an object. If the object is an array, and only one items is retrieved,
  that item will be returned rather than an array.
  @param {Object} o The object to operate on.
  @param {Number=} [n=1] The number of elements to return
  @return {Array<*>} The last n elements of the array.
  @function