code: public function keyType($class, $path)
      {
  
          // Allows manual overwrites if titles
          if ($type = $this->getManualKeyType($this->getClassName($class),$path)) {
              return $type;
          }
  
          try{
  
              // First check if path is a related key (account.owner.id)
              if ($this->parser->isRelatedKey($path)) {
  
                  list($join, $key) = $this->parser->toJoinAndKey($path);
                  $className = $this->pathIntrospector->classOfPath($class, $join);
  
              } else { // No related key
  
                  $className = $this->getClassName($class);
                  $key = $path;
  
              }
  
              if ($type = $this->getManualKeyType($className, $key)) {
                  return $type;
              }
  
              if ($this->isDate($className, $key)) {
                  $type = new TemporalType();
                  $type->setFormat($this->defaultDateFormat);
                  return $type;
              }
  
          }
          catch(UnexpectedValueException $e){
              return;
          }
  
      }
docs: {@inheritdoc}
  
  @param string|object $class The class or an object of it
  @param string $path A key name. Can be dotted like address.street.name
  @return \Xtype\AbstractType