code: function validateData(options, data, newData) {
    //console.log('validateData called with ', arguments.length, 'arguments\n', 
    //    util.inspect(arguments, {depth: null}));
  
    var context = merge({}, options);
  
    if (context.baseSchema === undefined) {
      context.baseSchema = context.schema;
    }
  
    //if (newData !== undefined) {
      context.newData = newData;
      context.data = data;
    //} else {
    //  context.newData = data;
    //}
  
    //console.log('about to start', context);
    data = doValidateAdd(context);
    var i;
  
    //console.log('after initial data load, data is: ', context.data, '\n', context);
  
    if (arguments.length > 3) {
      //console.log('have more than two datas');
      for (i = 3; i < arguments.length; i++) {
        //build context
        context.newData = arguments[i];
        data = doValidateAdd(context);
        //console.log('after handling data', i, 'data is', context.data);
      }
    }
  
    //console.log('validateData complete', context, data);
  
    return data;
  }
docs: @private
  
  Adds new data to the existing data based on the given schema.
  
  
  @param {Object} options An object containing options
  @param {Object} options.schema An Object containing a valid schema
  should contain
  @param {*} data Data to validate and return. If no data is given,
  data containing any default values will be returned. If newData
  is given, newData will be validated and merged into data.
  @param {...*} newData, ... Data to validate and merge into data
  
  @returns {*} Validated and merged data