protected function determineValue($value)
    {
        if (\is_array($value)) {
            foreach ($value as &$item) {
                $item = $this->determineValue($item);
            }

            unset($item);

            return $value;
        }

        // Trim the value of spaces
        $value = trim($value);

        // If there was no double colon found there's no need to go further
        if (strpos($value, '::') === false) {
            return $value;
        }

        // Determine if the value is a constant
        if (\defined($value)) {
            // Set the value as the constant's value
            return \constant($value);
        }

        [$class, $member] = explode('::', $value);

        // Check for static property
        if (property_exists($class, $member)) {
            return $class::$$member;
        }

        // Check for static method
        if (method_exists($class, $member)) {
            return $class::$member();
        }

        return $value;
    }