docs: function setFieldValuesNestedArray (field, items) {
      // do not process unless value
      if (!defined(items)) {
          return
      }
      // property value must be array of items
      assert.ok(Array.isArray(items), 'expected array for '+field.property)
      // index of item in values array
      var idx = 0
      // create entry in field values for each item in array
      _.each(items, item => {
          // index string for field name
          var nameIdx = '['+idx+']'
          // each entry in values is an array of fields with values
          var values = []
          // add each sub field to values with value from record item
          _.each(field.fields, field => {
              // clone field to change properties for local version
              field = _.cloneDeep(field)
              // set value from item
              setFieldValue(item, field)
              // replace index in field name
              field.name = field.name.replace('[0]', nameIdx)
              // add field to list of values for item
              values.push(field)
          })
          // add row to values
          field.values.push(values)
          // increment row count
          idx++
      })
      // get index string for new row
      var nameIdx = '['+idx+']'
      // update row index for field names that will be used for a new row
      _.each(field.fields, field => {
          field.name = field.name.replace('[0]', nameIdx)
      })
  }