// Path: uikit-library/src/main/java/android/utils/Preconditions.java
// public final class Preconditions {
//     private Preconditions() {
//     }
// 
//     public static <T> T checkNotNull(T reference) {
//         if (reference == null) {
//             throw new NullPointerException();
//         }
//         return reference;
//     }
// 
//     public static <T> T checkNotNull(T reference, @Nullable Object errorMessage) {
//         if (reference == null) {
//             throw new NullPointerException(String.valueOf(errorMessage));
//         }
//         return reference;
//     }
// 
//     public static boolean isNull(Object obj) {
//         return obj == null;
//     }
// 
//     public static boolean nonNull(Object obj) {
//         return obj != null;
//     }
// 
// }
// 
// Path: uikit-library/src/main/java/android/utils/AndroidAttrs.java
// public static final List<String> ANDROID_LAYOUT_TAG = Collections.unmodifiableList(new ArrayList<String>() {
//     {
//         add(FrameLayout.class.getSimpleName());
//         add(LinearLayout.class.getSimpleName());
//         add(RelativeLayout.class.getSimpleName());
//     }
// });


import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.utils.Preconditions;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Stack;
import static android.utils.AndroidAttrs.ANDROID_LAYOUT_TAG;

    private static final HashMap<String, Constructor<? extends View>> sConstructorMap =
            new HashMap<String, Constructor<? extends View>>();
    static final Class<?>[] mConstructorSignature = new Class[]{
            Context.class, AttributeSet.class};
    static final Object[] sConstructorArgs = new Object[2];


    @Override
    public View onCreateView(String name, Context context, AttributeSet attrs) {
        return super.onCreateView(name, context, attrs);
    }

    @Override
    public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
        if (!enterContentView && Preconditions.nonNull(parent) && parent.getId() == android.R.id.content) {
            enterContentView = true;
        }
        if (enterContentView) {
            View view = onCreateUIKitView(parent, name, context, attrs, mViewBlockManager);

            if (view != null) return view;
        }
        return super.onCreateView(parent, name, context, attrs);
    }

    static View onCreateUIKitView(View parent, String name, Context context, AttributeSet attrs,
                                  final ViewBlockManager mViewBlockManager) {
        View view = null;

// Path: uikit-library/src/main/java/android/utils/Preconditions.java
// public final class Preconditions {
//     private Preconditions() {
//     }
// 
//     public static <T> T checkNotNull(T reference) {
//         if (reference == null) {
//             throw new NullPointerException();
//         }
//         return reference;
//     }
// 
//     public static <T> T checkNotNull(T reference, @Nullable Object errorMessage) {
//         if (reference == null) {
//             throw new NullPointerException(String.valueOf(errorMessage));
//         }
//         return reference;
//     }
// 
//     public static boolean isNull(Object obj) {
//         return obj == null;
//     }
// 
//     public static boolean nonNull(Object obj) {
//         return obj != null;
//     }
// 
// }
// 
// Path: uikit-library/src/main/java/android/utils/AndroidAttrs.java
// public static final List<String> ANDROID_LAYOUT_TAG = Collections.unmodifiableList(new ArrayList<String>() {
//     {
//         add(FrameLayout.class.getSimpleName());
//         add(LinearLayout.class.getSimpleName());
//         add(RelativeLayout.class.getSimpleName());
//     }
// });


// Path: uikit-library/src/main/java/android/uikit/UIKitActivity.java
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.utils.Preconditions;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Stack;
import static android.utils.AndroidAttrs.ANDROID_LAYOUT_TAG;


    private static final HashMap<String, Constructor<? extends View>> sConstructorMap =
            new HashMap<String, Constructor<? extends View>>();
    static final Class<?>[] mConstructorSignature = new Class[]{
            Context.class, AttributeSet.class};
    static final Object[] sConstructorArgs = new Object[2];


    @Override
    public View onCreateView(String name, Context context, AttributeSet attrs) {
        return super.onCreateView(name, context, attrs);
    }

    @Override
    public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
        if (!enterContentView && Preconditions.nonNull(parent) && parent.getId() == android.R.id.content) {
            enterContentView = true;
        }
        if (enterContentView) {
            View view = onCreateUIKitView(parent, name, context, attrs, mViewBlockManager);

            if (view != null) return view;
        }
        return super.onCreateView(parent, name, context, attrs);
    }

    static View onCreateUIKitView(View parent, String name, Context context, AttributeSet attrs,
                                  final ViewBlockManager mViewBlockManager) {
        View view = null;

        if (ANDROID_LAYOUT_TAG.contains(name)) {