 
     base36ToNum: (_base36)->
       @baseStrToNum(_base36,36)
-    
+
     numToBase36: (_num)->
       @baseIntToStr(_num,36)
-    
+
     _hexColorLengths: [3,4,6,7]
     _hexCharacters: ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']
     _hex3To6Ratio: 4097 # parseInt('1001',16)

        'null'
      ## = Description
       # Makes a deep copy of the object.
       # 
       # When you use assignment of a js object, only primitive object
       # types (strings, numbers and booleans) are copied. This method
       # makes a deep (nested) clone of the input object.
       # 
       # = Parameters
       # +_obj+:: Any object
       # 
       # = Returns
       # A copy of the object
       ##

      catch e
        console.log('_'+'decodeString failed for _'+'str: ',_str)
        return _str
    # Recursively merges two objects of identical structure (array or object)
    updateObject: (_src,_dst)->
      _typeSrc = @typeChr(_src)
      _typeDst = @typeChr(_dst)
      _merge = (_item,_src,_dst,i)=>
        _itemType = @typeChr(_item)
        if _itemType == @typeChr(_dst[i])
          if _itemType == 'a' or _itemType == 'h'
            @updateObjects( _item, _dst[i] )
          else
            _dst[i] = _item
        else if !@isProduction
          console.warn('updateObject; mismatching item type: ', _itemType, ' (', _item, ') vs ', @_typeChr(_dst[i]), ' (',_dst[i], ')')
      if _typeSrc == _typeDst
        if _typeSrc == 'a'
          for _item, i in _src
            _merge(_item,_src,_dst,i)
        else if _typeSrc == 'h'
          for i, _item of _src
            _itemType = @typeChr(_item)
            _merge(_itemType,_src,_dst,i)
    # Returns a decoded Array with the decoded content of Array _arr
    _decodeArr: (_arr)->
      _output = []
