// Path: src/main/java/ru/colibri/ui/core/contexts/TestContext.java
// @Component
// @Getter
// @Setter
// public class TestContext {
//     private String currentPageName;
//     private Map<String, String> context = new HashMap<>();
// }
// 
// Path: src/main/java/ru/colibri/ui/core/pages/AbsPageProvider.java
// @ToString
// public abstract class AbsPageProvider implements IPageProvider {
// 
//     @Autowired
//     protected AppiumDriver driver;
// 
//     protected HashMap<String, IPage> pagesByName;
//     protected HashMap<String, IPage> pagesByID;
// 
//     public AbsPageProvider() {
//         pagesByName = new HashMap<>();
//         pagesByID = new HashMap<>();
//     }
// 
//     public void addPageObject(IPage pageObject) throws PageNameAlreadyUsedException {
//         String systemId = pageObject.getSystemId().toLowerCase();
//         if (!systemId.isEmpty() && pagesByID.containsKey(systemId)) {
//             throw new PageNameAlreadyUsedException(systemId);
//         }
//         String name = pageObject.getName().toLowerCase();
//         if (!name.isEmpty() && pagesByName.containsKey(name)) {
//             throw new PageNameAlreadyUsedException(name);
//         }
//         pagesByName.put(name, pageObject);
//         pagesByID.put(systemId, pageObject);
//     }
// 
//     public IPage getPageByName(String pageName) {
//         return getIPage(pagesByName, pageName);
//     }
// 
//     public IPage getPageById(String pageId) {
//         return getIPage(pagesByID, pageId);
//     }
// 
//     private IPage getIPage(HashMap<String, IPage> pages, String pageName) {
//         IPage result = pages.get(pageName.toLowerCase());
//         if (result == null) {
//             throw new NoPageFoundException(pageName);
//         }
//         return result;
//     }
// 
//     @Override
//     public void addPagesObject(List<IPage> pages) {
//         pages.forEach(this::addPageObject);
//     }
// }
// 
// Path: src/main/java/ru/colibri/ui/core/pages/IPage.java
// public interface IPage {
//     String getName();
// 
//     String getSystemId();
// 
//     List<IElement> getSpecificElements();
// 
//     IElement getElementByName(String name);
// 
//     void addElement(IElement element);
// }


import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import ru.colibri.ui.core.contexts.TestContext;
import ru.colibri.ui.core.pages.AbsPageProvider;
import ru.colibri.ui.core.pages.IPage;
package ru.colibri.ui.settings.ios;


@Log
@Component
@Qualifier("ios")
public class IOSPageProvider extends AbsPageProvider {
    @Autowired
    private TestContext testContext;

// Path: src/main/java/ru/colibri/ui/core/contexts/TestContext.java
// @Component
// @Getter
// @Setter
// public class TestContext {
//     private String currentPageName;
//     private Map<String, String> context = new HashMap<>();
// }
// 
// Path: src/main/java/ru/colibri/ui/core/pages/AbsPageProvider.java
// @ToString
// public abstract class AbsPageProvider implements IPageProvider {
// 
//     @Autowired
//     protected AppiumDriver driver;
// 
//     protected HashMap<String, IPage> pagesByName;
//     protected HashMap<String, IPage> pagesByID;
// 
//     public AbsPageProvider() {
//         pagesByName = new HashMap<>();
//         pagesByID = new HashMap<>();
//     }
// 
//     public void addPageObject(IPage pageObject) throws PageNameAlreadyUsedException {
//         String systemId = pageObject.getSystemId().toLowerCase();
//         if (!systemId.isEmpty() && pagesByID.containsKey(systemId)) {
//             throw new PageNameAlreadyUsedException(systemId);
//         }
//         String name = pageObject.getName().toLowerCase();
//         if (!name.isEmpty() && pagesByName.containsKey(name)) {
//             throw new PageNameAlreadyUsedException(name);
//         }
//         pagesByName.put(name, pageObject);
//         pagesByID.put(systemId, pageObject);
//     }
// 
//     public IPage getPageByName(String pageName) {
//         return getIPage(pagesByName, pageName);
//     }
// 
//     public IPage getPageById(String pageId) {
//         return getIPage(pagesByID, pageId);
//     }
// 
//     private IPage getIPage(HashMap<String, IPage> pages, String pageName) {
//         IPage result = pages.get(pageName.toLowerCase());
//         if (result == null) {
//             throw new NoPageFoundException(pageName);
//         }
//         return result;
//     }
// 
//     @Override
//     public void addPagesObject(List<IPage> pages) {
//         pages.forEach(this::addPageObject);
//     }
// }
// 
// Path: src/main/java/ru/colibri/ui/core/pages/IPage.java
// public interface IPage {
//     String getName();
// 
//     String getSystemId();
// 
//     List<IElement> getSpecificElements();
// 
//     IElement getElementByName(String name);
// 
//     void addElement(IElement element);
// }


// Path: src/main/java/ru/colibri/ui/settings/ios/IOSPageProvider.java
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import ru.colibri.ui.core.contexts.TestContext;
import ru.colibri.ui.core.pages.AbsPageProvider;
import ru.colibri.ui.core.pages.IPage;

package ru.colibri.ui.settings.ios;


@Log
@Component
@Qualifier("ios")
public class IOSPageProvider extends AbsPageProvider {
    @Autowired
    private TestContext testContext;

    @Override