// Path: hierarchyviewer/src/main/java/com/polidea/hierarchyviewer/internal/logic/ConvertersContainer.java
// public class ConvertersContainer {
// 
//     private final HashMap<Class<? extends View>, ViewConverter> viewConverters;
// 
//     private final HashMap<Class<? extends ViewGroup.LayoutParams>, LayoutParamsConverter> layoutPramsConverter;
// 
//     public ConvertersContainer() {
//         viewConverters = new HashMap<>();
//         layoutPramsConverter = new HashMap<>();
//         initViewConverters();
//         initLayoutParamsConverters();
//     }
// 
//     public void addConverterForView(Class<? extends View> clazz, ModelInfo modelInfo) {
//         viewConverters.put(clazz, new DefaultConverter(modelInfo));
//     }
// 
//     public LayoutParamsModelInfo getLayoutParamsModelInfo(Class<? extends ViewGroup.LayoutParams> clazz) {
//         LayoutParamsConverter converter;
//         Class clazzKey = clazz;
//         do {
//             converter = layoutPramsConverter.get(clazzKey);
//             if (converter == null) {
//                 clazzKey = clazzKey.getSuperclass();
//                 if (clazzKey == null) {
//                     throw new IllegalArgumentException("Shouldn't happens");
//                 }
//             }
//         } while (converter == null);
// 
//         return converter.getLayoutParamsModelInfo();
//     }
// 
//     public ModelInfo getModelInfoForClass(Class<? extends View> clazz) {
//         ViewConverter converter;
//         Class clazzKey = clazz;
//         do {
//             converter = viewConverters.get(clazzKey);
//             if (converter == null) {
//                 clazzKey = clazzKey.getSuperclass();
//                 if (clazzKey == null) {
//                     throw new IllegalArgumentException("Shouldn't happens");
//                 }
//             }
//         } while (converter == null);
// 
//         return converter.getModelInfo();
//     }
// 
//     private void initLayoutParamsConverters() {
//         SystemLayoutParamsConverter[] systemLayoutParamsConverters = SystemLayoutParamsConverter.values();
//         for (SystemLayoutParamsConverter systemLayoutParamsConverter : systemLayoutParamsConverters) {
//             layoutPramsConverter.put(systemLayoutParamsConverter.clazz, systemLayoutParamsConverter);
//         }
//     }
// 
//     private void initViewConverters() {
//         SystemViewConverter[] systemViewConverters = SystemViewConverter.values();
//         for (SystemViewConverter systemViewConverter : systemViewConverters) {
//             viewConverters.put(systemViewConverter.clazz, systemViewConverter);
//         }
//     }
// }
// 
// Path: hierarchyviewer/src/main/java/com/polidea/hierarchyviewer/internal/model/layoutparams/LayoutParamsModelInfo.java
// public interface LayoutParamsModelInfo {
// 
//     void setDataFromLayoutParams(ViewGroup.LayoutParams viewGroupLayoutParams);
// }


import android.content.res.Resources;
import android.graphics.Rect;
import android.util.Log;
import android.util.Pair;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.WindowManager;
import android.widget.LinearLayout;
import com.google.gson.annotations.SerializedName;
import com.polidea.hierarchyviewer.internal.logic.ConvertersContainer;
import com.polidea.hierarchyviewer.internal.model.layoutparams.LayoutParamsModelInfo;
import java.lang.reflect.Field;
import java.util.UUID;
    String idResName;

    @SerializedName(Metadata.GENERATE_ID)
    long generateId;

    @SerializedName(Metadata.ENABLED)
    boolean enabled;

    @SerializedName(Metadata.VISIBILITY)
    Visibility visibility;

    @SerializedName(Metadata.X)
    float x;

    @SerializedName(Metadata.Y)
    float y;

    @SerializedName(Metadata.WIDTH)
    float width;

    @SerializedName(Metadata.HEIGHT)
    float height;

    @SerializedName(Metadata.PATH_TO_FILE)
    String pathToFile;

    @SerializedName(Metadata.ALPHA)
    float alpha;

    @SerializedName(Metadata.LAYOUT_PARAM)
