private function getTypeFromValue($value)
{
if (is_int($value)) {
return new IntegerType(false);
} elseif (is_float($value)) {
return new FloatType(false);
} elseif (is_bool($value)) {
return new BooleanType(false);
} elseif ($value === null) {
return new NullType();
} elseif (is_string($value)) {
return new StringType(false);
} elseif (is_array($value)) {
return new ArrayType($this->getCombinedType(array_map(function ($value) : Type {
return $this->getTypeFromValue($value);
}, $value)), false);
}
return null;
}