docs: function( options ){
        var obj = options.map;
        var keys = options.keys;
        var l = keys.length;
        var keepChildren = options.keepChildren;
        
        for(var i = 0; i < l; i++){
          var key = keys[i];
  
          if( $$.is.plainObject( key ) ){
            $$.util.error('Tried to delete map with object key');
          }
  
          var lastKey = i === options.keys.length - 1;
          if( lastKey ){
            
            if( keepChildren ){ // then only delete child fields not in keepChildren
              for( var child in obj ){
                if( !keepChildren[child] ){
                  delete obj[child];
                }
              }
            } else {
              delete obj[key];
            }
  
          } else {
            obj = obj[key];
          }
        }
      }