code: function _validateCells (view, model, cellValidator) {
    // We should already have the error for it not existing at this point, so just fake success
    // this seems wrong, but I'm not sure of a better way to do it - ARM
    if (!view.cells) {
      return {
        errors: [],
        warnings: []
      }
    }
  
    const results = _.map(view.cells, (rootCell, index) => {
      const cellResults = []
      const path = `#/cells/${index}`
      const cellId = rootCell.extends
  
      if (cellId) {
        const cell = view.cellDefinitions[cellId]
        const cellPath = `#/cellDefinitions/${cellId}`
        cellResults.push(
          validateRequiredAttribute(rootCell, path, 'extends', Object.keys(view.cellDefinitions))
        )
  
        if (cell !== undefined) {
          const subModel = rootCell.model ? getSubModel(model, rootCell.model, cell.dependsOn) : undefined
  
          cellResults.push(
             cellValidator.validate(cellPath, cell, subModel)
          )
        }
  
        return aggregateResults(cellResults)
      }
  
      cellResults.push(
        cellValidator.validate(`#/cells/${index}`, rootCell)
      )
  
      return aggregateResults(cellResults)
    })
  
    return aggregateResults(results)
  }
docs: Make sure the cells (if specified) are valid
  @param {BunsenView} view - the schema to validate
  @param {BunsenModel} model - the JSON schema that the cells will reference
  @param {CellValidator} cellValidator - the validator instance for a cell in the current view
  @returns {BunsenValidationResult} the result of validating the cells