<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="5.16.0@2897ba636551a8cb61601cc26f6ccfbba6c36591">
  <file src="src/Attribute.php">
    <DocblockTypeContradiction>
      <code>is_int($value)</code>
      <code>is_string($value)</code>
    </DocblockTypeContradiction>
    <InvalidReturnStatement>
      <code><![CDATA[$value->format('U')]]></code>
      <code><![CDATA[Converter\Converter::fromLdapDateTime($value, false)->format('U')]]></code>
    </InvalidReturnStatement>
    <InvalidReturnType>
      <code>int|null</code>
    </InvalidReturnType>
    <InvalidScalarArgument>
      <code>mt_rand()</code>
      <code>mt_rand()</code>
    </InvalidScalarArgument>
    <MissingReturnType>
      <code>setDateTimeAttribute</code>
      <code>setPassword</code>
    </MissingReturnType>
    <MixedArgument>
      <code>$data[$attribName]</code>
      <code>$data[$attribName]</code>
      <code>$data[$attribName]</code>
      <code>$data[$attribName]</code>
      <code>$data[$attribName][$index]</code>
      <code>$resultArray</code>
      <code>$resultArray</code>
      <code>$v</code>
      <code>$v</code>
      <code>$values</code>
      <code>$values[$i]</code>
    </MixedArgument>
    <MixedArrayAccess>
      <code>$data[$attribName][$index]</code>
      <code>$resultArray[$k]</code>
    </MixedArrayAccess>
    <MixedAssignment>
      <code>$resultArray</code>
      <code>$retArray[]</code>
      <code>$return</code>
      <code>$v</code>
      <code>$v</code>
      <code>$v</code>
      <code>$v</code>
      <code>$v</code>
      <code>$values</code>
    </MixedAssignment>
    <MixedInferredReturnType>
      <code>array|int</code>
    </MixedInferredReturnType>
    <MixedReturnStatement>
      <code>$values</code>
      <code>$values</code>
    </MixedReturnStatement>
    <RedundantConditionGivenDocblockType>
      <code>$value !== null</code>
      <code>$value !== null</code>
      <code>is_int($index)</code>
    </RedundantConditionGivenDocblockType>
  </file>
  <file src="src/Collection.php">
    <InvalidReturnStatement>
      <code>$data</code>
    </InvalidReturnStatement>
    <InvalidReturnType>
      <code>TItem</code>
    </InvalidReturnType>
    <PossiblyUnusedReturnValue>
      <code>bool</code>
    </PossiblyUnusedReturnValue>
  </file>
  <file src="src/Collection/DefaultIterator.php">
    <MissingClosureReturnType>
      <code><![CDATA[static fn($a, $b) =>]]></code>
    </MissingClosureReturnType>
    <MixedArgument>
      <code>$attributeNameTreatment[0]</code>
      <code>$attributeNameTreatment[1]</code>
    </MixedArgument>
    <MixedArgumentTypeCoercion>
      <code><![CDATA[static fn($a, $b) =>
                $sortFunction($a['sortValue'], $b['sortValue'])]]></code>
    </MixedArgumentTypeCoercion>
    <MixedArrayAccess>
      <code><![CDATA[$a['sortValue']]]></code>
      <code><![CDATA[$b['sortValue']]]></code>
    </MixedArrayAccess>
    <MixedArrayOffset>
      <code>$entry[$attrName]</code>
    </MixedArrayOffset>
    <MixedAssignment>
      <code>$attrName</code>
    </MixedAssignment>
    <MixedPropertyTypeCoercion>
      <code>$attributeNameTreatment</code>
    </MixedPropertyTypeCoercion>
    <PossiblyInvalidFunctionCall>
      <code><![CDATA[call_user_func($this->attributeNameTreatment, $name)]]></code>
    </PossiblyInvalidFunctionCall>
    <PossiblyUnusedMethod>
      <code>getAttributeNameTreatment</code>
    </PossiblyUnusedMethod>
    <RedundantCastGivenDocblockType>
      <code>(int) $attributeNameTreatment</code>
    </RedundantCastGivenDocblockType>
    <TypeDoesNotContainType>
      <code><![CDATA[$this->itemCount === false]]></code>
    </TypeDoesNotContainType>
  </file>
  <file src="src/Converter/Converter.php">
    <DocblockTypeContradiction>
      <code>is_scalar($value)</code>
    </DocblockTypeContradiction>
    <InvalidScalarArgument>
      <code><![CDATA[$time['day']]]></code>
      <code><![CDATA[$time['hour']]]></code>
      <code><![CDATA[$time['minute']]]></code>
      <code><![CDATA[$time['month']]]></code>
      <code><![CDATA[$time['offsethours']]]></code>
      <code><![CDATA[$time['offsetminutes']]]></code>
      <code><![CDATA[$time['second']]]></code>
    </InvalidScalarArgument>
    <MixedArgument>
      <code>$value</code>
      <code>$value</code>
    </MixedArgument>
    <MixedAssignment>
      <code>$v</code>
    </MixedAssignment>
    <PossiblyInvalidArgument>
      <code><![CDATA[$e->getCode()]]></code>
    </PossiblyInvalidArgument>
    <RedundantConditionGivenDocblockType>
      <code>is_string($date)</code>
    </RedundantConditionGivenDocblockType>
  </file>
  <file src="src/Dn.php">
    <DocblockTypeContradiction>
      <code>null === $val</code>
    </DocblockTypeContradiction>
    <InvalidArgument>
      <code>[$key, $value]</code>
    </InvalidArgument>
    <MissingReturnType>
      <code>setCaseFold</code>
      <code>setDefaultCaseFold</code>
    </MissingReturnType>
    <MixedArgument>
      <code>$p</code>
      <code>$part</code>
      <code><![CDATA[$this->dn[$index]]]></code>
      <code>$value</code>
    </MixedArgument>
    <MixedArgumentTypeCoercion>
      <code>$key</code>
    </MixedArgumentTypeCoercion>
    <MixedArrayOffset>
      <code>$multi[$key]</code>
    </MixedArrayOffset>
    <MixedAssignment>
      <code>$key</code>
      <code>$multi[$key]</code>
      <code>$p</code>
      <code>$part</code>
      <code>$val</code>
      <code>$value</code>
    </MixedAssignment>
    <NullArgument>
      <code>null</code>
      <code>null</code>
    </NullArgument>
    <PossiblyInvalidArgument>
      <code>$lastKey</code>
    </PossiblyInvalidArgument>
    <PossiblyNullArgument>
      <code>$caseFold</code>
      <code>$caseFold</code>
      <code>$caseFold</code>
      <code>$caseFold</code>
      <code>$caseFold</code>
      <code>$caseFold</code>
      <code>$caseFold</code>
      <code>$k</code>
      <code>$offset</code>
    </PossiblyNullArgument>
    <PossiblyNullArrayAccess>
      <code>$k[$i]</code>
      <code>$k[$i]</code>
      <code>$v[$i]</code>
      <code>$v[$i]</code>
    </PossiblyNullArrayAccess>
    <PossiblyUnusedReturnValue>
      <code>bool</code>
    </PossiblyUnusedReturnValue>
    <RedundantCastGivenDocblockType>
      <code>(int) $length</code>
      <code>(int) $length</code>
      <code>(int) $levelUp</code>
      <code>(int) $offset</code>
    </RedundantCastGivenDocblockType>
    <RedundantConditionGivenDocblockType>
      <code>is_string($dn)</code>
    </RedundantConditionGivenDocblockType>
    <UnsafeInstantiation>
      <code>new static($dn, $caseFold)</code>
      <code>new static($dnArray, $caseFold)</code>
      <code><![CDATA[new static($newDn, $this->caseFold)]]></code>
    </UnsafeInstantiation>
  </file>
  <file src="src/ErrorHandler.php">
    <DocblockTypeContradiction>
      <code>! self::$errorHandler</code>
      <code>! self::$errorHandler</code>
    </DocblockTypeContradiction>
    <InvalidArgument>
      <code>static function ($errNo, $errString): void {
        }</code>
    </InvalidArgument>
    <PossiblyUnusedMethod>
      <code>setErrorHandler</code>
    </PossiblyUnusedMethod>
    <PossiblyUnusedReturnValue>
      <code>mixed</code>
    </PossiblyUnusedReturnValue>
    <UnusedClosureParam>
      <code>$errNo</code>
      <code>$errString</code>
    </UnusedClosureParam>
  </file>
  <file src="src/Exception/LdapException.php">
    <PossiblyNullArgument>
      <code>$code</code>
    </PossiblyNullArgument>
  </file>
  <file src="src/Filter.php">
    <MissingParamType>
      <code>$filter</code>
      <code>$filter</code>
    </MissingParamType>
    <UnsafeInstantiation>
      <code>new static($attr, $value, self::TYPE_APPROX, null, null)</code>
      <code><![CDATA[new static($attr, $value, self::TYPE_EQUALS, '*', '*')]]></code>
      <code><![CDATA[new static($attr, $value, self::TYPE_EQUALS, '*', null)]]></code>
      <code><![CDATA[new static($attr, $value, self::TYPE_EQUALS, null, '*')]]></code>
      <code>new static($attr, $value, self::TYPE_EQUALS, null, null)</code>
      <code>new static($attr, $value, self::TYPE_GREATER, null, null)</code>
      <code>new static($attr, $value, self::TYPE_GREATEROREQUAL, null, null)</code>
      <code>new static($attr, $value, self::TYPE_LESS, null, null)</code>
      <code>new static($attr, $value, self::TYPE_LESSOREQUAL, null, null)</code>
      <code><![CDATA[new static($attr, '', self::TYPE_EQUALS, '*', null)]]></code>
    </UnsafeInstantiation>
  </file>
  <file src="src/Filter/AbstractFilter.php">
    <DocblockTypeContradiction>
      <code>null === $val</code>
    </DocblockTypeContradiction>
    <MissingParamType>
      <code>$filter</code>
      <code>$filter</code>
    </MissingParamType>
  </file>
  <file src="src/Filter/AbstractLogicalFilter.php">
    <MixedAssignment>
      <code>$s</code>
      <code>$sub</code>
    </MixedAssignment>
    <MixedMethodCall>
      <code>toString</code>
    </MixedMethodCall>
    <MixedOperand>
      <code><![CDATA[$sub->toString()]]></code>
    </MixedOperand>
  </file>
  <file src="src/Ldap.php">
    <DocblockTypeContradiction>
      <code>$dname === null</code>
      <code><![CDATA[$this->rootDse === null]]></code>
      <code><![CDATA[$this->schema === null]]></code>
    </DocblockTypeContradiction>
    <InvalidNullableReturnType>
      <code>Connection</code>
      <code>array</code>
      <code>array</code>
    </InvalidNullableReturnType>
    <InvalidScalarArgument>
      <code>$duration * 1000000</code>
    </InvalidScalarArgument>
    <MissingReturnType>
      <code>reconnectSleep</code>
    </MissingReturnType>
    <MixedArgument>
      <code>$c</code>
      <code>$c</code>
      <code>$c</code>
      <code>$collectionClass</code>
      <code>$entry[$key]</code>
      <code>$entry[$key]</code>
      <code>$entry[$key]</code>
      <code>$entry[$key]</code>
      <code>$host</code>
      <code>$message</code>
      <code>$password</code>
      <code>$password</code>
      <code><![CDATA[$this->connectString]]></code>
      <code>$username</code>
      <code>$username</code>
      <code>$username</code>
      <code>$username</code>
      <code>$username</code>
      <code>$val</code>
      <code>$value</code>
      <code>$value</code>
      <code>array_shift($newDnParts)</code>
    </MixedArgument>
    <MixedArrayAccess>
      <code><![CDATA[$this->lastConnectBindParams[$method][$parameter]]]></code>
    </MixedArrayAccess>
    <MixedAssignment>
      <code>$$key</code>
      <code>$accountCanonicalForm</code>
      <code>$c</code>
      <code>$c</code>
      <code>$collectionClass</code>
      <code>$err</code>
      <code>$host</code>
      <code>$message</code>
      <code>$networkTimeout</code>
      <code>$password</code>
      <code>$permittedOptions[$key]</code>
      <code>$port</code>
      <code>$reverseSort</code>
      <code><![CDATA[$this->boundUser]]></code>
      <code><![CDATA[$this->connectString]]></code>
      <code>$useSsl</code>
      <code>$useStartTls</code>
      <code>$username</code>
      <code>$v</code>
      <code>$val</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
    </MixedAssignment>
    <MixedInferredReturnType>
      <code>bool</code>
      <code>bool</code>
      <code>bool</code>
      <code>bool</code>
      <code>bool</code>
      <code>bool</code>
      <code>int</code>
      <code>int</code>
      <code>int</code>
      <code>int</code>
      <code>int</code>
      <code>null|string</code>
      <code>null|string</code>
      <code>string</code>
      <code>string</code>
      <code>string</code>
      <code>string</code>
      <code>string</code>
      <code>string</code>
      <code>string[]|null</code>
    </MixedInferredReturnType>
    <MixedOperand>
      <code>$host</code>
      <code>$host</code>
      <code>$port</code>
      <code>$username</code>
      <code>-$err</code>
      <code>-$err - 1</code>
    </MixedOperand>
    <MixedReturnStatement>
      <code>$accountCanonicalForm</code>
      <code>$accountCanonicalForm</code>
      <code><![CDATA[$acct['dn']]]></code>
      <code>$err</code>
      <code><![CDATA[$this->options['accountDomainName']]]></code>
      <code><![CDATA[$this->options['accountDomainNameShort']]]></code>
      <code><![CDATA[$this->options['accountFilterFormat']]]></code>
      <code><![CDATA[$this->options['allowEmptyPassword']]]></code>
      <code><![CDATA[$this->options['baseDn']]]></code>
      <code><![CDATA[$this->options['bindRequiresDn']]]></code>
      <code><![CDATA[$this->options['host']]]></code>
      <code><![CDATA[$this->options['networkTimeout']]]></code>
      <code><![CDATA[$this->options['optReferrals']]]></code>
      <code><![CDATA[$this->options['password']]]></code>
      <code><![CDATA[$this->options['port']]]></code>
      <code><![CDATA[$this->options['reconnectAttempts']]]></code>
      <code><![CDATA[$this->options['saslOpts']]]></code>
      <code><![CDATA[$this->options['tryUsernameSplit']]]></code>
      <code><![CDATA[$this->options['useSsl']]]></code>
      <code><![CDATA[$this->options['useStartTls']]]></code>
      <code><![CDATA[$this->options['username']]]></code>
    </MixedReturnStatement>
    <MixedReturnTypeCoercion>
      <code><![CDATA[Collection<array{dn: string, ...}>]]></code>
      <code>new $collectionClass($iterator)</code>
      <code>new Collection($iterator)</code>
    </MixedReturnTypeCoercion>
    <NullableReturnStatement>
      <code>$acct</code>
      <code><![CDATA[$result->getFirst()]]></code>
      <code><![CDATA[$this->resource]]></code>
      <code>null</code>
    </NullableReturnStatement>
    <PossiblyInvalidOperand>
      <code>$filter</code>
    </PossiblyInvalidOperand>
    <PossiblyNullArgument>
      <code>$attrs</code>
      <code><![CDATA[$this->resource]]></code>
      <code><![CDATA[$this->resource]]></code>
      <code><![CDATA[$this->resource]]></code>
      <code><![CDATA[$this->resource]]></code>
      <code><![CDATA[$this->resource]]></code>
      <code><![CDATA[$this->resource]]></code>
      <code><![CDATA[$this->resource]]></code>
      <code><![CDATA[$this->resource]]></code>
      <code><![CDATA[$this->resource]]></code>
    </PossiblyNullArgument>
    <PossiblyUndefinedVariable>
      <code>$err</code>
    </PossiblyUndefinedVariable>
    <PossiblyUnusedReturnValue>
      <code>Ldap</code>
      <code>Ldap</code>
      <code>Ldap</code>
    </PossiblyUnusedReturnValue>
    <PropertyNotSetInConstructor>
      <code>$rootDse</code>
      <code>$schema</code>
    </PropertyNotSetInConstructor>
    <RedundantCastGivenDocblockType>
      <code>(bool) $alwaysEmulate</code>
      <code>(bool) $useSsl</code>
      <code>(bool) $useStartTls</code>
      <code>(int) $networkTimeout</code>
      <code>(int) $port</code>
      <code>(string) $collectionClass</code>
    </RedundantCastGivenDocblockType>
    <RedundantConditionGivenDocblockType>
      <code><![CDATA[$sort !== null && is_string($sort)]]></code>
      <code>is_string($sort)</code>
    </RedundantConditionGivenDocblockType>
    <ReferenceConstraintViolation>
      <code>$dname</code>
      <code>return;</code>
    </ReferenceConstraintViolation>
    <ReservedWord>
      <code>null|Exception\LdapException</code>
    </ReservedWord>
    <UnsafeInstantiation>
      <code>new $collectionClass($iterator)</code>
    </UnsafeInstantiation>
    <UnusedForeachValue>
      <code>$val</code>
    </UnusedForeachValue>
    <UnusedFunctionCall>
      <code>ldap_free_result</code>
      <code>ldap_unbind</code>
    </UnusedFunctionCall>
  </file>
  <file src="src/Ldif/Encoder.php">
    <InvalidNullableReturnType>
      <code>string</code>
    </InvalidNullableReturnType>
    <MissingReturnType>
      <code>pushAttribute</code>
    </MissingReturnType>
    <MixedArgument>
      <code><![CDATA[$this->options['version']]]></code>
      <code><![CDATA[$this->options['wrap']]]></code>
      <code>$v</code>
      <code>$value</code>
      <code>$value</code>
    </MixedArgument>
    <MixedArgumentTypeCoercion>
      <code>$key</code>
    </MixedArgumentTypeCoercion>
    <MixedArrayAssignment>
      <code>$entry[$name][]</code>
    </MixedArrayAssignment>
    <MixedArrayOffset>
      <code>$entry[$name]</code>
      <code>$entry[$name]</code>
      <code>$entry[$name]</code>
    </MixedArrayOffset>
    <MixedAssignment>
      <code>$dn</code>
      <code>$entry[$name]</code>
      <code>$entry[$name][]</code>
      <code>$name</code>
      <code>$oc</code>
      <code>$type</code>
      <code>$v</code>
      <code>$value</code>
      <code>$value</code>
    </MixedAssignment>
    <NullableReturnStatement>
      <code>null</code>
    </NullableReturnStatement>
    <UnsafeInstantiation>
      <code>new static($options)</code>
      <code>new static([])</code>
    </UnsafeInstantiation>
  </file>
  <file src="src/Node.php">
    <DocblockTypeContradiction>
      <code>$data === null</code>
      <code><![CDATA[$this->ldap === null]]></code>
    </DocblockTypeContradiction>
    <ImplementedReturnTypeMismatch>
      <code>void</code>
      <code>void</code>
    </ImplementedReturnTypeMismatch>
    <InvalidNullableReturnType>
      <code>Node</code>
    </InvalidNullableReturnType>
    <LessSpecificReturnStatement>
      <code><![CDATA[$this->getLdap()->search(
            $filter,
            $this->_getDn(),
            $scope,
            ['*', '+'],
            $sort,
            Collection::class
        )]]></code>
    </LessSpecificReturnStatement>
    <MethodSignatureMustProvideReturnType>
      <code>offsetSet</code>
      <code>offsetUnset</code>
    </MethodSignatureMustProvideReturnType>
    <MissingParamType>
      <code>$offset</code>
      <code>$offset</code>
      <code>$value</code>
    </MissingParamType>
    <MissingReturnType>
      <code>_setAttribute</code>
      <code>_setDateTimeAttribute</code>
      <code>loadData</code>
      <code>markAsNew</code>
      <code>markAsToBeDeleted</code>
      <code>triggerEvent</code>
    </MissingReturnType>
    <MixedArgument>
      <code>$offset</code>
      <code>$offset</code>
      <code><![CDATA[$this->currentData[$key]]]></code>
      <code><![CDATA[$this->originalData[$key]]]></code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
    </MixedArgument>
    <MixedArgumentTypeCoercion>
      <code>$key</code>
      <code>$key</code>
    </MixedArgumentTypeCoercion>
    <MixedAssignment>
      <code>$changed[$key]</code>
      <code>$changed[$key]</code>
      <code><![CDATA[$changes['add'][$key]]]></code>
      <code><![CDATA[$changes['add'][$key]]]></code>
      <code><![CDATA[$changes['delete'][$key]]]></code>
      <code><![CDATA[$changes['replace'][$key]]]></code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
    </MixedAssignment>
    <MoreSpecificReturnType>
      <code>Collection</code>
    </MoreSpecificReturnType>
    <NullableReturnStatement>
      <code>static::fromLdap($parentDn, $ldap)</code>
    </NullableReturnStatement>
    <PossiblyNullPropertyAssignmentValue>
      <code>null</code>
      <code>null</code>
    </PossiblyNullPropertyAssignmentValue>
    <PossiblyUnusedReturnValue>
      <code>Node</code>
      <code>Node</code>
      <code>bool</code>
    </PossiblyUnusedReturnValue>
    <PropertyNotSetInConstructor>
      <code>$events</code>
      <code>$ldap</code>
      <code>$newDn</code>
    </PropertyNotSetInConstructor>
    <RedundantCastGivenDocblockType>
      <code>(bool) $delete</code>
      <code>(bool) $new</code>
    </RedundantCastGivenDocblockType>
    <RedundantConditionGivenDocblockType>
      <code>$dn instanceof Dn</code>
      <code>$dn instanceof Dn</code>
      <code><![CDATA[$this->events]]></code>
      <code><![CDATA[$this->ldap !== null]]></code>
      <code><![CDATA[$this->newDn !== null]]></code>
    </RedundantConditionGivenDocblockType>
    <RedundantPropertyInitializationCheck>
      <code><![CDATA[$this->newDn]]></code>
      <code>parent::_getDn()</code>
    </RedundantPropertyInitializationCheck>
    <UnsafeInstantiation>
      <code>new static($dn, $data, $fromDataSource, null)</code>
      <code>new static($dn, $data, true, $ldap)</code>
      <code>new static($dn, [], false, null)</code>
    </UnsafeInstantiation>
    <UnusedForeachValue>
      <code>$value</code>
    </UnusedForeachValue>
  </file>
  <file src="src/Node/AbstractNode.php">
    <MissingParamType>
      <code>$offset</code>
      <code>$offset</code>
      <code>$value</code>
    </MissingParamType>
    <MissingReturnType>
      <code>loadData</code>
    </MissingReturnType>
    <MixedArgument>
      <code><![CDATA[$this->currentData[$name]]]></code>
    </MixedArgument>
    <MixedArgumentTypeCoercion>
      <code>$name</code>
    </MixedArgumentTypeCoercion>
    <MixedAssignment>
      <code>$data[$key]</code>
      <code>$data[$name]</code>
      <code>$value</code>
      <code>$value</code>
    </MixedAssignment>
    <MixedInferredReturnType>
      <code>array</code>
    </MixedInferredReturnType>
    <MixedReturnStatement>
      <code><![CDATA[$this->getAttribute($offset, null)]]></code>
      <code><![CDATA[$this->getAttribute('objectClass', null)]]></code>
    </MixedReturnStatement>
    <UnusedForeachValue>
      <code>$value</code>
    </UnusedForeachValue>
  </file>
  <file src="src/Node/ChildrenIterator.php">
    <ImplementedReturnTypeMismatch>
      <code>ChildrenIterator|null</code>
    </ImplementedReturnTypeMismatch>
    <PossiblyUnusedMethod>
      <code>toArray</code>
    </PossiblyUnusedMethod>
  </file>
  <file src="src/Node/Collection.php">
    <ImplementedReturnTypeMismatch>
      <code>string</code>
    </ImplementedReturnTypeMismatch>
    <MethodSignatureMustProvideReturnType>
      <code>key</code>
    </MethodSignatureMustProvideReturnType>
  </file>
  <file src="src/Node/RootDse.php">
    <MixedArrayAccess>
      <code><![CDATA[$data['structuralobjectclass'][0]]]></code>
    </MixedArrayAccess>
    <MixedInferredReturnType>
      <code>array</code>
      <code>string|null</code>
    </MixedInferredReturnType>
    <MixedReturnStatement>
      <code><![CDATA[$this->getAttribute('namingContexts', null)]]></code>
      <code><![CDATA[$this->getAttribute('subschemaSubentry', 0)]]></code>
    </MixedReturnStatement>
    <PossiblyNullArgument>
      <code>$schemaDn</code>
    </PossiblyNullArgument>
    <UnsafeInstantiation>
      <code>new static($dn, $data)</code>
    </UnsafeInstantiation>
  </file>
  <file src="src/Node/RootDse/ActiveDirectory.php">
    <MixedInferredReturnType>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
    </MixedInferredReturnType>
    <MixedReturnStatement>
      <code><![CDATA[$this->getAttribute('configurationNamingContext', 0)]]></code>
      <code><![CDATA[$this->getAttribute('currentTime', 0)]]></code>
      <code><![CDATA[$this->getAttribute('defaultNamingContext', 0)]]></code>
      <code><![CDATA[$this->getAttribute('dnsHostName', 0)]]></code>
      <code><![CDATA[$this->getAttribute('domainControllerFunctionality', 0)]]></code>
      <code><![CDATA[$this->getAttribute('domainFunctionality', 0)]]></code>
      <code><![CDATA[$this->getAttribute('dsServiceName', 0)]]></code>
      <code><![CDATA[$this->getAttribute('forestFunctionality', 0)]]></code>
      <code><![CDATA[$this->getAttribute('highestCommittedUSN', 0)]]></code>
      <code><![CDATA[$this->getAttribute('isGlobalCatalogReady', 0)]]></code>
      <code><![CDATA[$this->getAttribute('isSynchronized', 0)]]></code>
      <code><![CDATA[$this->getAttribute('ldapServiceName', 0)]]></code>
      <code><![CDATA[$this->getAttribute('rootDomainNamingContext', 0)]]></code>
      <code><![CDATA[$this->getAttribute('schemaNamingContext', 0)]]></code>
      <code><![CDATA[$this->getAttribute('serverName', 0)]]></code>
    </MixedReturnStatement>
    <PossiblyNullArgument>
      <code>$schemaDn</code>
    </PossiblyNullArgument>
    <PossiblyUnusedMethod>
      <code>getConfigurationNamingContext</code>
      <code>getCurrentTime</code>
      <code>getDefaultNamingContext</code>
      <code>getDnsHostName</code>
      <code>getDomainControllerFunctionality</code>
      <code>getDomainFunctionality</code>
      <code>getDsServiceName</code>
      <code>getForestFunctionality</code>
      <code>getHighestCommittedUSN</code>
      <code>getIsGlobalCatalogReady</code>
      <code>getIsSynchronized</code>
      <code>getLDAPServiceName</code>
      <code>getRootDomainNamingContext</code>
      <code>getServerName</code>
      <code>supportsCapability</code>
      <code>supportsControl</code>
      <code>supportsPolicy</code>
    </PossiblyUnusedMethod>
  </file>
  <file src="src/Node/RootDse/OpenLdap.php">
    <MixedInferredReturnType>
      <code>string|null</code>
      <code>string|null</code>
    </MixedInferredReturnType>
    <MixedReturnStatement>
      <code><![CDATA[$this->getAttribute('configContext', 0)]]></code>
      <code><![CDATA[$this->getAttribute('monitorContext', 0)]]></code>
    </MixedReturnStatement>
    <PossiblyUnusedMethod>
      <code>getConfigContext</code>
      <code>getMonitorContext</code>
      <code>supportsControl</code>
      <code>supportsExtension</code>
      <code>supportsFeature</code>
    </PossiblyUnusedMethod>
  </file>
  <file src="src/Node/RootDse/eDirectory.php">
    <MixedInferredReturnType>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
      <code>string|null</code>
    </MixedInferredReturnType>
    <MixedReturnStatement>
      <code><![CDATA[$this->getAttribute('abandonOps', 0)]]></code>
      <code><![CDATA[$this->getAttribute('chainings', 0)]]></code>
      <code><![CDATA[$this->getAttribute('dsaName', 0)]]></code>
      <code><![CDATA[$this->getAttribute('errors', 0)]]></code>
      <code><![CDATA[$this->getAttribute('extendedOps', 0)]]></code>
      <code><![CDATA[$this->getAttribute('referralsReturned', 0)]]></code>
      <code><![CDATA[$this->getAttribute('securityErrors', 0)]]></code>
      <code><![CDATA[$this->getAttribute('vendorName', 0)]]></code>
      <code><![CDATA[$this->getAttribute('vendorVersion', 0)]]></code>
      <code><![CDATA[$this->getAttribute('wholeSubtreeSearchOps', 0)]]></code>
    </MixedReturnStatement>
    <PossiblyUnusedMethod>
      <code>getDsaName</code>
      <code>getStatisticsAbandonOps</code>
      <code>getStatisticsChainings</code>
      <code>getStatisticsErrors</code>
      <code>getStatisticsExtendedOps</code>
      <code>getStatisticsReferralsReturned</code>
      <code>getStatisticsSecurityErrors</code>
      <code>getStatisticsWholeSubtreeSearchOps</code>
      <code>getVendorName</code>
      <code>getVendorVersion</code>
      <code>supportsExtension</code>
    </PossiblyUnusedMethod>
  </file>
  <file src="src/Node/Schema.php">
    <UnsafeInstantiation>
      <code>new static($dn, $data, $ldap)</code>
    </UnsafeInstantiation>
  </file>
  <file src="src/Node/Schema/AbstractItem.php">
    <MissingParamType>
      <code>$offset</code>
      <code>$offset</code>
      <code>$value</code>
    </MissingParamType>
    <MixedArgumentTypeCoercion>
      <code>$name</code>
      <code>$offset</code>
    </MixedArgumentTypeCoercion>
    <MixedReturnStatement>
      <code><![CDATA[$this->__get($offset)]]></code>
    </MixedReturnStatement>
  </file>
  <file src="src/Node/Schema/AttributeType/ActiveDirectory.php">
    <ImplementedReturnTypeMismatch>
      <code>null</code>
      <code>null</code>
      <code>null</code>
      <code>null</code>
    </ImplementedReturnTypeMismatch>
    <MixedArrayAccess>
      <code><![CDATA[$this->ldapdisplayname[0]]]></code>
    </MixedArrayAccess>
    <MixedInferredReturnType>
      <code>string</code>
    </MixedInferredReturnType>
    <MixedReturnStatement>
      <code><![CDATA[$this->ldapdisplayname[0]]]></code>
    </MixedReturnStatement>
  </file>
  <file src="src/Node/Schema/AttributeType/OpenLdap.php">
    <MixedArgument>
      <code><![CDATA[$this->_parents]]></code>
    </MixedArgument>
    <MixedArrayAccess>
      <code><![CDATA[$this->_parents[0]]]></code>
    </MixedArrayAccess>
    <MixedAssignment>
      <code>$maxLength</code>
    </MixedAssignment>
    <MixedInferredReturnType>
      <code>OpenLdap|null</code>
      <code>bool</code>
      <code>string</code>
      <code>string</code>
      <code>string</code>
      <code>string</code>
    </MixedInferredReturnType>
    <MixedReturnStatement>
      <code><![CDATA[$this->_parents[0]]]></code>
      <code><![CDATA[$this->desc]]></code>
      <code><![CDATA[$this->name]]></code>
      <code><![CDATA[$this->oid]]></code>
      <code><![CDATA[$this->syntax]]></code>
      <code><![CDATA[$this->{'single-value'}]]></code>
    </MixedReturnStatement>
  </file>
  <file src="src/Node/Schema/ObjectClass/ActiveDirectory.php">
    <ImplementedReturnTypeMismatch>
      <code>null</code>
      <code>null</code>
      <code>null</code>
      <code>null</code>
      <code>null</code>
      <code>null</code>
    </ImplementedReturnTypeMismatch>
    <MixedArrayAccess>
      <code><![CDATA[$this->ldapdisplayname[0]]]></code>
    </MixedArrayAccess>
    <MixedInferredReturnType>
      <code>string</code>
    </MixedInferredReturnType>
    <MixedReturnStatement>
      <code><![CDATA[$this->ldapdisplayname[0]]]></code>
    </MixedReturnStatement>
  </file>
  <file src="src/Node/Schema/ObjectClass/OpenLdap.php">
    <DocblockTypeContradiction>
      <code><![CDATA[$this->inheritedMay === null]]></code>
      <code><![CDATA[$this->inheritedMust === null]]></code>
    </DocblockTypeContradiction>
    <MixedArgument>
      <code>$may</code>
      <code>$may</code>
      <code>$must</code>
      <code>$must</code>
      <code><![CDATA[$p->getMayContain()]]></code>
      <code><![CDATA[$p->getMustContain()]]></code>
    </MixedArgument>
    <MixedAssignment>
      <code>$may</code>
      <code>$must</code>
      <code>$p</code>
    </MixedAssignment>
    <MixedInferredReturnType>
      <code>array</code>
      <code>array</code>
      <code>string</code>
      <code>string</code>
      <code>string</code>
    </MixedInferredReturnType>
    <MixedMethodCall>
      <code>getMayContain</code>
      <code>getMustContain</code>
    </MixedMethodCall>
    <MixedReturnStatement>
      <code><![CDATA[$this->_parents]]></code>
      <code><![CDATA[$this->desc]]></code>
      <code><![CDATA[$this->name]]></code>
      <code><![CDATA[$this->oid]]></code>
      <code><![CDATA[$this->sup]]></code>
    </MixedReturnStatement>
    <PropertyNotSetInConstructor>
      <code>$inheritedMay</code>
      <code>$inheritedMust</code>
    </PropertyNotSetInConstructor>
  </file>
  <file src="src/Node/Schema/OpenLdap.php">
    <MissingReturnType>
      <code>ensureNameAttribute</code>
      <code>resolveInheritance</code>
    </MissingReturnType>
    <MixedArgument>
      <code><![CDATA[$attributeType['syntax']]]></code>
      <code>$data[$token]</code>
      <code>$parent</code>
      <code>$tmp</code>
      <code><![CDATA[$val->sup]]></code>
      <code><![CDATA[$val->sup]]></code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>array_shift($tokens)</code>
    </MixedArgument>
    <MixedArrayAssignment>
      <code>$data[$token][]</code>
    </MixedArrayAssignment>
    <MixedArrayOffset>
      <code><![CDATA[$this->attributeTypes[$alias]]]></code>
      <code><![CDATA[$this->ldapSyntaxes[$val['oid']]]]></code>
      <code><![CDATA[$this->matchingRuleUse[$val['name']]]]></code>
      <code><![CDATA[$this->matchingRules[$val['name']]]]></code>
      <code><![CDATA[$this->objectClasses[$alias]]]></code>
    </MixedArrayOffset>
    <MixedAssignment>
      <code>$alias</code>
      <code>$alias</code>
      <code><![CDATA[$attributeType['oid']]]></code>
      <code>$data[$token]</code>
      <code>$data[$token]</code>
      <code>$data[$token][]</code>
      <code><![CDATA[$data['_parents'][]]]></code>
      <code><![CDATA[$data['name']]]></code>
      <code><![CDATA[$data['name']]]></code>
      <code><![CDATA[$ldapSyntax['oid']]]></code>
      <code><![CDATA[$matchingRuleUse['oid']]]></code>
      <code><![CDATA[$matchingRule['oid']]]></code>
      <code><![CDATA[$objectClass['oid']]]></code>
      <code>$parent</code>
      <code>$tmp</code>
      <code>$tmp</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
    </MixedAssignment>
    <PossiblyInvalidArrayOffset>
      <code>$tokens[count($tokens) - 1]</code>
    </PossiblyInvalidArrayOffset>
    <PossiblyUnusedMethod>
      <code>getLdapSyntaxes</code>
      <code>getMatchingRuleUse</code>
      <code>getMatchingRules</code>
    </PossiblyUnusedMethod>
  </file>
  <file src="test/AbstractOnlineTestCase.php">
    <MissingReturnType>
      <code>cleanupLDAPServer</code>
    </MissingReturnType>
    <PossiblyFalseOperand>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
    </PossiblyFalseOperand>
    <UnusedForeachValue>
      <code>$entry</code>
    </UnusedForeachValue>
    <UnusedFunctionCall>
      <code>ldap_add</code>
      <code>ldap_delete</code>
    </UnusedFunctionCall>
  </file>
  <file src="test/AttributeTest.php">
    <InvalidArgument>
      <code>$object</code>
      <code>$stream</code>
      <code>$ts</code>
      <code><![CDATA['index']]></code>
      <code>3.1415</code>
      <code>false</code>
      <code>true</code>
    </InvalidArgument>
    <MixedArgument>
      <code><![CDATA[$data['ts']]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][1]]]></code>
      <code><![CDATA[$data['ts'][1]]]></code>
    </MixedArgument>
    <MixedArrayAccess>
      <code><![CDATA[$data['file'][0]]]></code>
      <code><![CDATA[$data['object'][0]]]></code>
      <code><![CDATA[$data['p2_false'][0]]]></code>
      <code><![CDATA[$data['p2_true'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][0]]]></code>
      <code><![CDATA[$data['ts'][1]]]></code>
      <code><![CDATA[$data['ts'][1]]]></code>
    </MixedArrayAccess>
    <MixedAssignment>
      <code>$password</code>
      <code>$password</code>
      <code>$password</code>
      <code>$password</code>
      <code>$value</code>
      <code>$value</code>
      <code>$value</code>
    </MixedAssignment>
    <PossiblyFalseArgument>
      <code><![CDATA[strpos($md5, '}')]]></code>
      <code><![CDATA[strpos($sha, '}')]]></code>
      <code><![CDATA[strpos($smd5, '}')]]></code>
      <code><![CDATA[strpos($ssha, '}')]]></code>
    </PossiblyFalseArgument>
    <PossiblyInvalidArgument>
      <code>$utcTimestamp</code>
    </PossiblyInvalidArgument>
    <PossiblyInvalidArrayAccess>
      <code>$retTs[0]</code>
      <code>$retTs[1]</code>
    </PossiblyInvalidArrayAccess>
  </file>
  <file src="test/BindTest.php">
    <InvalidArrayOffset>
      <code><![CDATA[$options['accountDomainName']]]></code>
    </InvalidArrayOffset>
    <InvalidPropertyAssignmentValue>
      <code><![CDATA[$this->options]]></code>
      <code><![CDATA[$this->options]]></code>
    </InvalidPropertyAssignmentValue>
    <MissingReturnType>
      <code>testAnonymousBind</code>
      <code>testBindWithEmptyPassword</code>
      <code>testBindWithNullPassword</code>
      <code>testBindWithoutDnUsernameAndDnRequired</code>
      <code>testBoundUserIsFalseIfNotBoundToLDAP</code>
      <code>testBoundUserIsReturnedAfterBinding</code>
      <code>testConnectBind</code>
      <code>testEmptyOptionsBind</code>
      <code>testExplicitParamsBind</code>
      <code>testNoBaseDnBind</code>
      <code>testNoDomainNameBind</code>
      <code>testPlainBind</code>
      <code>testRequiresDnBind</code>
      <code>testRequiresDnWithoutDnBind</code>
      <code>testResourceIsAlwaysReturned</code>
      <code>testSaslBind</code>
      <code>testSaslBindNoExplicitUsername</code>
    </MissingReturnType>
    <PossiblyFalsePropertyAssignmentValue>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_PRINCIPAL_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
    </PossiblyFalsePropertyAssignmentValue>
    <PossiblyUnusedProperty>
      <code>$bindRequiresDn</code>
    </PossiblyUnusedProperty>
    <PropertyTypeCoercion>
      <code><![CDATA[$this->options]]></code>
      <code><![CDATA[$this->options]]></code>
      <code><![CDATA[$this->options]]></code>
      <code><![CDATA[$this->options]]></code>
      <code><![CDATA[$this->options]]></code>
      <code><![CDATA[[
            'host'     => getenv('TESTS_LAMINAS_LDAP_HOST'),
            'username' => getenv('TESTS_LAMINAS_LDAP_USERNAME'),
            'password' => getenv('TESTS_LAMINAS_LDAP_PASSWORD'),
            'baseDn'   => getenv('TESTS_LAMINAS_LDAP_BASE_DN'),
        ]]]></code>
    </PropertyTypeCoercion>
  </file>
  <file src="test/CanonTest.php">
    <MissingReturnType>
      <code>testAccountCanonization</code>
      <code>testDefaultAccountFilterFormat</code>
      <code>testDnCanon</code>
      <code>testGetUnavailableCanoncialForm</code>
      <code>testGetUnknownCanonicalForm</code>
      <code>testInvalidAccountCanon</code>
      <code>testInvalidAccountName</code>
      <code>testMismatchDomainBind</code>
      <code>testPlainCanon</code>
      <code>testPossibleAuthority</code>
      <code>testSpecialCharacterInUsername</code>
      <code>testSplittingOption</code>
    </MissingReturnType>
    <MixedArgument>
      <code>$form</code>
      <code>$name</code>
    </MixedArgument>
    <MixedArrayAccess>
      <code>$names[$form]</code>
    </MixedArrayAccess>
    <MixedArrayOffset>
      <code>$names[$form]</code>
    </MixedArrayOffset>
    <MixedAssignment>
      <code>$form</code>
      <code>$name</code>
    </MixedAssignment>
    <PossiblyFalseArgument>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
    </PossiblyFalseArgument>
    <PossiblyFalseOperand>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ACCOUNT_DOMAIN_NAME_SHORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
    </PossiblyFalseOperand>
    <PossiblyUndefinedVariable>
      <code>$names</code>
      <code>$names</code>
      <code>$names</code>
    </PossiblyUndefinedVariable>
    <UnusedVariable>
      <code>$canon</code>
      <code>$canon</code>
      <code>$canon</code>
      <code>$canon</code>
      <code>$canon</code>
      <code>$canon</code>
      <code>$canon</code>
      <code>$canon</code>
      <code>$canon</code>
      <code>$canon</code>
      <code>$canon</code>
    </UnusedVariable>
  </file>
  <file src="test/ChangePasswordTest.php">
    <ArgumentTypeCoercion>
      <code><![CDATA['Laminas\Ldap']]></code>
    </ArgumentTypeCoercion>
    <InvalidArgument>
      <code>512</code>
      <code>512</code>
    </InvalidArgument>
    <MissingReturnType>
      <code>testAddNewUserWithPasswordActiveDirectory</code>
      <code>testAddNewUserWithPasswordOpenLDAP</code>
      <code>testChangePasswordWithUserAccountActiveDirectory</code>
      <code>testChangePasswordWithUserAccountOpenLDAP</code>
    </MissingReturnType>
    <UndefinedClass>
      <code><![CDATA['Laminas\Ldap']]></code>
    </UndefinedClass>
  </file>
  <file src="test/ConnectTest.php">
    <PossiblyFalseArgument>
      <code>$host</code>
    </PossiblyFalseArgument>
    <PossiblyFalseOperand>
      <code>$host</code>
      <code>$host</code>
    </PossiblyFalseOperand>
    <PossiblyInvalidArgument>
      <code>$port</code>
      <code>$port</code>
      <code>$useSsl</code>
    </PossiblyInvalidArgument>
    <PropertyTypeCoercion>
      <code><![CDATA[$this->options]]></code>
      <code><![CDATA[$this->options]]></code>
      <code><![CDATA[[
            'host'     => getenv('TESTS_LAMINAS_LDAP_HOST'),
            'username' => getenv('TESTS_LAMINAS_LDAP_USERNAME'),
            'password' => getenv('TESTS_LAMINAS_LDAP_PASSWORD'),
            'baseDn'   => getenv('TESTS_LAMINAS_LDAP_BASE_DN'),
        ]]]></code>
    </PropertyTypeCoercion>
  </file>
  <file src="test/Converter/ConverterTest.php">
    <MissingReturnType>
      <code>testFromLdapDateTimeThrowsException</code>
    </MissingReturnType>
    <MixedArgument>
      <code>$convert</code>
      <code><![CDATA[$convert['type']]]></code>
      <code>$value</code>
      <code>$value</code>
    </MixedArgument>
    <PossiblyInvalidArgument>
      <code><![CDATA[$convert['date']]]></code>
      <code>testToLdap</code>
    </PossiblyInvalidArgument>
  </file>
  <file src="test/CopyRenameTest.php">
    <MissingReturnType>
      <code>testRecursiveCopy</code>
      <code>testRecursiveCopyToSubtree</code>
      <code>testRecursiveCopyToSubtreeWithDnObjects</code>
      <code>testRecursiveCopyWithDnObjects</code>
      <code>testRecursiveMoveToSubtree</code>
      <code>testRecursiveMoveToSubtreeWithDnObjects</code>
      <code>testRecursiveRename</code>
      <code>testRecursiveRenameWithDnObjects</code>
      <code>testRenameEmulationSourceNotExists</code>
      <code>testRenameEmulationTargetExists</code>
      <code>testRenameEmulationTargetParentNotExists</code>
      <code>testRenameSourceNotExists</code>
      <code>testRenameTargetExists</code>
      <code>testRenameTargetParentNotExists</code>
      <code>testSimpleLeafCopy</code>
      <code>testSimpleLeafCopyToSubtree</code>
      <code>testSimpleLeafCopyToSubtreeWithDnObjects</code>
      <code>testSimpleLeafCopyWithDnObjects</code>
      <code>testSimpleLeafMoveAlias</code>
      <code>testSimpleLeafMoveToSubtree</code>
      <code>testSimpleLeafMoveToSubtreeWithDnObjects</code>
      <code>testSimpleLeafRename</code>
      <code>testSimpleLeafRenameEmulation</code>
      <code>testSimpleLeafRenameEmulationWithDnObjects</code>
      <code>testSimpleLeafRenameWithDnObjects</code>
    </MissingReturnType>
    <UnusedFunctionCall>
      <code>ldap_add</code>
    </UnusedFunctionCall>
  </file>
  <file src="test/CrudTest.php">
    <MissingReturnType>
      <code>testAddAndDelete</code>
      <code>testAddObjectClass</code>
      <code>testAddWithDnObject</code>
      <code>testAddingEntryThatHasMultipleValuesOnRdnAttribute</code>
      <code>testAddingEntryWithMissingRdnAttribute</code>
      <code>testAddingEntryWithMissingRdnAttributeValue</code>
      <code>testDeleteRecursively</code>
      <code>testIllegalAdd</code>
      <code>testIllegalDelete</code>
      <code>testIllegalUpdate</code>
      <code>testPrepareLDAPEntryArray</code>
      <code>testPrepareLDAPEntryArrayArrayData</code>
      <code>testPrepareLDAPEntryArrayObjectData</code>
      <code>testRemoveObjectClass</code>
      <code>testSave</code>
      <code>testSaveWithDnObject</code>
      <code>testUpdate</code>
      <code>testUpdateWithDnObject</code>
      <code>testUpdatingEntryWithAttributeThatIsAnRdnAttribute</code>
      <code>testUpdatingEntryWithRdnAttributeValueMissingInData</code>
      <code>testZeroValueMakesItThroughSanitationProcess</code>
    </MissingReturnType>
    <MixedArgument>
      <code><![CDATA[$entry['objectclass']]]></code>
      <code><![CDATA[$entry['objectclass']]]></code>
      <code><![CDATA[$entry['objectclass']]]></code>
      <code><![CDATA[$entry['objectclass']]]></code>
      <code><![CDATA[$entry['ou']]]></code>
    </MixedArgument>
    <MixedArrayAccess>
      <code><![CDATA[$entry['associateddomain'][0]]]></code>
      <code><![CDATA[$entry['l'][0]]]></code>
      <code><![CDATA[$entry['l'][0]]]></code>
      <code><![CDATA[$entry['l'][0]]]></code>
      <code><![CDATA[$entry['l'][0]]]></code>
      <code><![CDATA[$entry['l'][0]]]></code>
      <code><![CDATA[$entry['l'][0]]]></code>
    </MixedArrayAccess>
    <MixedArrayAssignment>
      <code><![CDATA[$entry['associatedDomain'][]]]></code>
      <code><![CDATA[$entry['objectclass'][]]]></code>
      <code><![CDATA[$entry['objectclass'][]]]></code>
    </MixedArrayAssignment>
    <UnusedVariable>
      <code>$entry</code>
    </UnusedVariable>
  </file>
  <file src="test/Dn/CreationTest.php">
    <InvalidArgument>
      <code>1</code>
    </InvalidArgument>
    <MissingReturnType>
      <code>testDnCreation</code>
      <code>testDnCreationWithDifferentCaseFoldings</code>
      <code>testEmptyStringDn</code>
      <code>testGetParentDn</code>
      <code>testGetRdn</code>
    </MissingReturnType>
    <NullArgument>
      <code>null</code>
    </NullArgument>
  </file>
  <file src="test/Dn/EscapingTest.php">
    <MissingReturnType>
      <code>testEscapeValues</code>
      <code>testUnescapeValues</code>
    </MissingReturnType>
  </file>
  <file src="test/Dn/ExplodingTest.php">
    <UnusedVariable>
      <code>$dnArray</code>
    </UnusedVariable>
  </file>
  <file src="test/Dn/ImplodingTest.php">
    <MissingReturnType>
      <code>testDnWithMultiValuedRdnRoundTrip</code>
      <code>testImplodeDn</code>
      <code>testImplodeDnWithUtf8Characters</code>
      <code>testImplodeRdn</code>
      <code>testImplodeRdnCaseFold</code>
      <code>testImplodeRdnInvalidOne</code>
      <code>testImplodeRdnInvalidThree</code>
      <code>testImplodeRdnMultiValuedRdn</code>
      <code>testImplodeRdnMultiValuedRdn2</code>
      <code>testImplodeRdnMultiValuedRdnCaseFold</code>
    </MissingReturnType>
  </file>
  <file src="test/Dn/MiscTest.php">
    <MissingReturnType>
      <code>testIsChildOf</code>
      <code>testIsChildOfIllegalBothDn</code>
      <code>testIsChildOfIllegalDn1</code>
      <code>testIsChildOfIllegalDn2</code>
      <code>testIsChildOfOtherSubtree</code>
      <code>testIsChildOfParentDnLonger</code>
      <code>testIsChildOfWithDnObjects</code>
    </MissingReturnType>
  </file>
  <file src="test/Dn/ModificationTest.php">
    <InvalidArgument>
      <code><![CDATA['string']]></code>
    </InvalidArgument>
    <MissingReturnType>
      <code>testArrayAccessImplementation</code>
      <code>testDnManipulationAppendAndPrepend</code>
      <code>testDnManipulationGet</code>
      <code>testDnManipulationInsert</code>
      <code>testDnManipulationRemove</code>
      <code>testDnManipulationSet</code>
    </MissingReturnType>
  </file>
  <file src="test/ErrorHandlerTest.php">
    <MissingClosureParamType>
      <code>$errno</code>
      <code>$error</code>
    </MissingClosureParamType>
    <MixedArgumentTypeCoercion>
      <code><![CDATA[$this->dummyErrorHandler]]></code>
      <code><![CDATA[$this->dummyErrorHandler]]></code>
      <code><![CDATA[$this->dummyErrorHandler]]></code>
      <code><![CDATA[$this->dummyErrorHandler]]></code>
    </MixedArgumentTypeCoercion>
    <UnusedClosureParam>
      <code>$errno</code>
      <code>$error</code>
    </UnusedClosureParam>
  </file>
  <file src="test/Exception/LdapExceptionTest.php">
    <MissingReturnType>
      <code>testException</code>
    </MissingReturnType>
  </file>
  <file src="test/FilterTest.php">
    <MissingReturnType>
      <code>testChaining</code>
      <code>testComplexFilter</code>
      <code>testEscapeValues</code>
      <code>testFilterCreation</code>
      <code>testFilterEscapeBasicOperation</code>
      <code>testFilterValueUtf8</code>
      <code>testGroupingFilter</code>
      <code>testIllegalGroupingFilter</code>
      <code>testNegate</code>
      <code>testRealFilterString</code>
      <code>testToStringImplementation</code>
      <code>testUnescapeValues</code>
    </MissingReturnType>
    <UnusedVariable>
      <code>$f</code>
    </UnusedVariable>
  </file>
  <file src="test/Ldif/SimpleDecoderTest.php">
    <MissingReturnType>
      <code>testDecodeSimpleSingleItem</code>
      <code>testDecodeSimpleSingleItemWithMultilineComment</code>
      <code>testDecodeSimpleSingleItemWithUri</code>
      <code>testDecodeSingleItemWithBase64Attributes</code>
      <code>testDecodeSingleItemWithFoldedAttribute</code>
      <code>testDecodeSingleItemWithFoldedAttributesAndEmptyLinesBetween</code>
      <code>testDecodeSingleItemWithFoldedBase64Attribute</code>
      <code>testDecodeStringContainingBase64EncodedValue</code>
      <code>testDecodeStringContainingEntriesWithUtf8EncodedAttributeValues</code>
      <code>testDecodeStringContainingEntryWithFoldedAttributeValue</code>
      <code>testDecodeTwoItems</code>
      <code>testRoundtripEncoding</code>
    </MissingReturnType>
    <MixedArrayAccess>
      <code><![CDATA[$actual[0]['description']]]></code>
      <code><![CDATA[$actual[0]['description'][0]]]></code>
      <code><![CDATA[$actual[0]['dn']]]></code>
      <code><![CDATA[$actual[0]['objectclass']]]></code>
      <code><![CDATA[$actual[0]['ou']]]></code>
      <code><![CDATA[$actual[0]['ou'][0]]]></code>
      <code><![CDATA[$actual[0]['ou;lang-en']]]></code>
      <code><![CDATA[$actual[0]['ou;lang-en'][0]]]></code>
      <code><![CDATA[$actual[0]['ou;lang-ja']]]></code>
      <code><![CDATA[$actual[0]['ou;lang-ja'][0]]]></code>
      <code><![CDATA[$actual[0]['ou;lang-ja;phonetic']]]></code>
      <code><![CDATA[$actual[0]['ou;lang-ja;phonetic'][0]]]></code>
      <code><![CDATA[$actual[1]['cn']]]></code>
      <code><![CDATA[$actual[1]['cn'][0]]]></code>
      <code><![CDATA[$actual[1]['cn;lang-en']]]></code>
      <code><![CDATA[$actual[1]['cn;lang-en'][0]]]></code>
      <code><![CDATA[$actual[1]['cn;lang-ja']]]></code>
      <code><![CDATA[$actual[1]['cn;lang-ja'][0]]]></code>
      <code><![CDATA[$actual[1]['cn;lang-ja;phonetic']]]></code>
      <code><![CDATA[$actual[1]['cn;lang-ja;phonetic'][0]]]></code>
      <code><![CDATA[$actual[1]['dn']]]></code>
      <code><![CDATA[$actual[1]['givenname']]]></code>
      <code><![CDATA[$actual[1]['givenname'][0]]]></code>
      <code><![CDATA[$actual[1]['givenname;lang-en']]]></code>
      <code><![CDATA[$actual[1]['givenname;lang-en'][0]]]></code>
      <code><![CDATA[$actual[1]['givenname;lang-ja']]]></code>
      <code><![CDATA[$actual[1]['givenname;lang-ja'][0]]]></code>
      <code><![CDATA[$actual[1]['givenname;lang-ja;phonetic']]]></code>
      <code><![CDATA[$actual[1]['givenname;lang-ja;phonetic'][0]]]></code>
      <code><![CDATA[$actual[1]['mail']]]></code>
      <code><![CDATA[$actual[1]['mail'][0]]]></code>
      <code><![CDATA[$actual[1]['objectclass']]]></code>
      <code><![CDATA[$actual[1]['preferredlanguage']]]></code>
      <code><![CDATA[$actual[1]['preferredlanguage'][0]]]></code>
      <code><![CDATA[$actual[1]['sn']]]></code>
      <code><![CDATA[$actual[1]['sn'][0]]]></code>
      <code><![CDATA[$actual[1]['sn;lang-en']]]></code>
      <code><![CDATA[$actual[1]['sn;lang-en'][0]]]></code>
      <code><![CDATA[$actual[1]['sn;lang-ja']]]></code>
      <code><![CDATA[$actual[1]['sn;lang-ja'][0]]]></code>
      <code><![CDATA[$actual[1]['sn;lang-ja;phonetic']]]></code>
      <code><![CDATA[$actual[1]['sn;lang-ja;phonetic'][0]]]></code>
      <code><![CDATA[$actual[1]['title']]]></code>
      <code><![CDATA[$actual[1]['title'][0]]]></code>
      <code><![CDATA[$actual[1]['title;lang-en']]]></code>
      <code><![CDATA[$actual[1]['title;lang-en'][0]]]></code>
      <code><![CDATA[$actual[1]['title;lang-ja']]]></code>
      <code><![CDATA[$actual[1]['title;lang-ja'][0]]]></code>
      <code><![CDATA[$actual[1]['title;lang-ja;phonetic']]]></code>
      <code><![CDATA[$actual[1]['title;lang-ja;phonetic'][0]]]></code>
      <code><![CDATA[$actual[1]['uid']]]></code>
      <code><![CDATA[$actual[1]['uid'][0]]]></code>
      <code><![CDATA[$actual[1]['userpassword']]]></code>
      <code><![CDATA[$actual[1]['userpassword'][0]]]></code>
    </MixedArrayAccess>
  </file>
  <file src="test/Node/AttributeIterationTest.php">
    <MissingReturnType>
      <code>testSimpleIteration</code>
    </MissingReturnType>
    <MixedAssignment>
      <code>$data[$k]</code>
      <code>$v</code>
    </MixedAssignment>
    <RedundantConditionGivenDocblockType>
      <code>assertNotNull</code>
    </RedundantConditionGivenDocblockType>
  </file>
  <file src="test/Node/ChildrenIterationTest.php">
    <MissingReturnType>
      <code>testCallingNextAfterIterationShouldNotThrowException</code>
      <code>testSimpleIteration</code>
      <code>testSimpleRecursiveIteration</code>
    </MissingReturnType>
    <MixedArgument>
      <code><![CDATA[$n->getRdnArray()]]></code>
    </MixedArgument>
    <MixedAssignment>
      <code>$dn</code>
      <code>$n</code>
      <code>$rdn</code>
    </MixedAssignment>
    <MixedMethodCall>
      <code>getDn</code>
      <code>getRdnArray</code>
      <code>toString</code>
    </MixedMethodCall>
    <PossiblyFalseArgument>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
    </PossiblyFalseArgument>
    <UnusedForeachValue>
      <code>$n</code>
    </UnusedForeachValue>
    <UnusedVariable>
      <code>$rdn</code>
      <code>$rdn</code>
      <code>$rdn</code>
    </UnusedVariable>
  </file>
  <file src="test/Node/ChildrenTest.php">
    <MissingReturnType>
      <code>testCascadingAttachAndDetach</code>
      <code>testChildrenCollectionSerialization</code>
      <code>testGetChildrenOnAttachedNode</code>
      <code>testGetChildrenOnDetachedNode</code>
      <code>testHasChildrenOnAttachedNode</code>
      <code>testHasChildrenOnDetachedNodeWithPriorGetChildren</code>
      <code>testHasChildrenOnDetachedNodeWithoutPriorGetChildren</code>
    </MissingReturnType>
    <MixedArgument>
      <code>$children2</code>
      <code>$children2</code>
    </MixedArgument>
    <MixedAssignment>
      <code>$children2</code>
      <code>$children2</code>
      <code>$node2</code>
      <code>$node2</code>
    </MixedAssignment>
    <MixedMethodCall>
      <code>attachLDAP</code>
      <code>attachLDAP</code>
      <code>getChildren</code>
      <code>getChildren</code>
      <code>hasChildren</code>
      <code>hasChildren</code>
      <code>hasChildren</code>
      <code>hasChildren</code>
    </MixedMethodCall>
    <PossiblyFalseArgument>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
    </PossiblyFalseArgument>
    <PossiblyNullReference>
      <code>detachLDAP</code>
      <code>detachLDAP</code>
      <code>detachLDAP</code>
      <code>detachLDAP</code>
      <code>getChildren</code>
      <code>getChildren</code>
      <code>getChildren</code>
      <code>getChildren</code>
      <code>getChildren</code>
      <code>hasChildren</code>
      <code>hasChildren</code>
      <code>hasChildren</code>
      <code>hasChildren</code>
      <code>hasChildren</code>
    </PossiblyNullReference>
  </file>
  <file src="test/Node/OfflineTest.php">
    <MissingReturnType>
      <code>testAppendToAttributeFirstTime</code>
      <code>testArrayAccess</code>
      <code>testAttributeAccessDnGet</code>
      <code>testCreateEmptyNode</code>
      <code>testCreateFromArrayAndEnsureRdnValues</code>
      <code>testCreateFromArrayIllegalDn</code>
      <code>testCreateFromArrayMalformedDn</code>
      <code>testCreateFromArrayMissingDn</code>
      <code>testCreateFromArrayObjectDn</code>
      <code>testCreateFromArrayStringDn</code>
      <code>testDeleteUnusedAttribute</code>
      <code>testDnObjectCloning</code>
      <code>testExistsAttribute</code>
      <code>testGetAttributes</code>
      <code>testGetChangedData</code>
      <code>testGetChanges</code>
      <code>testGetData</code>
      <code>testGetDnArray</code>
      <code>testGetDnObject</code>
      <code>testGetDnString</code>
      <code>testGetObjectClass</code>
      <code>testGetRdnArray</code>
      <code>testGetRdnString</code>
      <code>testGetSetAndDeleteMethods</code>
      <code>testHasValue</code>
      <code>testIllegalAttributeAccessDnSet</code>
      <code>testIllegalAttributeAccessRdnAttributeSet</code>
      <code>testModifyObjectClass</code>
      <code>testOverloading</code>
      <code>testRdnAttributesHandleMultiValuedAttribute</code>
      <code>testRdnAttributesHandleMultiValuedAttribute2</code>
      <code>testRdnAttributesHandleMultiValuedAttribute3</code>
      <code>testRemoveDuplicates</code>
      <code>testRemoveFromAttributeArray</code>
      <code>testRemoveFromAttributeMultipleArray</code>
      <code>testRemoveFromAttributeMultipleSimple</code>
      <code>testRemoveFromAttributeSimple</code>
      <code>testRenameNodeArray</code>
      <code>testRenameNodeDnObject</code>
      <code>testRenameNodeFromDataSource</code>
      <code>testRenameNodeString</code>
      <code>testSerialize</code>
      <code>testToArray</code>
      <code>testToJson</code>
      <code>testToString</code>
    </MissingReturnType>
    <MixedArgument>
      <code><![CDATA[$data['dn']]]></code>
      <code><![CDATA[$data['dn']]]></code>
      <code><![CDATA[$data['dn']]]></code>
      <code><![CDATA[$node->getAttribute('key')]]></code>
      <code><![CDATA[$node->getAttribute('key')]]></code>
      <code><![CDATA[$node->getAttribute('userPassword')]]></code>
      <code><![CDATA[$node->key]]></code>
      <code><![CDATA[$node['key']]]></code>
    </MixedArgument>
    <MixedArrayAccess>
      <code><![CDATA[$node->cn[0]]]></code>
      <code><![CDATA[$node->host[3]]]></code>
      <code><![CDATA[$node->key[0]]]></code>
      <code><![CDATA[$node['key'][0]]]></code>
    </MixedArrayAccess>
    <MixedAssignment>
      <code>$cn</code>
      <code>$cn</code>
      <code>$newObject</code>
    </MixedAssignment>
    <PossiblyInvalidArgument>
      <code>$utcTimestamp</code>
    </PossiblyInvalidArgument>
    <UnusedVariable>
      <code>$node</code>
      <code>$node</code>
      <code>$node</code>
    </UnusedVariable>
  </file>
  <file src="test/Node/OnlineTest.php">
    <InvalidArgument>
      <code>ExceptionInterface::class</code>
      <code>ExceptionInterface::class</code>
      <code>ExceptionInterface::class</code>
      <code>ExceptionInterface::class</code>
      <code>[]</code>
      <code>[]</code>
      <code>[]</code>
    </InvalidArgument>
    <InvalidArrayOffset>
      <code>$dns[$i]</code>
    </InvalidArrayOffset>
    <InvalidCatch>
      <code><![CDATA[try {
            $node->appendToAttribute('createTimestamp', 'value');
            $this->fail('Expected exception for modification of read-only attribute createTimestamp');
        } catch (ExceptionInterface $e) {
            $this->assertEquals('Cannot change attribute because it\'s read-only', $e->getMessage());
        }]]></code>
      <code><![CDATA[try {
            $node->createTimestamp = false;
            $this->fail('Expected exception for modification of read-only attribute createTimestamp');
        } catch (ExceptionInterface $e) {
            $this->assertEquals('Cannot change attribute because it\'s read-only', $e->getMessage());
        }]]></code>
      <code><![CDATA[try {
            $node->setAttribute('createTimestamp', false);
            $this->fail('Expected exception for modification of read-only attribute createTimestamp');
        } catch (ExceptionInterface $e) {
            $this->assertEquals('Cannot change attribute because it\'s read-only', $e->getMessage());
        }]]></code>
      <code><![CDATA[try {
            $node['createTimestamp'] = false;
            $this->fail('Expected exception for modification of read-only attribute createTimestamp');
        } catch (ExceptionInterface $e) {
            $this->assertEquals('Cannot change attribute because it\'s read-only', $e->getMessage());
        }]]></code>
      <code><![CDATA[try {
            $rdn  = $node->getRdnArray(Ldap\Dn::ATTR_CASEFOLD_LOWER);
            $attr = key($rdn);
            $node->deleteAttribute($attr);
            $this->fail('Expected exception for modification of read-only attribute ' . $attr);
        } catch (ExceptionInterface $e) {
            $this->assertEquals('Cannot change attribute because it\'s part of the RDN', $e->getMessage());
        }]]></code>
    </InvalidCatch>
    <MissingReturnType>
      <code>testAttachToInvalidLDAP</code>
      <code>testAttachToValidLDAP</code>
      <code>testChangeReadOnlySystemAttributes</code>
      <code>testCountChildren</code>
      <code>testCountSubtree</code>
      <code>testDetachAndReattach</code>
      <code>testExistsDn</code>
      <code>testGetBaseNode</code>
      <code>testGetIllegalNode</code>
      <code>testGetNode</code>
      <code>testGetNonexistentParent</code>
      <code>testGetParent</code>
      <code>testLoadFromLDAP</code>
      <code>testLoadFromLDAPIllegalEntry</code>
      <code>testLoadFromLDAPWithDnObject</code>
      <code>testReload</code>
      <code>testSearchChildren</code>
      <code>testSearchSubtree</code>
      <code>testSerialize</code>
    </MissingReturnType>
    <MixedArgumentTypeCoercion>
      <code>$attr</code>
    </MixedArgumentTypeCoercion>
    <MixedArrayAccess>
      <code><![CDATA[$node->ou[0]]]></code>
      <code><![CDATA[$node->ou[0]]]></code>
    </MixedArrayAccess>
    <MixedAssignment>
      <code>$newObject</code>
    </MixedAssignment>
    <MixedMethodCall>
      <code>isAttached</code>
    </MixedMethodCall>
    <PossiblyFalseArgument>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
    </PossiblyFalseArgument>
    <PossiblyNullReference>
      <code>countChildren</code>
      <code>countChildren</code>
      <code>countSubtree</code>
      <code>exists</code>
      <code>getDn</code>
      <code>getParent</code>
      <code>getParent</code>
      <code>isAttached</code>
      <code>reload</code>
      <code>searchChildren</code>
      <code>searchChildren</code>
      <code>searchSubtree</code>
    </PossiblyNullReference>
    <TooManyArguments>
      <code>searchChildren</code>
      <code>searchChildren</code>
      <code>searchSubtree</code>
    </TooManyArguments>
    <UnusedVariable>
      <code>$node</code>
      <code>$node</code>
      <code>$pnode</code>
    </UnusedVariable>
  </file>
  <file src="test/Node/RootDseTest.php">
    <MissingReturnType>
      <code>testGetters</code>
      <code>testLoadRootDseNode</code>
      <code>testOffsetSetWillThrowException</code>
      <code>testOffsetUnsetWillThrowException</code>
      <code>testSetterWillThrowException</code>
      <code>testSupportCheckMethods</code>
      <code>testUnsetterWillThrowException</code>
    </MissingReturnType>
    <UndefinedMethod>
      <code>getConfigContext</code>
      <code>getConfigurationNamingContext</code>
      <code>getCurrentTime</code>
      <code>getDefaultNamingContext</code>
      <code>getDnsHostName</code>
      <code>getDomainControllerFunctionality</code>
      <code>getDomainFunctionality</code>
      <code>getDsServiceName</code>
      <code>getDsaName</code>
      <code>getForestFunctionality</code>
      <code>getHighestCommittedUSN</code>
      <code>getIsGlobalCatalogReady</code>
      <code>getIsSynchronized</code>
      <code>getLDAPServiceName</code>
      <code>getMonitorContext</code>
      <code>getRootDomainNamingContext</code>
      <code>getSchemaNamingContext</code>
      <code>getServerName</code>
      <code>getStatisticsAbandonOps</code>
      <code>getStatisticsChainings</code>
      <code>getStatisticsErrors</code>
      <code>getStatisticsExtendedOps</code>
      <code>getStatisticsReferralsReturned</code>
      <code>getStatisticsSecurityErrors</code>
      <code>getStatisticsWholeSubtreeSearchOps</code>
      <code>getVendorName</code>
      <code>getVendorVersion</code>
      <code>supportsCapability</code>
      <code>supportsCapability</code>
      <code>supportsControl</code>
      <code>supportsControl</code>
      <code>supportsControl</code>
      <code>supportsControl</code>
      <code>supportsExtension</code>
      <code>supportsExtension</code>
      <code>supportsExtension</code>
      <code>supportsExtension</code>
      <code>supportsFeature</code>
      <code>supportsFeature</code>
      <code>supportsPolicy</code>
      <code>supportsPolicy</code>
    </UndefinedMethod>
  </file>
  <file src="test/Node/SchemaTest.php">
    <MissingReturnType>
      <code>testActiveDirectorySchema</code>
      <code>testGetters</code>
      <code>testOffsetSetWillThrowException</code>
      <code>testOffsetUnsetWillThrowException</code>
      <code>testOpenLDAPSchema</code>
      <code>testOpenLDAPSchemaAttributeTypeAliases</code>
      <code>testOpenLDAPSchemaAttributeTypeInheritance</code>
      <code>testOpenLDAPSchemaObjectClassAliases</code>
      <code>testOpenLDAPSchemaObjectClassInheritance</code>
      <code>testSchemaNode</code>
      <code>testSetterWillThrowException</code>
      <code>testUnsetterWillThrowException</code>
      <code>testeDirectorySchema</code>
    </MissingReturnType>
    <MixedArrayAccess>
      <code><![CDATA[$ou->_parents[0]]]></code>
      <code><![CDATA[$ou->_parents[0]]]></code>
    </MixedArrayAccess>
    <MixedAssignment>
      <code>$ca</code>
      <code>$ca2</code>
      <code>$cn</code>
      <code>$name</code>
      <code>$ob1</code>
      <code>$ob1</code>
      <code>$ob2</code>
      <code>$ob2</code>
      <code>$ou</code>
      <code>$schemaUn</code>
    </MixedAssignment>
    <MixedMethodCall>
      <code>getMaxLength</code>
      <code>getMaxLength</code>
      <code>getMayContain</code>
      <code>getMayContain</code>
      <code>getMustContain</code>
      <code>getMustContain</code>
      <code>getOid</code>
      <code>getOid</code>
      <code>getOid</code>
      <code>getOid</code>
      <code>getSyntax</code>
      <code>getSyntax</code>
    </MixedMethodCall>
    <MixedPropertyFetch>
      <code><![CDATA[$ca->may]]></code>
      <code><![CDATA[$ca->must]]></code>
      <code><![CDATA[$ca->sup]]></code>
      <code><![CDATA[$ca2->may]]></code>
      <code><![CDATA[$ca2->must]]></code>
      <code><![CDATA[$ca2->sup]]></code>
      <code><![CDATA[$cn->equality]]></code>
      <code><![CDATA[$cn->ordering]]></code>
      <code><![CDATA[$cn->substr]]></code>
      <code><![CDATA[$cn->sup]]></code>
      <code><![CDATA[$cn->syntax]]></code>
      <code><![CDATA[$cn->{'max-length'}]]></code>
      <code><![CDATA[$name->equality]]></code>
      <code><![CDATA[$name->ordering]]></code>
      <code><![CDATA[$name->substr]]></code>
      <code><![CDATA[$name->sup]]></code>
      <code><![CDATA[$name->syntax]]></code>
      <code><![CDATA[$name->{'max-length'}]]></code>
    </MixedPropertyFetch>
    <UndefinedMethod>
      <code>getLDAPSyntaxes</code>
      <code>getMatchingRuleUse</code>
      <code>getMatchingRules</code>
    </UndefinedMethod>
    <UnusedVariable>
      <code>$attributeTypes</code>
      <code>$objectClasses</code>
    </UnusedVariable>
  </file>
  <file src="test/Node/UpdateTest.php">
    <MissingReturnType>
      <code>testAddDeletedNode</code>
      <code>testAddNewNode</code>
      <code>testModifyDeletedNode</code>
      <code>testMoveDeletedExistingNode</code>
      <code>testMoveDeletedNewNode</code>
      <code>testMoveExistingNode</code>
      <code>testMoveNewNode</code>
      <code>testMoveNode</code>
      <code>testSimpleUpdateOneValue</code>
    </MissingReturnType>
    <MixedArgument>
      <code><![CDATA[$entry['objectclass']]]></code>
      <code><![CDATA[$entry['objectclass']]]></code>
    </MixedArgument>
    <MixedArrayAccess>
      <code><![CDATA[$entry['objectclass'][0]]]></code>
    </MixedArrayAccess>
    <PossiblyNullPropertyAssignment>
      <code>$node1</code>
      <code>$node1</code>
    </PossiblyNullPropertyAssignment>
    <PossiblyNullReference>
      <code>move</code>
      <code>rename</code>
      <code>setDn</code>
      <code>setDn</code>
      <code>setDn</code>
      <code>update</code>
    </PossiblyNullReference>
  </file>
  <file src="test/OfflineReconnectTest.php">
    <PossiblyNullReference>
      <code>enable</code>
      <code>enable</code>
      <code>enable</code>
    </PossiblyNullReference>
  </file>
  <file src="test/OfflineTest.php">
    <MissingReturnType>
      <code>testAddingAttributes</code>
      <code>testAddingAttributesFails</code>
      <code>testRemovingAttributesFails</code>
      <code>testUpdatingAttributes</code>
      <code>testUpdatingAttributesFails</code>
    </MissingReturnType>
  </file>
  <file src="test/ReconnectTest.php">
    <InvalidArgument>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_PORT')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_PORT')]]></code>
    </InvalidArgument>
    <InvalidReturnStatement>
      <code>$options</code>
    </InvalidReturnStatement>
    <InvalidReturnType>
      <code><![CDATA[non-empty-array<string, string>]]></code>
    </InvalidReturnType>
    <MixedArrayAccess>
      <code><![CDATA[$entry['l'][0]]]></code>
      <code><![CDATA[$entry['uid'][0]]]></code>
      <code><![CDATA[$entry['uid'][0]]]></code>
      <code><![CDATA[$entry['uid'][0]]]></code>
    </MixedArrayAccess>
    <MixedAssignment>
      <code><![CDATA[$options['port']]]></code>
    </MixedAssignment>
    <MixedOperand>
      <code><![CDATA[$options['port']]]></code>
    </MixedOperand>
    <PossiblyFalseArgument>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_HOST')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_HOST')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_SCRIPTS_PORT')]]></code>
    </PossiblyFalseArgument>
    <PossiblyFalseOperand>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_ALT_USERNAME')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_BASE_DN')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_BASE_DN')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_BASE_DN')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_BASE_DN')]]></code>
    </PossiblyFalseOperand>
  </file>
  <file src="test/SearchTest.php">
    <DocblockTypeContradiction>
      <code>assertNull</code>
    </DocblockTypeContradiction>
    <MissingReturnType>
      <code>testAttributeNameTreatmentCustomFunction</code>
      <code>testAttributeNameTreatmentCustomInstanceMethod</code>
      <code>testAttributeNameTreatmentCustomStaticMethod</code>
      <code>testAttributeNameTreatmentNative</code>
      <code>testAttributeNameTreatmentToLower</code>
      <code>testAttributeNameTreatmentToUpper</code>
      <code>testCallingCurrentOnCollectionReturnsFirstElement</code>
      <code>testCallingCurrentOnEmptyCollectionReturnsNull</code>
      <code>testCallingCurrentOnEmptyIteratorReturnsNull</code>
      <code>testCallingCurrentOnIteratorReturnsFirstElement</code>
      <code>testCallingNextAfterIterationShouldNotThrowException</code>
      <code>testCollectionClassNotSubclassingLaminasLDAPCollectionThrowsException</code>
      <code>testCountBase</code>
      <code>testCountChildren</code>
      <code>testCountChildrenWithDnObject</code>
      <code>testCountOne</code>
      <code>testCountSub</code>
      <code>testCountSubWithDnObjectAndFilterObject</code>
      <code>testExistsDn</code>
      <code>testExistsDnWithDnObject</code>
      <code>testGetSingleEntry</code>
      <code>testGetSingleEntryWithDnObject</code>
      <code>testGetSingleIllegalEntry</code>
      <code>testGetSingleIllegalEntryWithException</code>
      <code>testIllegalSearch</code>
      <code>testInnerIteratorIsOfRequiredType</code>
      <code>testMultipleResultIteration</code>
      <code>testResultIteration</code>
      <code>testResultIterationAfterCallingCurrent</code>
      <code>testReverseSortingWithSearchEntriesShortcut</code>
      <code>testReverseSortingWithSearchEntriesShortcutWithOptionsArray</code>
      <code>testSearchEntriesShortcut</code>
      <code>testSearchEntriesShortcutWithDnObjectAndFilterObject</code>
      <code>testSearchEntriesShortcutWithOptionsArray</code>
      <code>testSearchNoResult</code>
      <code>testSearchNothingGetFirst</code>
      <code>testSearchNothingIteration</code>
      <code>testSearchNothingToArray</code>
      <code>testSearchWithDnObjectAndFilterObject</code>
      <code>testSearchWithOptionsArray</code>
      <code>testSorting</code>
      <code>testUnknownCollectionClassThrowsException</code>
      <code>testUserIsAutomaticallyBoundOnOperationInDisconnectedState</code>
      <code>testUserIsAutomaticallyBoundOnOperationInUnboundState</code>
    </MissingReturnType>
    <MixedArgument>
      <code><![CDATA[$entry['ou']]]></code>
      <code><![CDATA[$entry['ou']]]></code>
    </MixedArgument>
    <MixedArrayAccess>
      <code><![CDATA[$item['l']]]></code>
      <code><![CDATA[$item['l']]]></code>
      <code><![CDATA[$item['l'][0]]]></code>
      <code><![CDATA[$item['l'][0]]]></code>
      <code><![CDATA[$item['l'][0]]]></code>
    </MixedArrayAccess>
    <MixedArrayTypeCoercion>
      <code>$lSorted[$key]</code>
      <code>$lSorted[$key]</code>
    </MixedArrayTypeCoercion>
    <MixedAssignment>
      <code>$item</code>
      <code>$item</code>
    </MixedAssignment>
    <PossiblyFalseArgument>
      <code>$dn2</code>
      <code>$dn2</code>
      <code>$dn2</code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
    </PossiblyFalseArgument>
    <RedundantConditionGivenDocblockType>
      <code>assertIsArray</code>
      <code>assertIsArray</code>
    </RedundantConditionGivenDocblockType>
    <UnusedForeachValue>
      <code>$item</code>
      <code>$item</code>
      <code>$item</code>
      <code>$item</code>
      <code>$item</code>
      <code>$item</code>
      <code>$item</code>
      <code>$item</code>
      <code>$item</code>
      <code>$item</code>
      <code>$item</code>
    </UnusedForeachValue>
    <UnusedVariable>
      <code>$entry</code>
      <code>$items</code>
      <code>$items</code>
      <code>$items</code>
      <code>$key</code>
      <code>$key</code>
      <code>$key</code>
    </UnusedVariable>
  </file>
  <file src="test/SortTest.php">
    <MissingClosureParamType>
      <code>$a</code>
      <code>$a</code>
      <code>$b</code>
      <code>$b</code>
    </MissingClosureParamType>
    <MissingReturnType>
      <code>testCustomSorting</code>
      <code>testSettingCallable</code>
      <code>testSorting</code>
    </MissingReturnType>
    <MixedArgument>
      <code>$a</code>
      <code>$a</code>
      <code>$b</code>
      <code>$b</code>
    </MixedArgument>
    <MixedArrayAccess>
      <code>$reflectionEntries[$index]</code>
      <code><![CDATA[$reflectionEntries[$index]["sortValue"]]]></code>
      <code><![CDATA[$value['sortValue']]]></code>
    </MixedArrayAccess>
    <MixedAssignment>
      <code>$actual[]</code>
      <code>$reflectionEntries</code>
      <code>$reflectionEntries</code>
      <code>$value</code>
    </MixedAssignment>
    <PossiblyFalseArgument>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_WRITEABLE_SUBTREE')]]></code>
    </PossiblyFalseArgument>
    <PossiblyInvalidArgument>
      <code>$search</code>
      <code>$search</code>
      <code>$search</code>
    </PossiblyInvalidArgument>
    <UnusedClosureParam>
      <code>$a</code>
      <code>$b</code>
    </UnusedClosureParam>
  </file>
  <file src="test/TestAsset/BuiltinFunctionMocks.php">
    <MissingReturnType>
      <code>createMocks</code>
    </MissingReturnType>
  </file>
  <file src="test/TestAsset/CustomNaming.php">
    <PossiblyUnusedReturnValue>
      <code>string</code>
      <code>string</code>
    </PossiblyUnusedReturnValue>
  </file>
  <file src="test/bootstrap.php">
    <PossiblyFalseArgument>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_SASL_CERTIFICATE')]]></code>
      <code><![CDATA[getenv('TESTS_LAMINAS_LDAP_SASL_KEY')]]></code>
    </PossiblyFalseArgument>
  </file>
</files>
