code: public function generateKey(GenericModel $foreignObject, $keyName, $keyValue)
      {
          if (is_null($this->keyGenerator)) {
              $self = $this;
              $this->keyGenerator = function ($foreignModel, $keyName, $keyValue) use ($self) {
                  return [$self->module->systemId, $foreignModel->tableName, $keyName, $keyValue];
              };
          }
          $keyGen = $this->keyGenerator;
          $return = $keyGen($foreignObject, $keyName, $keyValue);
  
          if (isset($return)) {
              if (!is_array($return)) {
                  $return = [$return];
              }
              $return = implode('.', $return);
  
              return $return;
          }
  
          return;
      }
docs: [[@doctodo method_description:generateKey]].
  
  @param cascade\components\dataInterface\connectors\generic\Model $foreignObject [[@doctodo param_description:foreignObject]]
  @param [[@doctodo param_type:keyName]]                           $keyName       [[@doctodo param_description:keyName]]
  @param [[@doctodo param_type:keyValue]]                          $keyValue      [[@doctodo param_description:keyValue]]
  
  @return [[@doctodo return_type:generateKey]] [[@doctodo return_description:generateKey]]