code: function convertType(value, schema) {
    if (_.isArray(value)) {
      return value.map(function(v) {
        return convertType(v, schema && schema[0])
      });
    } else if (_.isObject(value)) {
      if (value.$ && value.$['xsi:nil'] === 'true') {
        return null;
      } else if (_.isArray(schema)) {
        return [ convertType(value, schema[0]) ];
      } else {
        var o = {};
        for (var key in value) {
          o[key] = convertType(value[key], schema && schema[key]);
        }
        return o;
      }
    } else {
      if (_.isArray(schema)) {
        return [ convertType(value, schema[0]) ];
      } else if (_.isObject(schema)) {
        return {};
      } else {
        switch(schema) {
          case 'string':
            return String(value);
          case 'number':
            return Number(value);
          case 'boolean':
            return value === 'true';
          default:
            return value;
        }
      }
    }
  }
docs: /* @private