// 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/view/TextViewModelInfo.java
// public class TextViewModelInfo extends ViewModelInfo {
//     interface Metadata {
//         String TEXT = "text";
//     }
// 
//     @SerializedName(Metadata.TEXT)
//     String text;
// 
//     @Override
//     public void setDataFromView(View view, ConvertersContainer convertersContainer) {
//         super.setDataFromView(view, convertersContainer);
//         TextView textView = (TextView) view;
//         text = textView.getText().toString();
//     }
// }


import android.view.View;
import com.google.gson.annotations.SerializedName;
import com.polidea.hierarchyviewer.internal.logic.ConvertersContainer;
import com.polidea.hierarchyviewer.internal.model.view.TextViewModelInfo;
package com.polidea.hierarchyviewerdemo;


public class MyTextViewModelInfo extends TextViewModelInfo {

    @SerializedName("my_custom_item_value")
    String myCustomItem;

    @Override
    public void setDataFromView(View view, ConvertersContainer convertersContainer) {
        super.setDataFromView(view, convertersContainer);
// 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/view/TextViewModelInfo.java
// public class TextViewModelInfo extends ViewModelInfo {
//     interface Metadata {
//         String TEXT = "text";
//     }
// 
//     @SerializedName(Metadata.TEXT)
//     String text;
// 
//     @Override
//     public void setDataFromView(View view, ConvertersContainer convertersContainer) {
//         super.setDataFromView(view, convertersContainer);
//         TextView textView = (TextView) view;
//         text = textView.getText().toString();
//     }
// }


// Path: example/src/main/java/com/polidea/hierarchyviewerdemo/MyTextViewModelInfo.java
import android.view.View;
import com.google.gson.annotations.SerializedName;
import com.polidea.hierarchyviewer.internal.logic.ConvertersContainer;
import com.polidea.hierarchyviewer.internal.model.view.TextViewModelInfo;

package com.polidea.hierarchyviewerdemo;


public class MyTextViewModelInfo extends TextViewModelInfo {

    @SerializedName("my_custom_item_value")
    String myCustomItem;

    @Override
    public void setDataFromView(View view, ConvertersContainer convertersContainer) {
        super.setDataFromView(view, convertersContainer);
        myCustomItem = ((MyTextView) view).getSupperHint();