// Path: hierarchyviewer/src/main/java/com/polidea/hierarchyviewer/internal/logic/ConvertersContainer.java
// public class ConvertersContainer {
// 
//     private final HashMap<Class<? extends View>, ViewConverter> viewConverters;
// 
//     private final HashMap<Class<? extends ViewGroup.LayoutParams>, LayoutParamsConverter> layoutPramsConverter;
// 
//     public ConvertersContainer() {
//         viewConverters = new HashMap<>();
//         layoutPramsConverter = new HashMap<>();
//         initViewConverters();
//         initLayoutParamsConverters();
//     }
// 
//     public void addConverterForView(Class<? extends View> clazz, ModelInfo modelInfo) {
//         viewConverters.put(clazz, new DefaultConverter(modelInfo));
//     }
// 
//     public LayoutParamsModelInfo getLayoutParamsModelInfo(Class<? extends ViewGroup.LayoutParams> clazz) {
//         LayoutParamsConverter converter;
//         Class clazzKey = clazz;
//         do {
//             converter = layoutPramsConverter.get(clazzKey);
//             if (converter == null) {
//                 clazzKey = clazzKey.getSuperclass();
//                 if (clazzKey == null) {
//                     throw new IllegalArgumentException("Shouldn't happens");
//                 }
//             }
//         } while (converter == null);
// 
//         return converter.getLayoutParamsModelInfo();
//     }
// 
//     public ModelInfo getModelInfoForClass(Class<? extends View> clazz) {
//         ViewConverter converter;
//         Class clazzKey = clazz;
//         do {
//             converter = viewConverters.get(clazzKey);
//             if (converter == null) {
//                 clazzKey = clazzKey.getSuperclass();
//                 if (clazzKey == null) {
//                     throw new IllegalArgumentException("Shouldn't happens");
//                 }
//             }
//         } while (converter == null);
// 
//         return converter.getModelInfo();
//     }
// 
//     private void initLayoutParamsConverters() {
//         SystemLayoutParamsConverter[] systemLayoutParamsConverters = SystemLayoutParamsConverter.values();
//         for (SystemLayoutParamsConverter systemLayoutParamsConverter : systemLayoutParamsConverters) {
//             layoutPramsConverter.put(systemLayoutParamsConverter.clazz, systemLayoutParamsConverter);
//         }
//     }
// 
//     private void initViewConverters() {
//         SystemViewConverter[] systemViewConverters = SystemViewConverter.values();
//         for (SystemViewConverter systemViewConverter : systemViewConverters) {
//             viewConverters.put(systemViewConverter.clazz, systemViewConverter);
//         }
//     }
// }
// 
// Path: hierarchyviewer/src/main/java/com/polidea/hierarchyviewer/internal/model/layoutparams/LayoutParamsModelInfo.java
// public interface LayoutParamsModelInfo {
// 
//     void setDataFromLayoutParams(ViewGroup.LayoutParams viewGroupLayoutParams);
// }


// Path: hierarchyviewer/src/main/java/com/polidea/hierarchyviewer/internal/model/view/ViewModelInfo.java
import android.content.res.Resources;
import android.graphics.Rect;
import android.util.Log;
import android.util.Pair;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.WindowManager;
import android.widget.LinearLayout;
import com.google.gson.annotations.SerializedName;
import com.polidea.hierarchyviewer.internal.logic.ConvertersContainer;
import com.polidea.hierarchyviewer.internal.model.layoutparams.LayoutParamsModelInfo;
import java.lang.reflect.Field;
import java.util.UUID;

    String idResName;

    @SerializedName(Metadata.GENERATE_ID)
    long generateId;

    @SerializedName(Metadata.ENABLED)
    boolean enabled;

    @SerializedName(Metadata.VISIBILITY)
    Visibility visibility;

    @SerializedName(Metadata.X)
    float x;

    @SerializedName(Metadata.Y)
    float y;

    @SerializedName(Metadata.WIDTH)
    float width;

    @SerializedName(Metadata.HEIGHT)
    float height;

    @SerializedName(Metadata.PATH_TO_FILE)
    String pathToFile;

    @SerializedName(Metadata.ALPHA)
    float alpha;

    @SerializedName(Metadata.LAYOUT_PARAM)
    LayoutParamsModelInfo layoutParamModelInfo;