/**
  * Create set of options to specify missing relation definition fields.
  *
  * @return array
  */
 protected function proposedDefinitions()
 {
     $options = ['name' => $this->name, 'name:plural' => Inflector::pluralize($this->name), 'name:singular' => Inflector::singularize($this->name), 'record:role' => $this->record->getRole(), 'record:table' => $this->record->getTable(), 'record:primaryKey' => $this->record->getPrimaryKey()];
     //Some options may use values declared in other definition fields
     $proposed = [RecordEntity::OUTER_KEY => 'outerKey', RecordEntity::INNER_KEY => 'innerKey', RecordEntity::PIVOT_TABLE => 'pivotTable'];
     foreach ($proposed as $property => $alias) {
         if (isset($this->definition[$property])) {
             //Let's create some default options based on user specified values
             $options['definition:' . $alias] = $this->definition[$property];
         }
     }
     if ($this->builder->hasRecord($this->target)) {
         $options = $options + ['outer:role' => $this->outerRecord()->getRole(), 'outer:table' => $this->outerRecord()->getTable(), 'outer:primaryKey' => $this->outerRecord()->getPrimaryKey()];
     }
     return $options;
 }