$methodsByBaseName = [];
$notFounded = [];
foreach ($seleniumCommands as $methodFullName => $returnType) {
    // Create model of available method
    $method = models\Method::createNew();
    $method->name = $methodFullName;
    $method->type = models\Method::determineTypeByName($methodFullName);
    $method->subtype = models\Method::determineSubtypeByName($methodFullName);
    $method->returnValue = models\ReturnValue::createNew();
    $method->returnValue->type = $returnType;
    // Search of description in manual/parsed docs
    $documentedMethod = null;
    if (array_key_exists($methodFullName, $manualMethodsDescription)) {
        $documentedMethod = $manualMethodsDescription[$methodFullName];
    } elseif ($foundMethod = $parser->getMethodByBaseName($method->getBaseName(true))) {
        $documentedMethod = $generator->createNewMethodWithName($foundMethod, $method->name);
        // convert to target method
        $documentedMethod->returnValue->type = $returnType;
        // selenium documentation has no info about php variable type
    }
    if ($documentedMethod) {
        $methodsByBaseName[$method->getBaseName()][] = $documentedMethod;
    } else {
        $notFounded[$method->getBaseName()][] = $method->name;
    }
}
// Add "see also" cross links (between methods of same group)
foreach ($methodsByBaseName as $methodBaseName => $methodsGroup) {
    $seeLinks = [];
    foreach ($methodsGroup as $method) {
        $linkDescription = '';