/**
  * Auto detect & extract a value
  *
  * @todo expand auto detect types
  *
  * @param Value $obj_property
  * @return mixed
  */
 protected function extractAutoDetectValue($obj_property)
 {
     if ($obj_property->hasStringValue()) {
         return $obj_property->getStringValue();
     }
     if ($obj_property->hasIntegerValue()) {
         return $obj_property->getIntegerValue();
     }
     if ($obj_property->hasTimestampMicrosecondsValue()) {
         return $this->extractDatetimeValue($obj_property);
     }
     if ($obj_property->hasDoubleValue()) {
         return $obj_property->getDoubleValue();
     }
     if ($obj_property->hasBooleanValue()) {
         return $obj_property->getBooleanValue();
     }
     if ($obj_property->getListValueSize() > 0) {
         return $this->extractStringListValue($obj_property);
     }
     // $this->extractPropertyValue($int_field_type, $obj_property); // Recursive detection call
     return null;
 }