public function buildSubstring($startPosition, $length = null)
	{
		ArgumentValidator::validateUnsignedInteger($startPosition);
		ArgumentValidator::validateUnsignedIntegerOrNull($length);
		if ($startPosition >= $this->length()) {
			throw new \InvalidArgumentException('Start position ' . (string)$startPosition . ' invalid');
		}
		if ($length === null) {
			return mb_substr($this->string, $startPosition);
		}
		return mb_substr($this->string, $startPosition, $length);
	}