DO NOT MERGE: Merge commit '3b2b22f181a0de40a226d6672d159225fe263686'
from nyc-support-25.4-dev to stage-aosp-master.

Bug: 62846313
Test: build
Change-Id: Ibfcdc70369a4f24ed1142af6873e6dddf79f4296
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index a4645bc..3e9e37b 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -3,5 +3,6 @@
   <component name="VcsDirectoryMappings">
     <mapping directory="" vcs="Git" />
     <mapping directory="$PROJECT_DIR$/../../external/doclava" vcs="Git" />
+    <mapping directory="$PROJECT_DIR$/../../external/jdiff" vcs="Git" />
   </component>
 </project>
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d34ea7e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,69 @@
+# AOSP Support Library Contribution Guide
+## Accepted Types of Contributions
+* Bug fixes (needs a corresponding bug report in b.android.com)
+* Each bug fix is expected to come with tests
+* Fixing spelling errors
+* Updating documentation
+* Adding new tests to the area that is not currently covered by tests
+
+We **are not** currently accepting new modules, features, or behavior changes.
+
+## Checking Out the Code
+**NOTE: You will need to use Linux or Mac OS. Building under Windows is not currently supported.**
+
+Follow the [“Downloading the Source”](https://source.android.com/source/downloading.html) guide to install and set up `repo` tool, but instead of running the listed `repo` commands to initialize the repository, run the folowing:
+
+    repo init -u https://android.googlesource.com/platform/manifest -b ub-supportlib-master
+
+Now your repository is set to pull only what you need for building and running support library. Download the code (and grab a coffee while we pull down 7GB):
+
+    repo sync -j8 -c
+
+You will use this command to sync your checkout in the future - it’s similar to `git fetch`
+
+
+## Using Android Studio
+Open `path/to/checkout/frameworks/support/` in Android Studio. Now you're ready edit, run, and test!
+
+If you get “Unregistered VCS root detected” click “Add root” to enable git integration for Android Studio.
+
+If you see any warnings (red underlines) run `Build > Clean Project`.
+
+## Optional - Full Build
+You can do most of your work from Android Studio, however you can also build the full support library from command line:
+
+    cd path/to/checkout/frameworks/support/
+    ./gradlew createArchive
+
+## Running Tests
+
+### Single Test Class or Method
+1. Open the desired test file in Android Studio.
+2. Right-click on a test class or @Test method name and select `Run FooBarTest`
+
+### Full Test Package
+1. In the project side panel open the desired module.
+2. Find the directory with the tests
+3. Right-click on the directory and select `Run android.support.foobar`
+
+## Running Sample Apps
+Support library has a set of Android applications that exercise support library code. These applications can be useful when you want to debug a real running application, or reproduce a problem interactively, before writing test code.
+
+These applications are named support-\*-demos (e.g. support-4v-demos or support-leanback-demos. You can run them by clicking `Run > Run ...` and choosing the desired application.
+
+## Making a change
+    cd path/to/checkout/frameworks/support/
+    repo start my_branch_name .
+    (make needed modifications)
+    git commit -a
+    repo upload --current-branch .
+
+If you see the following prompt, choose `always`:
+
+    Run hook scripts from https://android.googlesource.com/platform/manifest (yes/always/NO)?
+
+## Getting reviewed
+* After you run repo upload, open [r.android.com](http://r.android.com)
+* Sign in into your account (or create one if you do not have one yet)
+* Add an appropriate reviewer (use git log to find who did most modifications on the file you are fixing)
+
diff --git a/api/25.4.0-SNAPSHOT.txt b/api/25.4.0-SNAPSHOT.txt
deleted file mode 100644
index 30642f1..0000000
--- a/api/25.4.0-SNAPSHOT.txt
+++ /dev/null
@@ -1,11332 +0,0 @@
-package android.support.animation {
-
-  public abstract class DynamicAnimation<T extends android.support.animation.DynamicAnimation<T>> {
-    method public T addEndListener(android.support.animation.DynamicAnimation.OnAnimationEndListener);
-    method public T addUpdateListener(android.support.animation.DynamicAnimation.OnAnimationUpdateListener);
-    method public void cancel();
-    method public float getMinimumVisibleChange();
-    method public boolean isRunning();
-    method public void removeEndListener(android.support.animation.DynamicAnimation.OnAnimationEndListener);
-    method public void removeUpdateListener(android.support.animation.DynamicAnimation.OnAnimationUpdateListener);
-    method public T setMaxValue(float);
-    method public T setMinValue(float);
-    method public T setMinimumVisibleChange(float);
-    method public T setStartValue(float);
-    method public T setStartVelocity(float);
-    method public void start();
-    field public static final android.support.animation.DynamicAnimation.ViewProperty ALPHA;
-    field public static final float MIN_VISIBLE_CHANGE_ALPHA = 0.00390625f;
-    field public static final float MIN_VISIBLE_CHANGE_PIXELS = 1.0f;
-    field public static final float MIN_VISIBLE_CHANGE_ROTATION_DEGREES = 0.1f;
-    field public static final float MIN_VISIBLE_CHANGE_SCALE = 0.002f;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty ROTATION;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty ROTATION_X;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty ROTATION_Y;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty SCALE_X;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty SCALE_Y;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty SCROLL_X;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty SCROLL_Y;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty TRANSLATION_X;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty TRANSLATION_Y;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty TRANSLATION_Z;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty X;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty Y;
-    field public static final android.support.animation.DynamicAnimation.ViewProperty Z;
-  }
-
-  public static abstract interface DynamicAnimation.OnAnimationEndListener {
-    method public abstract void onAnimationEnd(android.support.animation.DynamicAnimation, boolean, float, float);
-  }
-
-  public static abstract interface DynamicAnimation.OnAnimationUpdateListener {
-    method public abstract void onAnimationUpdate(android.support.animation.DynamicAnimation, float, float);
-  }
-
-  public static abstract class DynamicAnimation.ViewProperty extends android.support.animation.FloatPropertyCompat {
-  }
-
-  public final class FlingAnimation extends android.support.animation.DynamicAnimation {
-    ctor public FlingAnimation(android.support.animation.FloatValueHolder);
-    ctor public FlingAnimation(K, android.support.animation.FloatPropertyCompat<K>);
-    method public float getFriction();
-    method public android.support.animation.FlingAnimation setFriction(float);
-  }
-
-  public abstract class FloatPropertyCompat<T> {
-    ctor public FloatPropertyCompat(java.lang.String);
-    method public static <T> android.support.animation.FloatPropertyCompat<T> createFloatPropertyCompat(android.util.FloatProperty<T>);
-    method public abstract float getValue(T);
-    method public abstract void setValue(T, float);
-  }
-
-  public final class FloatValueHolder {
-    ctor public FloatValueHolder();
-    ctor public FloatValueHolder(float);
-    method public float getValue();
-    method public void setValue(float);
-  }
-
-  public final class SpringAnimation extends android.support.animation.DynamicAnimation {
-    ctor public SpringAnimation(android.support.animation.FloatValueHolder);
-    ctor public SpringAnimation(K, android.support.animation.FloatPropertyCompat<K>);
-    ctor public SpringAnimation(K, android.support.animation.FloatPropertyCompat<K>, float);
-    ctor public deprecated SpringAnimation(android.view.View, android.support.animation.DynamicAnimation.ViewProperty);
-    ctor public deprecated SpringAnimation(android.view.View, android.support.animation.DynamicAnimation.ViewProperty, float);
-    method public void animateToFinalPosition(float);
-    method public boolean canSkipToEnd();
-    method public android.support.animation.SpringForce getSpring();
-    method public android.support.animation.SpringAnimation setSpring(android.support.animation.SpringForce);
-    method public void skipToEnd();
-  }
-
-  public final class SpringForce {
-    ctor public SpringForce();
-    ctor public SpringForce(float);
-    method public float getDampingRatio();
-    method public float getFinalPosition();
-    method public float getStiffness();
-    method public android.support.animation.SpringForce setDampingRatio(float);
-    method public android.support.animation.SpringForce setFinalPosition(float);
-    method public android.support.animation.SpringForce setStiffness(float);
-    field public static final float DAMPING_RATIO_HIGH_BOUNCY = 0.2f;
-    field public static final float DAMPING_RATIO_LOW_BOUNCY = 0.75f;
-    field public static final float DAMPING_RATIO_MEDIUM_BOUNCY = 0.5f;
-    field public static final float DAMPING_RATIO_NO_BOUNCY = 1.0f;
-    field public static final float STIFFNESS_HIGH = 10000.0f;
-    field public static final float STIFFNESS_LOW = 200.0f;
-    field public static final float STIFFNESS_MEDIUM = 1500.0f;
-    field public static final float STIFFNESS_VERY_LOW = 50.0f;
-  }
-
-}
-
-package android.support.app.recommendation {
-
-  public final class ContentRecommendation {
-    method public java.lang.String getBackgroundImageUri();
-    method public int getBadgeImageResourceId();
-    method public int getColor();
-    method public android.graphics.Bitmap getContentImage();
-    method public android.support.app.recommendation.ContentRecommendation.IntentData getContentIntent();
-    method public java.lang.String[] getContentTypes();
-    method public android.support.app.recommendation.ContentRecommendation.IntentData getDismissIntent();
-    method public java.lang.String[] getGenres();
-    method public java.lang.String getGroup();
-    method public java.lang.String getIdTag();
-    method public java.lang.String getMaturityRating();
-    method public android.app.Notification getNotificationObject(android.content.Context);
-    method public java.lang.String getPricingType();
-    method public java.lang.String getPricingValue();
-    method public java.lang.String getPrimaryContentType();
-    method public int getProgressMax();
-    method public int getProgressValue();
-    method public long getRunningTime();
-    method public java.lang.String getSortKey();
-    method public java.lang.String getSourceName();
-    method public int getStatus();
-    method public java.lang.String getText();
-    method public java.lang.String getTitle();
-    method public boolean hasProgressInfo();
-    method public boolean isAutoDismiss();
-    method public void setAutoDismiss(boolean);
-    method public void setGroup(java.lang.String);
-    method public void setProgress(int, int);
-    method public void setSortKey(java.lang.String);
-    method public void setStatus(int);
-    field public static final java.lang.String CONTENT_MATURITY_ALL = "android.contentMaturity.all";
-    field public static final java.lang.String CONTENT_MATURITY_HIGH = "android.contentMaturity.high";
-    field public static final java.lang.String CONTENT_MATURITY_LOW = "android.contentMaturity.low";
-    field public static final java.lang.String CONTENT_MATURITY_MEDIUM = "android.contentMaturity.medium";
-    field public static final java.lang.String CONTENT_PRICING_FREE = "android.contentPrice.free";
-    field public static final java.lang.String CONTENT_PRICING_PREORDER = "android.contentPrice.preorder";
-    field public static final java.lang.String CONTENT_PRICING_PURCHASE = "android.contentPrice.purchase";
-    field public static final java.lang.String CONTENT_PRICING_RENTAL = "android.contentPrice.rental";
-    field public static final java.lang.String CONTENT_PRICING_SUBSCRIPTION = "android.contentPrice.subscription";
-    field public static final int CONTENT_STATUS_AVAILABLE = 2; // 0x2
-    field public static final int CONTENT_STATUS_PENDING = 1; // 0x1
-    field public static final int CONTENT_STATUS_READY = 0; // 0x0
-    field public static final int CONTENT_STATUS_UNAVAILABLE = 3; // 0x3
-    field public static final java.lang.String CONTENT_TYPE_APP = "android.contentType.app";
-    field public static final java.lang.String CONTENT_TYPE_BOOK = "android.contentType.book";
-    field public static final java.lang.String CONTENT_TYPE_COMIC = "android.contentType.comic";
-    field public static final java.lang.String CONTENT_TYPE_GAME = "android.contentType.game";
-    field public static final java.lang.String CONTENT_TYPE_MAGAZINE = "android.contentType.magazine";
-    field public static final java.lang.String CONTENT_TYPE_MOVIE = "android.contentType.movie";
-    field public static final java.lang.String CONTENT_TYPE_MUSIC = "android.contentType.music";
-    field public static final java.lang.String CONTENT_TYPE_NEWS = "android.contentType.news";
-    field public static final java.lang.String CONTENT_TYPE_PODCAST = "android.contentType.podcast";
-    field public static final java.lang.String CONTENT_TYPE_RADIO = "android.contentType.radio";
-    field public static final java.lang.String CONTENT_TYPE_SERIAL = "android.contentType.serial";
-    field public static final java.lang.String CONTENT_TYPE_SPORTS = "android.contentType.sports";
-    field public static final java.lang.String CONTENT_TYPE_TRAILER = "android.contentType.trailer";
-    field public static final java.lang.String CONTENT_TYPE_VIDEO = "android.contentType.video";
-    field public static final java.lang.String CONTENT_TYPE_WEBSITE = "android.contentType.website";
-    field public static final int INTENT_TYPE_ACTIVITY = 1; // 0x1
-    field public static final int INTENT_TYPE_BROADCAST = 2; // 0x2
-    field public static final int INTENT_TYPE_SERVICE = 3; // 0x3
-  }
-
-  public static final class ContentRecommendation.Builder {
-    ctor public ContentRecommendation.Builder();
-    method public android.support.app.recommendation.ContentRecommendation build();
-    method public android.support.app.recommendation.ContentRecommendation.Builder setAutoDismiss(boolean);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setBackgroundImageUri(java.lang.String);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setBadgeIcon(int);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setColor(int);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setContentImage(android.graphics.Bitmap);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setContentIntentData(int, android.content.Intent, int, android.os.Bundle);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setContentTypes(java.lang.String[]);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setDismissIntentData(int, android.content.Intent, int, android.os.Bundle);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setGenres(java.lang.String[]);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setGroup(java.lang.String);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setIdTag(java.lang.String);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setMaturityRating(java.lang.String);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setPricingInformation(java.lang.String, java.lang.String);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setProgress(int, int);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setRunningTime(long);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setSortKey(java.lang.String);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setSourceName(java.lang.String);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setStatus(int);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setText(java.lang.String);
-    method public android.support.app.recommendation.ContentRecommendation.Builder setTitle(java.lang.String);
-  }
-
-  public static abstract class ContentRecommendation.ContentMaturity implements java.lang.annotation.Annotation {
-  }
-
-  public static abstract class ContentRecommendation.ContentPricing implements java.lang.annotation.Annotation {
-  }
-
-  public static abstract class ContentRecommendation.ContentStatus implements java.lang.annotation.Annotation {
-  }
-
-  public static abstract class ContentRecommendation.ContentType implements java.lang.annotation.Annotation {
-  }
-
-  public static class ContentRecommendation.IntentData {
-    ctor public ContentRecommendation.IntentData();
-  }
-
-  public static abstract class ContentRecommendation.IntentType implements java.lang.annotation.Annotation {
-  }
-
-  public final class RecommendationExtender implements android.app.Notification.Extender {
-    ctor public RecommendationExtender();
-    ctor public RecommendationExtender(android.app.Notification);
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-    method public java.lang.String[] getContentTypes();
-    method public java.lang.String[] getGenres();
-    method public java.lang.String getMaturityRating();
-    method public java.lang.String getPricingType();
-    method public java.lang.String getPricingValue();
-    method public java.lang.String getPrimaryContentType();
-    method public long getRunningTime();
-    method public int getStatus();
-    method public android.support.app.recommendation.RecommendationExtender setContentTypes(java.lang.String[]);
-    method public android.support.app.recommendation.RecommendationExtender setGenres(java.lang.String[]);
-    method public android.support.app.recommendation.RecommendationExtender setMaturityRating(java.lang.String);
-    method public android.support.app.recommendation.RecommendationExtender setPricingInformation(java.lang.String, java.lang.String);
-    method public android.support.app.recommendation.RecommendationExtender setRunningTime(long);
-    method public android.support.app.recommendation.RecommendationExtender setStatus(int);
-  }
-
-}
-
-package android.support.customtabs {
-
-  public class CustomTabsCallback {
-    ctor public CustomTabsCallback();
-    method public void extraCallback(java.lang.String, android.os.Bundle);
-    method public void onMessageChannelReady(android.os.Bundle);
-    method public void onNavigationEvent(int, android.os.Bundle);
-    method public void onPostMessage(java.lang.String, android.os.Bundle);
-    field public static final int NAVIGATION_ABORTED = 4; // 0x4
-    field public static final int NAVIGATION_FAILED = 3; // 0x3
-    field public static final int NAVIGATION_FINISHED = 2; // 0x2
-    field public static final int NAVIGATION_STARTED = 1; // 0x1
-    field public static final int TAB_HIDDEN = 6; // 0x6
-    field public static final int TAB_SHOWN = 5; // 0x5
-  }
-
-  public class CustomTabsClient {
-    method public static boolean bindCustomTabsService(android.content.Context, java.lang.String, android.support.customtabs.CustomTabsServiceConnection);
-    method public static boolean connectAndInitialize(android.content.Context, java.lang.String);
-    method public android.os.Bundle extraCommand(java.lang.String, android.os.Bundle);
-    method public static java.lang.String getPackageName(android.content.Context, java.util.List<java.lang.String>);
-    method public static java.lang.String getPackageName(android.content.Context, java.util.List<java.lang.String>, boolean);
-    method public android.support.customtabs.CustomTabsSession newSession(android.support.customtabs.CustomTabsCallback);
-    method public boolean warmup(long);
-  }
-
-  public final class CustomTabsIntent {
-    method public static int getMaxToolbarItems();
-    method public void launchUrl(android.content.Context, android.net.Uri);
-    method public static android.content.Intent setAlwaysUseBrowserUI(android.content.Intent);
-    method public static boolean shouldAlwaysUseBrowserUI(android.content.Intent);
-    field public static final java.lang.String EXTRA_ACTION_BUTTON_BUNDLE = "android.support.customtabs.extra.ACTION_BUTTON_BUNDLE";
-    field public static final java.lang.String EXTRA_CLOSE_BUTTON_ICON = "android.support.customtabs.extra.CLOSE_BUTTON_ICON";
-    field public static final java.lang.String EXTRA_DEFAULT_SHARE_MENU_ITEM = "android.support.customtabs.extra.SHARE_MENU_ITEM";
-    field public static final java.lang.String EXTRA_ENABLE_INSTANT_APPS = "android.support.customtabs.extra.EXTRA_ENABLE_INSTANT_APPS";
-    field public static final java.lang.String EXTRA_ENABLE_URLBAR_HIDING = "android.support.customtabs.extra.ENABLE_URLBAR_HIDING";
-    field public static final java.lang.String EXTRA_EXIT_ANIMATION_BUNDLE = "android.support.customtabs.extra.EXIT_ANIMATION_BUNDLE";
-    field public static final java.lang.String EXTRA_MENU_ITEMS = "android.support.customtabs.extra.MENU_ITEMS";
-    field public static final java.lang.String EXTRA_REMOTEVIEWS = "android.support.customtabs.extra.EXTRA_REMOTEVIEWS";
-    field public static final java.lang.String EXTRA_REMOTEVIEWS_CLICKED_ID = "android.support.customtabs.extra.EXTRA_REMOTEVIEWS_CLICKED_ID";
-    field public static final java.lang.String EXTRA_REMOTEVIEWS_PENDINGINTENT = "android.support.customtabs.extra.EXTRA_REMOTEVIEWS_PENDINGINTENT";
-    field public static final java.lang.String EXTRA_REMOTEVIEWS_VIEW_IDS = "android.support.customtabs.extra.EXTRA_REMOTEVIEWS_VIEW_IDS";
-    field public static final java.lang.String EXTRA_SECONDARY_TOOLBAR_COLOR = "android.support.customtabs.extra.SECONDARY_TOOLBAR_COLOR";
-    field public static final java.lang.String EXTRA_SESSION = "android.support.customtabs.extra.SESSION";
-    field public static final java.lang.String EXTRA_TINT_ACTION_BUTTON = "android.support.customtabs.extra.TINT_ACTION_BUTTON";
-    field public static final java.lang.String EXTRA_TITLE_VISIBILITY_STATE = "android.support.customtabs.extra.TITLE_VISIBILITY";
-    field public static final java.lang.String EXTRA_TOOLBAR_COLOR = "android.support.customtabs.extra.TOOLBAR_COLOR";
-    field public static final java.lang.String EXTRA_TOOLBAR_ITEMS = "android.support.customtabs.extra.TOOLBAR_ITEMS";
-    field public static final java.lang.String KEY_DESCRIPTION = "android.support.customtabs.customaction.DESCRIPTION";
-    field public static final java.lang.String KEY_ICON = "android.support.customtabs.customaction.ICON";
-    field public static final java.lang.String KEY_ID = "android.support.customtabs.customaction.ID";
-    field public static final java.lang.String KEY_MENU_ITEM_TITLE = "android.support.customtabs.customaction.MENU_ITEM_TITLE";
-    field public static final java.lang.String KEY_PENDING_INTENT = "android.support.customtabs.customaction.PENDING_INTENT";
-    field public static final int NO_TITLE = 0; // 0x0
-    field public static final int SHOW_PAGE_TITLE = 1; // 0x1
-    field public static final int TOOLBAR_ACTION_BUTTON_ID = 0; // 0x0
-    field public final android.content.Intent intent;
-    field public final android.os.Bundle startAnimationBundle;
-  }
-
-  public static final class CustomTabsIntent.Builder {
-    ctor public CustomTabsIntent.Builder();
-    ctor public CustomTabsIntent.Builder(android.support.customtabs.CustomTabsSession);
-    method public android.support.customtabs.CustomTabsIntent.Builder addDefaultShareMenuItem();
-    method public android.support.customtabs.CustomTabsIntent.Builder addMenuItem(java.lang.String, android.app.PendingIntent);
-    method public deprecated android.support.customtabs.CustomTabsIntent.Builder addToolbarItem(int, android.graphics.Bitmap, java.lang.String, android.app.PendingIntent) throws java.lang.IllegalStateException;
-    method public android.support.customtabs.CustomTabsIntent build();
-    method public android.support.customtabs.CustomTabsIntent.Builder enableUrlBarHiding();
-    method public android.support.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, java.lang.String, android.app.PendingIntent, boolean);
-    method public android.support.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, java.lang.String, android.app.PendingIntent);
-    method public android.support.customtabs.CustomTabsIntent.Builder setCloseButtonIcon(android.graphics.Bitmap);
-    method public android.support.customtabs.CustomTabsIntent.Builder setExitAnimations(android.content.Context, int, int);
-    method public android.support.customtabs.CustomTabsIntent.Builder setInstantAppsEnabled(boolean);
-    method public android.support.customtabs.CustomTabsIntent.Builder setSecondaryToolbarColor(int);
-    method public android.support.customtabs.CustomTabsIntent.Builder setSecondaryToolbarViews(android.widget.RemoteViews, int[], android.app.PendingIntent);
-    method public android.support.customtabs.CustomTabsIntent.Builder setShowTitle(boolean);
-    method public android.support.customtabs.CustomTabsIntent.Builder setStartAnimations(android.content.Context, int, int);
-    method public android.support.customtabs.CustomTabsIntent.Builder setToolbarColor(int);
-  }
-
-  public abstract class CustomTabsService extends android.app.Service {
-    ctor public CustomTabsService();
-    method protected boolean cleanUpSession(android.support.customtabs.CustomTabsSessionToken);
-    method protected abstract android.os.Bundle extraCommand(java.lang.String, android.os.Bundle);
-    method protected abstract boolean mayLaunchUrl(android.support.customtabs.CustomTabsSessionToken, android.net.Uri, android.os.Bundle, java.util.List<android.os.Bundle>);
-    method protected abstract boolean newSession(android.support.customtabs.CustomTabsSessionToken);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method protected abstract int postMessage(android.support.customtabs.CustomTabsSessionToken, java.lang.String, android.os.Bundle);
-    method protected abstract boolean requestPostMessageChannel(android.support.customtabs.CustomTabsSessionToken, android.net.Uri);
-    method protected abstract boolean updateVisuals(android.support.customtabs.CustomTabsSessionToken, android.os.Bundle);
-    method protected abstract boolean warmup(long);
-    field public static final java.lang.String ACTION_CUSTOM_TABS_CONNECTION = "android.support.customtabs.action.CustomTabsService";
-    field public static final java.lang.String KEY_URL = "android.support.customtabs.otherurls.URL";
-    field public static final int RESULT_FAILURE_DISALLOWED = -1; // 0xffffffff
-    field public static final int RESULT_FAILURE_MESSAGING_ERROR = -3; // 0xfffffffd
-    field public static final int RESULT_FAILURE_REMOTE_ERROR = -2; // 0xfffffffe
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-  }
-
-  public static abstract class CustomTabsService.Result implements java.lang.annotation.Annotation {
-  }
-
-  public abstract class CustomTabsServiceConnection implements android.content.ServiceConnection {
-    ctor public CustomTabsServiceConnection();
-    method public abstract void onCustomTabsServiceConnected(android.content.ComponentName, android.support.customtabs.CustomTabsClient);
-    method public final void onServiceConnected(android.content.ComponentName, android.os.IBinder);
-  }
-
-  public final class CustomTabsSession {
-    method public boolean mayLaunchUrl(android.net.Uri, android.os.Bundle, java.util.List<android.os.Bundle>);
-    method public int postMessage(java.lang.String, android.os.Bundle);
-    method public boolean requestPostMessageChannel(android.net.Uri);
-    method public boolean setActionButton(android.graphics.Bitmap, java.lang.String);
-    method public boolean setSecondaryToolbarViews(android.widget.RemoteViews, int[], android.app.PendingIntent);
-    method public deprecated boolean setToolbarItem(int, android.graphics.Bitmap, java.lang.String);
-  }
-
-  public class CustomTabsSessionToken {
-    method public android.support.customtabs.CustomTabsCallback getCallback();
-    method public static android.support.customtabs.CustomTabsSessionToken getSessionTokenFromIntent(android.content.Intent);
-    method public boolean isAssociatedWith(android.support.customtabs.CustomTabsSession);
-  }
-
-  public class PostMessageService extends android.app.Service {
-    ctor public PostMessageService();
-    method public android.os.IBinder onBind(android.content.Intent);
-  }
-
-  public abstract class PostMessageServiceConnection implements android.content.ServiceConnection {
-    ctor public PostMessageServiceConnection(android.support.customtabs.CustomTabsSessionToken);
-    method public boolean bindSessionToPostMessageService(android.content.Context, java.lang.String);
-    method public final boolean notifyMessageChannelReady(android.os.Bundle);
-    method public void onPostMessageServiceConnected();
-    method public void onPostMessageServiceDisconnected();
-    method public final void onServiceConnected(android.content.ComponentName, android.os.IBinder);
-    method public final void onServiceDisconnected(android.content.ComponentName);
-    method public final boolean postMessage(java.lang.String, android.os.Bundle);
-    method public void unbindFromContext(android.content.Context);
-  }
-
-}
-
-package android.support.design.widget {
-
-  public class AppBarLayout extends android.widget.LinearLayout {
-    ctor public AppBarLayout(android.content.Context);
-    ctor public AppBarLayout(android.content.Context, android.util.AttributeSet);
-    method public void addOnOffsetChangedListener(android.support.design.widget.AppBarLayout.OnOffsetChangedListener);
-    method public deprecated float getTargetElevation();
-    method public final int getTotalScrollRange();
-    method public void removeOnOffsetChangedListener(android.support.design.widget.AppBarLayout.OnOffsetChangedListener);
-    method public void setExpanded(boolean);
-    method public void setExpanded(boolean, boolean);
-    method public deprecated void setTargetElevation(float);
-  }
-
-  public static class AppBarLayout.Behavior extends android.support.design.widget.HeaderBehavior {
-    ctor public AppBarLayout.Behavior();
-    ctor public AppBarLayout.Behavior(android.content.Context, android.util.AttributeSet);
-    method public boolean onLayoutChild(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, int);
-    method public boolean onMeasureChild(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, int, int, int, int);
-    method public boolean onNestedFling(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.View, float, float, boolean);
-    method public void onNestedPreScroll(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.View, int, int, int[]);
-    method public void onNestedScroll(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.View, int, int, int, int);
-    method public void onRestoreInstanceState(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout);
-    method public boolean onStartNestedScroll(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.View, android.view.View, int);
-    method public void onStopNestedScroll(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.View);
-    method public void setDragCallback(android.support.design.widget.AppBarLayout.Behavior.DragCallback);
-  }
-
-  public static abstract class AppBarLayout.Behavior.DragCallback {
-    ctor public AppBarLayout.Behavior.DragCallback();
-    method public abstract boolean canDrag(android.support.design.widget.AppBarLayout);
-  }
-
-  protected static class AppBarLayout.Behavior.SavedState extends android.support.v4.view.AbsSavedState {
-    ctor public AppBarLayout.Behavior.SavedState(android.os.Parcel, java.lang.ClassLoader);
-    ctor public AppBarLayout.Behavior.SavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<android.support.design.widget.AppBarLayout.Behavior.SavedState> CREATOR;
-  }
-
-  public static class AppBarLayout.LayoutParams extends android.widget.LinearLayout.LayoutParams {
-    ctor public AppBarLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public AppBarLayout.LayoutParams(int, int);
-    ctor public AppBarLayout.LayoutParams(int, int, float);
-    ctor public AppBarLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public AppBarLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public AppBarLayout.LayoutParams(android.widget.LinearLayout.LayoutParams);
-    ctor public AppBarLayout.LayoutParams(android.support.design.widget.AppBarLayout.LayoutParams);
-    method public int getScrollFlags();
-    method public android.view.animation.Interpolator getScrollInterpolator();
-    method public void setScrollFlags(int);
-    method public void setScrollInterpolator(android.view.animation.Interpolator);
-    field public static final int SCROLL_FLAG_ENTER_ALWAYS = 4; // 0x4
-    field public static final int SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED = 8; // 0x8
-    field public static final int SCROLL_FLAG_EXIT_UNTIL_COLLAPSED = 2; // 0x2
-    field public static final int SCROLL_FLAG_SCROLL = 1; // 0x1
-    field public static final int SCROLL_FLAG_SNAP = 16; // 0x10
-  }
-
-  public static abstract interface AppBarLayout.OnOffsetChangedListener {
-    method public abstract void onOffsetChanged(android.support.design.widget.AppBarLayout, int);
-  }
-
-  public static class AppBarLayout.ScrollingViewBehavior extends android.support.design.widget.HeaderScrollingViewBehavior {
-    ctor public AppBarLayout.ScrollingViewBehavior();
-    ctor public AppBarLayout.ScrollingViewBehavior(android.content.Context, android.util.AttributeSet);
-    method public boolean layoutDependsOn(android.support.design.widget.CoordinatorLayout, android.view.View, android.view.View);
-    method public boolean onDependentViewChanged(android.support.design.widget.CoordinatorLayout, android.view.View, android.view.View);
-    method public boolean onRequestChildRectangleOnScreen(android.support.design.widget.CoordinatorLayout, android.view.View, android.graphics.Rect, boolean);
-  }
-
-  public abstract class BaseTransientBottomBar<B extends android.support.design.widget.BaseTransientBottomBar<B>> {
-    ctor protected BaseTransientBottomBar(android.view.ViewGroup, android.view.View, android.support.design.widget.BaseTransientBottomBar.ContentViewCallback);
-    method public B addCallback(android.support.design.widget.BaseTransientBottomBar.BaseCallback<B>);
-    method public void dismiss();
-    method public android.content.Context getContext();
-    method public int getDuration();
-    method public android.view.View getView();
-    method public boolean isShown();
-    method public boolean isShownOrQueued();
-    method public B removeCallback(android.support.design.widget.BaseTransientBottomBar.BaseCallback<B>);
-    method public B setDuration(int);
-    method public void show();
-    field public static final int LENGTH_INDEFINITE = -2; // 0xfffffffe
-    field public static final int LENGTH_LONG = 0; // 0x0
-    field public static final int LENGTH_SHORT = -1; // 0xffffffff
-  }
-
-  public static abstract class BaseTransientBottomBar.BaseCallback<B> {
-    ctor public BaseTransientBottomBar.BaseCallback();
-    method public void onDismissed(B, int);
-    method public void onShown(B);
-    field public static final int DISMISS_EVENT_ACTION = 1; // 0x1
-    field public static final int DISMISS_EVENT_CONSECUTIVE = 4; // 0x4
-    field public static final int DISMISS_EVENT_MANUAL = 3; // 0x3
-    field public static final int DISMISS_EVENT_SWIPE = 0; // 0x0
-    field public static final int DISMISS_EVENT_TIMEOUT = 2; // 0x2
-  }
-
-  public static abstract interface BaseTransientBottomBar.ContentViewCallback {
-    method public abstract void animateContentIn(int, int);
-    method public abstract void animateContentOut(int, int);
-  }
-
-  public class BottomNavigationView extends android.widget.FrameLayout {
-    ctor public BottomNavigationView(android.content.Context);
-    ctor public BottomNavigationView(android.content.Context, android.util.AttributeSet);
-    ctor public BottomNavigationView(android.content.Context, android.util.AttributeSet, int);
-    method public int getItemBackgroundResource();
-    method public android.content.res.ColorStateList getItemIconTintList();
-    method public android.content.res.ColorStateList getItemTextColor();
-    method public int getMaxItemCount();
-    method public android.view.Menu getMenu();
-    method public int getSelectedItemId();
-    method public void inflateMenu(int);
-    method public void setItemBackgroundResource(int);
-    method public void setItemIconTintList(android.content.res.ColorStateList);
-    method public void setItemTextColor(android.content.res.ColorStateList);
-    method public void setOnNavigationItemReselectedListener(android.support.design.widget.BottomNavigationView.OnNavigationItemReselectedListener);
-    method public void setOnNavigationItemSelectedListener(android.support.design.widget.BottomNavigationView.OnNavigationItemSelectedListener);
-    method public void setSelectedItemId(int);
-  }
-
-  public static abstract interface BottomNavigationView.OnNavigationItemReselectedListener {
-    method public abstract void onNavigationItemReselected(android.view.MenuItem);
-  }
-
-  public static abstract interface BottomNavigationView.OnNavigationItemSelectedListener {
-    method public abstract boolean onNavigationItemSelected(android.view.MenuItem);
-  }
-
-  public class BottomSheetBehavior<V extends android.view.View> extends android.support.design.widget.CoordinatorLayout.Behavior {
-    ctor public BottomSheetBehavior();
-    ctor public BottomSheetBehavior(android.content.Context, android.util.AttributeSet);
-    method public static <V extends android.view.View> android.support.design.widget.BottomSheetBehavior<V> from(V);
-    method public final int getPeekHeight();
-    method public boolean getSkipCollapsed();
-    method public final int getState();
-    method public boolean isHideable();
-    method public void setBottomSheetCallback(android.support.design.widget.BottomSheetBehavior.BottomSheetCallback);
-    method public void setHideable(boolean);
-    method public final void setPeekHeight(int);
-    method public void setSkipCollapsed(boolean);
-    method public final void setState(int);
-    field public static final int PEEK_HEIGHT_AUTO = -1; // 0xffffffff
-    field public static final int STATE_COLLAPSED = 4; // 0x4
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_EXPANDED = 3; // 0x3
-    field public static final int STATE_HIDDEN = 5; // 0x5
-    field public static final int STATE_SETTLING = 2; // 0x2
-  }
-
-  public static abstract class BottomSheetBehavior.BottomSheetCallback {
-    ctor public BottomSheetBehavior.BottomSheetCallback();
-    method public abstract void onSlide(android.view.View, float);
-    method public abstract void onStateChanged(android.view.View, int);
-  }
-
-  protected static class BottomSheetBehavior.SavedState extends android.support.v4.view.AbsSavedState {
-    ctor public BottomSheetBehavior.SavedState(android.os.Parcel);
-    ctor public BottomSheetBehavior.SavedState(android.os.Parcel, java.lang.ClassLoader);
-    ctor public BottomSheetBehavior.SavedState(android.os.Parcelable, int);
-    field public static final android.os.Parcelable.Creator<android.support.design.widget.BottomSheetBehavior.SavedState> CREATOR;
-  }
-
-  public class BottomSheetDialog extends android.support.v7.app.AppCompatDialog {
-    ctor public BottomSheetDialog(android.content.Context);
-    ctor public BottomSheetDialog(android.content.Context, int);
-    ctor protected BottomSheetDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
-  }
-
-  public class BottomSheetDialogFragment extends android.support.v7.app.AppCompatDialogFragment {
-    ctor public BottomSheetDialogFragment();
-  }
-
-  public class CollapsingToolbarLayout extends android.widget.FrameLayout {
-    ctor public CollapsingToolbarLayout(android.content.Context);
-    ctor public CollapsingToolbarLayout(android.content.Context, android.util.AttributeSet);
-    ctor public CollapsingToolbarLayout(android.content.Context, android.util.AttributeSet, int);
-    method public int getCollapsedTitleGravity();
-    method public android.graphics.Typeface getCollapsedTitleTypeface();
-    method public android.graphics.drawable.Drawable getContentScrim();
-    method public int getExpandedTitleGravity();
-    method public int getExpandedTitleMarginBottom();
-    method public int getExpandedTitleMarginEnd();
-    method public int getExpandedTitleMarginStart();
-    method public int getExpandedTitleMarginTop();
-    method public android.graphics.Typeface getExpandedTitleTypeface();
-    method public long getScrimAnimationDuration();
-    method public int getScrimVisibleHeightTrigger();
-    method public android.graphics.drawable.Drawable getStatusBarScrim();
-    method public java.lang.CharSequence getTitle();
-    method public boolean isTitleEnabled();
-    method public void setCollapsedTitleGravity(int);
-    method public void setCollapsedTitleTextAppearance(int);
-    method public void setCollapsedTitleTextColor(int);
-    method public void setCollapsedTitleTextColor(android.content.res.ColorStateList);
-    method public void setCollapsedTitleTypeface(android.graphics.Typeface);
-    method public void setContentScrim(android.graphics.drawable.Drawable);
-    method public void setContentScrimColor(int);
-    method public void setContentScrimResource(int);
-    method public void setExpandedTitleColor(int);
-    method public void setExpandedTitleGravity(int);
-    method public void setExpandedTitleMargin(int, int, int, int);
-    method public void setExpandedTitleMarginBottom(int);
-    method public void setExpandedTitleMarginEnd(int);
-    method public void setExpandedTitleMarginStart(int);
-    method public void setExpandedTitleMarginTop(int);
-    method public void setExpandedTitleTextAppearance(int);
-    method public void setExpandedTitleTextColor(android.content.res.ColorStateList);
-    method public void setExpandedTitleTypeface(android.graphics.Typeface);
-    method public void setScrimAnimationDuration(long);
-    method public void setScrimVisibleHeightTrigger(int);
-    method public void setScrimsShown(boolean);
-    method public void setScrimsShown(boolean, boolean);
-    method public void setStatusBarScrim(android.graphics.drawable.Drawable);
-    method public void setStatusBarScrimColor(int);
-    method public void setStatusBarScrimResource(int);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleEnabled(boolean);
-  }
-
-  public static class CollapsingToolbarLayout.LayoutParams extends android.widget.FrameLayout.LayoutParams {
-    ctor public CollapsingToolbarLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public CollapsingToolbarLayout.LayoutParams(int, int);
-    ctor public CollapsingToolbarLayout.LayoutParams(int, int, int);
-    ctor public CollapsingToolbarLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public CollapsingToolbarLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public CollapsingToolbarLayout.LayoutParams(android.widget.FrameLayout.LayoutParams);
-    method public int getCollapseMode();
-    method public float getParallaxMultiplier();
-    method public void setCollapseMode(int);
-    method public void setParallaxMultiplier(float);
-    field public static final int COLLAPSE_MODE_OFF = 0; // 0x0
-    field public static final int COLLAPSE_MODE_PARALLAX = 2; // 0x2
-    field public static final int COLLAPSE_MODE_PIN = 1; // 0x1
-  }
-
-  public class CoordinatorLayout extends android.view.ViewGroup implements android.support.v4.view.NestedScrollingParent {
-    ctor public CoordinatorLayout(android.content.Context);
-    ctor public CoordinatorLayout(android.content.Context, android.util.AttributeSet);
-    ctor public CoordinatorLayout(android.content.Context, android.util.AttributeSet, int);
-    method public void dispatchDependentViewsChanged(android.view.View);
-    method public boolean doViewsOverlap(android.view.View, android.view.View);
-    method public java.util.List<android.view.View> getDependencies(android.view.View);
-    method public java.util.List<android.view.View> getDependents(android.view.View);
-    method public android.graphics.drawable.Drawable getStatusBarBackground();
-    method public boolean isPointInChildBounds(android.view.View, int, int);
-    method public void onAttachedToWindow();
-    method public void onDetachedFromWindow();
-    method public void onDraw(android.graphics.Canvas);
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void onLayoutChild(android.view.View, int);
-    method public void onMeasureChild(android.view.View, int, int, int, int);
-    method public void setStatusBarBackground(android.graphics.drawable.Drawable);
-    method public void setStatusBarBackgroundColor(int);
-    method public void setStatusBarBackgroundResource(int);
-  }
-
-  public static abstract class CoordinatorLayout.Behavior<V extends android.view.View> {
-    ctor public CoordinatorLayout.Behavior();
-    ctor public CoordinatorLayout.Behavior(android.content.Context, android.util.AttributeSet);
-    method public boolean blocksInteractionBelow(android.support.design.widget.CoordinatorLayout, V);
-    method public boolean getInsetDodgeRect(android.support.design.widget.CoordinatorLayout, V, android.graphics.Rect);
-    method public int getScrimColor(android.support.design.widget.CoordinatorLayout, V);
-    method public float getScrimOpacity(android.support.design.widget.CoordinatorLayout, V);
-    method public static java.lang.Object getTag(android.view.View);
-    method public deprecated boolean isDirty(android.support.design.widget.CoordinatorLayout, V);
-    method public boolean layoutDependsOn(android.support.design.widget.CoordinatorLayout, V, android.view.View);
-    method public android.support.v4.view.WindowInsetsCompat onApplyWindowInsets(android.support.design.widget.CoordinatorLayout, V, android.support.v4.view.WindowInsetsCompat);
-    method public void onAttachedToLayoutParams(android.support.design.widget.CoordinatorLayout.LayoutParams);
-    method public boolean onDependentViewChanged(android.support.design.widget.CoordinatorLayout, V, android.view.View);
-    method public void onDependentViewRemoved(android.support.design.widget.CoordinatorLayout, V, android.view.View);
-    method public void onDetachedFromLayoutParams();
-    method public boolean onInterceptTouchEvent(android.support.design.widget.CoordinatorLayout, V, android.view.MotionEvent);
-    method public boolean onLayoutChild(android.support.design.widget.CoordinatorLayout, V, int);
-    method public boolean onMeasureChild(android.support.design.widget.CoordinatorLayout, V, int, int, int, int);
-    method public boolean onNestedFling(android.support.design.widget.CoordinatorLayout, V, android.view.View, float, float, boolean);
-    method public boolean onNestedPreFling(android.support.design.widget.CoordinatorLayout, V, android.view.View, float, float);
-    method public void onNestedPreScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int, int, int[]);
-    method public void onNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int, int, int, int);
-    method public void onNestedScrollAccepted(android.support.design.widget.CoordinatorLayout, V, android.view.View, android.view.View, int);
-    method public boolean onRequestChildRectangleOnScreen(android.support.design.widget.CoordinatorLayout, V, android.graphics.Rect, boolean);
-    method public void onRestoreInstanceState(android.support.design.widget.CoordinatorLayout, V, android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState(android.support.design.widget.CoordinatorLayout, V);
-    method public boolean onStartNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, android.view.View, int);
-    method public void onStopNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View);
-    method public boolean onTouchEvent(android.support.design.widget.CoordinatorLayout, V, android.view.MotionEvent);
-    method public static void setTag(android.view.View, java.lang.Object);
-  }
-
-  public static abstract class CoordinatorLayout.DefaultBehavior implements java.lang.annotation.Annotation {
-  }
-
-  public static class CoordinatorLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public CoordinatorLayout.LayoutParams(int, int);
-    ctor public CoordinatorLayout.LayoutParams(android.support.design.widget.CoordinatorLayout.LayoutParams);
-    ctor public CoordinatorLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public CoordinatorLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    method public int getAnchorId();
-    method public android.support.design.widget.CoordinatorLayout.Behavior getBehavior();
-    method public void setAnchorId(int);
-    method public void setBehavior(android.support.design.widget.CoordinatorLayout.Behavior);
-    field public int anchorGravity;
-    field public int dodgeInsetEdges;
-    field public int gravity;
-    field public int insetEdge;
-    field public int keyline;
-  }
-
-  protected static class CoordinatorLayout.SavedState extends android.support.v4.view.AbsSavedState {
-    ctor public CoordinatorLayout.SavedState(android.os.Parcel, java.lang.ClassLoader);
-    ctor public CoordinatorLayout.SavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<android.support.design.widget.CoordinatorLayout.SavedState> CREATOR;
-  }
-
-  public class FloatingActionButton extends android.support.design.widget.VisibilityAwareImageButton {
-    ctor public FloatingActionButton(android.content.Context);
-    ctor public FloatingActionButton(android.content.Context, android.util.AttributeSet);
-    ctor public FloatingActionButton(android.content.Context, android.util.AttributeSet, int);
-    method public float getCompatElevation();
-    method public android.graphics.drawable.Drawable getContentBackground();
-    method public boolean getContentRect(android.graphics.Rect);
-    method public int getRippleColor();
-    method public int getSize();
-    method public boolean getUseCompatPadding();
-    method public void hide();
-    method public void hide(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener);
-    method public void setCompatElevation(float);
-    method public void setRippleColor(int);
-    method public void setSize(int);
-    method public void setUseCompatPadding(boolean);
-    method public void show();
-    method public void show(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener);
-    field public static final int SIZE_AUTO = -1; // 0xffffffff
-    field public static final int SIZE_MINI = 1; // 0x1
-    field public static final int SIZE_NORMAL = 0; // 0x0
-  }
-
-  public static class FloatingActionButton.Behavior extends android.support.design.widget.CoordinatorLayout.Behavior {
-    ctor public FloatingActionButton.Behavior();
-    ctor public FloatingActionButton.Behavior(android.content.Context, android.util.AttributeSet);
-    method public boolean getInsetDodgeRect(android.support.design.widget.CoordinatorLayout, android.support.design.widget.FloatingActionButton, android.graphics.Rect);
-    method public boolean isAutoHideEnabled();
-    method public boolean onDependentViewChanged(android.support.design.widget.CoordinatorLayout, android.support.design.widget.FloatingActionButton, android.view.View);
-    method public boolean onLayoutChild(android.support.design.widget.CoordinatorLayout, android.support.design.widget.FloatingActionButton, int);
-    method public void setAutoHideEnabled(boolean);
-  }
-
-  public static abstract class FloatingActionButton.OnVisibilityChangedListener {
-    ctor public FloatingActionButton.OnVisibilityChangedListener();
-    method public void onHidden(android.support.design.widget.FloatingActionButton);
-    method public void onShown(android.support.design.widget.FloatingActionButton);
-  }
-
-   abstract class HeaderBehavior<V extends android.view.View> extends android.support.design.widget.ViewOffsetBehavior {
-    ctor public HeaderBehavior();
-    ctor public HeaderBehavior(android.content.Context, android.util.AttributeSet);
-  }
-
-   abstract class HeaderScrollingViewBehavior extends android.support.design.widget.ViewOffsetBehavior {
-    ctor public HeaderScrollingViewBehavior();
-    ctor public HeaderScrollingViewBehavior(android.content.Context, android.util.AttributeSet);
-    method public final int getOverlayTop();
-    method protected void layoutChild(android.support.design.widget.CoordinatorLayout, android.view.View, int);
-    method public boolean onMeasureChild(android.support.design.widget.CoordinatorLayout, android.view.View, int, int, int, int);
-    method public final void setOverlayTop(int);
-  }
-
-  public class NavigationView extends android.widget.FrameLayout {
-    ctor public NavigationView(android.content.Context);
-    ctor public NavigationView(android.content.Context, android.util.AttributeSet);
-    ctor public NavigationView(android.content.Context, android.util.AttributeSet, int);
-    method public void addHeaderView(android.view.View);
-    method public int getHeaderCount();
-    method public android.view.View getHeaderView(int);
-    method public android.graphics.drawable.Drawable getItemBackground();
-    method public android.content.res.ColorStateList getItemIconTintList();
-    method public android.content.res.ColorStateList getItemTextColor();
-    method public android.view.Menu getMenu();
-    method public android.view.View inflateHeaderView(int);
-    method public void inflateMenu(int);
-    method public void removeHeaderView(android.view.View);
-    method public void setCheckedItem(int);
-    method public void setItemBackground(android.graphics.drawable.Drawable);
-    method public void setItemBackgroundResource(int);
-    method public void setItemIconTintList(android.content.res.ColorStateList);
-    method public void setItemTextAppearance(int);
-    method public void setItemTextColor(android.content.res.ColorStateList);
-    method public void setNavigationItemSelectedListener(android.support.design.widget.NavigationView.OnNavigationItemSelectedListener);
-  }
-
-  public static abstract interface NavigationView.OnNavigationItemSelectedListener {
-    method public abstract boolean onNavigationItemSelected(android.view.MenuItem);
-  }
-
-  public static class NavigationView.SavedState extends android.support.v4.view.AbsSavedState {
-    ctor public NavigationView.SavedState(android.os.Parcel, java.lang.ClassLoader);
-    ctor public NavigationView.SavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<android.support.design.widget.NavigationView.SavedState> CREATOR;
-    field public android.os.Bundle menuState;
-  }
-
-  public final class Snackbar extends android.support.design.widget.BaseTransientBottomBar {
-    method public static android.support.design.widget.Snackbar make(android.view.View, java.lang.CharSequence, int);
-    method public static android.support.design.widget.Snackbar make(android.view.View, int, int);
-    method public android.support.design.widget.Snackbar setAction(int, android.view.View.OnClickListener);
-    method public android.support.design.widget.Snackbar setAction(java.lang.CharSequence, android.view.View.OnClickListener);
-    method public android.support.design.widget.Snackbar setActionTextColor(android.content.res.ColorStateList);
-    method public android.support.design.widget.Snackbar setActionTextColor(int);
-    method public deprecated android.support.design.widget.Snackbar setCallback(android.support.design.widget.Snackbar.Callback);
-    method public android.support.design.widget.Snackbar setText(java.lang.CharSequence);
-    method public android.support.design.widget.Snackbar setText(int);
-    field public static final int LENGTH_INDEFINITE = -2; // 0xfffffffe
-    field public static final int LENGTH_LONG = 0; // 0x0
-    field public static final int LENGTH_SHORT = -1; // 0xffffffff
-  }
-
-  public static class Snackbar.Callback extends android.support.design.widget.BaseTransientBottomBar.BaseCallback {
-    ctor public Snackbar.Callback();
-    method public void onDismissed(android.support.design.widget.Snackbar, int);
-    method public void onShown(android.support.design.widget.Snackbar);
-    field public static final int DISMISS_EVENT_ACTION = 1; // 0x1
-    field public static final int DISMISS_EVENT_CONSECUTIVE = 4; // 0x4
-    field public static final int DISMISS_EVENT_MANUAL = 3; // 0x3
-    field public static final int DISMISS_EVENT_SWIPE = 0; // 0x0
-    field public static final int DISMISS_EVENT_TIMEOUT = 2; // 0x2
-  }
-
-  public class SwipeDismissBehavior<V extends android.view.View> extends android.support.design.widget.CoordinatorLayout.Behavior {
-    ctor public SwipeDismissBehavior();
-    method public boolean canSwipeDismissView(android.view.View);
-    method public int getDragState();
-    method public void setDragDismissDistance(float);
-    method public void setEndAlphaSwipeDistance(float);
-    method public void setListener(android.support.design.widget.SwipeDismissBehavior.OnDismissListener);
-    method public void setSensitivity(float);
-    method public void setStartAlphaSwipeDistance(float);
-    method public void setSwipeDirection(int);
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_IDLE = 0; // 0x0
-    field public static final int STATE_SETTLING = 2; // 0x2
-    field public static final int SWIPE_DIRECTION_ANY = 2; // 0x2
-    field public static final int SWIPE_DIRECTION_END_TO_START = 1; // 0x1
-    field public static final int SWIPE_DIRECTION_START_TO_END = 0; // 0x0
-  }
-
-  public static abstract interface SwipeDismissBehavior.OnDismissListener {
-    method public abstract void onDismiss(android.view.View);
-    method public abstract void onDragStateChanged(int);
-  }
-
-  public final class TabItem extends android.view.View {
-    ctor public TabItem(android.content.Context);
-    ctor public TabItem(android.content.Context, android.util.AttributeSet);
-  }
-
-  public class TabLayout extends android.widget.HorizontalScrollView {
-    ctor public TabLayout(android.content.Context);
-    ctor public TabLayout(android.content.Context, android.util.AttributeSet);
-    ctor public TabLayout(android.content.Context, android.util.AttributeSet, int);
-    method public void addOnTabSelectedListener(android.support.design.widget.TabLayout.OnTabSelectedListener);
-    method public void addTab(android.support.design.widget.TabLayout.Tab);
-    method public void addTab(android.support.design.widget.TabLayout.Tab, int);
-    method public void addTab(android.support.design.widget.TabLayout.Tab, boolean);
-    method public void addTab(android.support.design.widget.TabLayout.Tab, int, boolean);
-    method public void clearOnTabSelectedListeners();
-    method public int getSelectedTabPosition();
-    method public android.support.design.widget.TabLayout.Tab getTabAt(int);
-    method public int getTabCount();
-    method public int getTabGravity();
-    method public int getTabMode();
-    method public android.content.res.ColorStateList getTabTextColors();
-    method public android.support.design.widget.TabLayout.Tab newTab();
-    method public void removeAllTabs();
-    method public void removeOnTabSelectedListener(android.support.design.widget.TabLayout.OnTabSelectedListener);
-    method public void removeTab(android.support.design.widget.TabLayout.Tab);
-    method public void removeTabAt(int);
-    method public deprecated void setOnTabSelectedListener(android.support.design.widget.TabLayout.OnTabSelectedListener);
-    method public void setScrollPosition(int, float, boolean);
-    method public void setSelectedTabIndicatorColor(int);
-    method public void setSelectedTabIndicatorHeight(int);
-    method public void setTabGravity(int);
-    method public void setTabMode(int);
-    method public void setTabTextColors(android.content.res.ColorStateList);
-    method public void setTabTextColors(int, int);
-    method public deprecated void setTabsFromPagerAdapter(android.support.v4.view.PagerAdapter);
-    method public void setupWithViewPager(android.support.v4.view.ViewPager);
-    method public void setupWithViewPager(android.support.v4.view.ViewPager, boolean);
-    field public static final int GRAVITY_CENTER = 1; // 0x1
-    field public static final int GRAVITY_FILL = 0; // 0x0
-    field public static final int MODE_FIXED = 1; // 0x1
-    field public static final int MODE_SCROLLABLE = 0; // 0x0
-  }
-
-  public static abstract interface TabLayout.OnTabSelectedListener {
-    method public abstract void onTabReselected(android.support.design.widget.TabLayout.Tab);
-    method public abstract void onTabSelected(android.support.design.widget.TabLayout.Tab);
-    method public abstract void onTabUnselected(android.support.design.widget.TabLayout.Tab);
-  }
-
-  public static final class TabLayout.Tab {
-    method public java.lang.CharSequence getContentDescription();
-    method public android.view.View getCustomView();
-    method public android.graphics.drawable.Drawable getIcon();
-    method public int getPosition();
-    method public java.lang.Object getTag();
-    method public java.lang.CharSequence getText();
-    method public boolean isSelected();
-    method public void select();
-    method public android.support.design.widget.TabLayout.Tab setContentDescription(int);
-    method public android.support.design.widget.TabLayout.Tab setContentDescription(java.lang.CharSequence);
-    method public android.support.design.widget.TabLayout.Tab setCustomView(android.view.View);
-    method public android.support.design.widget.TabLayout.Tab setCustomView(int);
-    method public android.support.design.widget.TabLayout.Tab setIcon(android.graphics.drawable.Drawable);
-    method public android.support.design.widget.TabLayout.Tab setIcon(int);
-    method public android.support.design.widget.TabLayout.Tab setTag(java.lang.Object);
-    method public android.support.design.widget.TabLayout.Tab setText(java.lang.CharSequence);
-    method public android.support.design.widget.TabLayout.Tab setText(int);
-    field public static final int INVALID_POSITION = -1; // 0xffffffff
-  }
-
-  public static class TabLayout.TabLayoutOnPageChangeListener implements android.support.v4.view.ViewPager.OnPageChangeListener {
-    ctor public TabLayout.TabLayoutOnPageChangeListener(android.support.design.widget.TabLayout);
-    method public void onPageScrollStateChanged(int);
-    method public void onPageScrolled(int, float, int);
-    method public void onPageSelected(int);
-  }
-
-  public static class TabLayout.ViewPagerOnTabSelectedListener implements android.support.design.widget.TabLayout.OnTabSelectedListener {
-    ctor public TabLayout.ViewPagerOnTabSelectedListener(android.support.v4.view.ViewPager);
-    method public void onTabReselected(android.support.design.widget.TabLayout.Tab);
-    method public void onTabSelected(android.support.design.widget.TabLayout.Tab);
-    method public void onTabUnselected(android.support.design.widget.TabLayout.Tab);
-  }
-
-  public class TextInputEditText extends android.support.v7.widget.AppCompatEditText {
-    ctor public TextInputEditText(android.content.Context);
-    ctor public TextInputEditText(android.content.Context, android.util.AttributeSet);
-    ctor public TextInputEditText(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class TextInputLayout extends android.widget.LinearLayout {
-    ctor public TextInputLayout(android.content.Context);
-    ctor public TextInputLayout(android.content.Context, android.util.AttributeSet);
-    ctor public TextInputLayout(android.content.Context, android.util.AttributeSet, int);
-    method public int getCounterMaxLength();
-    method public android.widget.EditText getEditText();
-    method public java.lang.CharSequence getError();
-    method public java.lang.CharSequence getHint();
-    method public java.lang.CharSequence getPasswordVisibilityToggleContentDescription();
-    method public android.graphics.drawable.Drawable getPasswordVisibilityToggleDrawable();
-    method public android.graphics.Typeface getTypeface();
-    method public boolean isCounterEnabled();
-    method public boolean isErrorEnabled();
-    method public boolean isHintAnimationEnabled();
-    method public boolean isHintEnabled();
-    method public boolean isPasswordVisibilityToggleEnabled();
-    method public android.os.Parcelable onSaveInstanceState();
-    method public void setCounterEnabled(boolean);
-    method public void setCounterMaxLength(int);
-    method public void setError(java.lang.CharSequence);
-    method public void setErrorEnabled(boolean);
-    method public void setErrorTextAppearance(int);
-    method public void setHint(java.lang.CharSequence);
-    method public void setHintAnimationEnabled(boolean);
-    method public void setHintEnabled(boolean);
-    method public void setHintTextAppearance(int);
-    method public void setPasswordVisibilityToggleContentDescription(int);
-    method public void setPasswordVisibilityToggleContentDescription(java.lang.CharSequence);
-    method public void setPasswordVisibilityToggleDrawable(int);
-    method public void setPasswordVisibilityToggleDrawable(android.graphics.drawable.Drawable);
-    method public void setPasswordVisibilityToggleEnabled(boolean);
-    method public void setPasswordVisibilityToggleTintList(android.content.res.ColorStateList);
-    method public void setPasswordVisibilityToggleTintMode(android.graphics.PorterDuff.Mode);
-    method public void setTypeface(android.graphics.Typeface);
-  }
-
-   class ViewOffsetBehavior<V extends android.view.View> extends android.support.design.widget.CoordinatorLayout.Behavior {
-    ctor public ViewOffsetBehavior();
-    ctor public ViewOffsetBehavior(android.content.Context, android.util.AttributeSet);
-    method public int getLeftAndRightOffset();
-    method public int getTopAndBottomOffset();
-    method protected void layoutChild(android.support.design.widget.CoordinatorLayout, V, int);
-    method public boolean setLeftAndRightOffset(int);
-    method public boolean setTopAndBottomOffset(int);
-  }
-
-   class VisibilityAwareImageButton extends android.widget.ImageButton {
-    ctor public VisibilityAwareImageButton(android.content.Context);
-    ctor public VisibilityAwareImageButton(android.content.Context, android.util.AttributeSet);
-    ctor public VisibilityAwareImageButton(android.content.Context, android.util.AttributeSet, int);
-  }
-
-}
-
-package android.support.graphics.drawable {
-
-  public abstract interface Animatable2Compat {
-    method public abstract void clearAnimationCallbacks();
-    method public abstract void registerAnimationCallback(android.support.graphics.drawable.Animatable2Compat.AnimationCallback);
-    method public abstract boolean unregisterAnimationCallback(android.support.graphics.drawable.Animatable2Compat.AnimationCallback);
-  }
-
-  public static abstract class Animatable2Compat.AnimationCallback {
-    ctor public Animatable2Compat.AnimationCallback();
-    method public void onAnimationEnd(android.graphics.drawable.Drawable);
-    method public void onAnimationStart(android.graphics.drawable.Drawable);
-  }
-
-  public class AnimatedVectorDrawableCompat extends android.support.graphics.drawable.VectorDrawableCommon implements android.support.graphics.drawable.Animatable2Compat {
-    method public void clearAnimationCallbacks();
-    method public static void clearAnimationCallbacks(android.graphics.drawable.Drawable);
-    method public static android.support.graphics.drawable.AnimatedVectorDrawableCompat create(android.content.Context, int);
-    method public static android.support.graphics.drawable.AnimatedVectorDrawableCompat createFromXmlInner(android.content.Context, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public boolean isRunning();
-    method public void registerAnimationCallback(android.support.graphics.drawable.Animatable2Compat.AnimationCallback);
-    method public static void registerAnimationCallback(android.graphics.drawable.Drawable, android.support.graphics.drawable.Animatable2Compat.AnimationCallback);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void start();
-    method public void stop();
-    method public boolean unregisterAnimationCallback(android.support.graphics.drawable.Animatable2Compat.AnimationCallback);
-    method public static boolean unregisterAnimationCallback(android.graphics.drawable.Drawable, android.support.graphics.drawable.Animatable2Compat.AnimationCallback);
-  }
-
-   abstract class VectorDrawableCommon extends android.graphics.drawable.Drawable {
-  }
-
-  public class VectorDrawableCompat extends android.support.graphics.drawable.VectorDrawableCommon {
-    method public static android.support.graphics.drawable.VectorDrawableCompat create(android.content.res.Resources, int, android.content.res.Resources.Theme);
-    method public static android.support.graphics.drawable.VectorDrawableCompat createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-  }
-
-}
-
-package android.support.media {
-
-  public class ExifInterface {
-    ctor public ExifInterface(java.lang.String) throws java.io.IOException;
-    ctor public ExifInterface(java.io.InputStream) throws java.io.IOException;
-    method public double getAltitude(double);
-    method public java.lang.String getAttribute(java.lang.String);
-    method public double getAttributeDouble(java.lang.String, double);
-    method public int getAttributeInt(java.lang.String, int);
-    method public deprecated boolean getLatLong(float[]);
-    method public double[] getLatLong();
-    method public byte[] getThumbnail();
-    method public android.graphics.Bitmap getThumbnailBitmap();
-    method public byte[] getThumbnailBytes();
-    method public long[] getThumbnailRange();
-    method public boolean hasThumbnail();
-    method public boolean isThumbnailCompressed();
-    method public void saveAttributes() throws java.io.IOException;
-    method public void setAttribute(java.lang.String, java.lang.String);
-    method public void setLatLong(double, double);
-    field public static final int ORIENTATION_FLIP_HORIZONTAL = 2; // 0x2
-    field public static final int ORIENTATION_FLIP_VERTICAL = 4; // 0x4
-    field public static final int ORIENTATION_NORMAL = 1; // 0x1
-    field public static final int ORIENTATION_ROTATE_180 = 3; // 0x3
-    field public static final int ORIENTATION_ROTATE_270 = 8; // 0x8
-    field public static final int ORIENTATION_ROTATE_90 = 6; // 0x6
-    field public static final int ORIENTATION_TRANSPOSE = 5; // 0x5
-    field public static final int ORIENTATION_TRANSVERSE = 7; // 0x7
-    field public static final int ORIENTATION_UNDEFINED = 0; // 0x0
-    field public static final java.lang.String TAG_APERTURE_VALUE = "ApertureValue";
-    field public static final java.lang.String TAG_ARTIST = "Artist";
-    field public static final java.lang.String TAG_BITS_PER_SAMPLE = "BitsPerSample";
-    field public static final java.lang.String TAG_BRIGHTNESS_VALUE = "BrightnessValue";
-    field public static final java.lang.String TAG_CFA_PATTERN = "CFAPattern";
-    field public static final java.lang.String TAG_COLOR_SPACE = "ColorSpace";
-    field public static final java.lang.String TAG_COMPONENTS_CONFIGURATION = "ComponentsConfiguration";
-    field public static final java.lang.String TAG_COMPRESSED_BITS_PER_PIXEL = "CompressedBitsPerPixel";
-    field public static final java.lang.String TAG_COMPRESSION = "Compression";
-    field public static final java.lang.String TAG_CONTRAST = "Contrast";
-    field public static final java.lang.String TAG_COPYRIGHT = "Copyright";
-    field public static final java.lang.String TAG_CUSTOM_RENDERED = "CustomRendered";
-    field public static final java.lang.String TAG_DATETIME = "DateTime";
-    field public static final java.lang.String TAG_DATETIME_DIGITIZED = "DateTimeDigitized";
-    field public static final java.lang.String TAG_DATETIME_ORIGINAL = "DateTimeOriginal";
-    field public static final java.lang.String TAG_DEFAULT_CROP_SIZE = "DefaultCropSize";
-    field public static final java.lang.String TAG_DEVICE_SETTING_DESCRIPTION = "DeviceSettingDescription";
-    field public static final java.lang.String TAG_DIGITAL_ZOOM_RATIO = "DigitalZoomRatio";
-    field public static final java.lang.String TAG_DNG_VERSION = "DNGVersion";
-    field public static final java.lang.String TAG_EXIF_VERSION = "ExifVersion";
-    field public static final java.lang.String TAG_EXPOSURE_BIAS_VALUE = "ExposureBiasValue";
-    field public static final java.lang.String TAG_EXPOSURE_INDEX = "ExposureIndex";
-    field public static final java.lang.String TAG_EXPOSURE_MODE = "ExposureMode";
-    field public static final java.lang.String TAG_EXPOSURE_PROGRAM = "ExposureProgram";
-    field public static final java.lang.String TAG_EXPOSURE_TIME = "ExposureTime";
-    field public static final java.lang.String TAG_FILE_SOURCE = "FileSource";
-    field public static final java.lang.String TAG_FLASH = "Flash";
-    field public static final java.lang.String TAG_FLASHPIX_VERSION = "FlashpixVersion";
-    field public static final java.lang.String TAG_FLASH_ENERGY = "FlashEnergy";
-    field public static final java.lang.String TAG_FOCAL_LENGTH = "FocalLength";
-    field public static final java.lang.String TAG_FOCAL_LENGTH_IN_35MM_FILM = "FocalLengthIn35mmFilm";
-    field public static final java.lang.String TAG_FOCAL_PLANE_RESOLUTION_UNIT = "FocalPlaneResolutionUnit";
-    field public static final java.lang.String TAG_FOCAL_PLANE_X_RESOLUTION = "FocalPlaneXResolution";
-    field public static final java.lang.String TAG_FOCAL_PLANE_Y_RESOLUTION = "FocalPlaneYResolution";
-    field public static final java.lang.String TAG_F_NUMBER = "FNumber";
-    field public static final java.lang.String TAG_GAIN_CONTROL = "GainControl";
-    field public static final java.lang.String TAG_GPS_ALTITUDE = "GPSAltitude";
-    field public static final java.lang.String TAG_GPS_ALTITUDE_REF = "GPSAltitudeRef";
-    field public static final java.lang.String TAG_GPS_AREA_INFORMATION = "GPSAreaInformation";
-    field public static final java.lang.String TAG_GPS_DATESTAMP = "GPSDateStamp";
-    field public static final java.lang.String TAG_GPS_DEST_BEARING = "GPSDestBearing";
-    field public static final java.lang.String TAG_GPS_DEST_BEARING_REF = "GPSDestBearingRef";
-    field public static final java.lang.String TAG_GPS_DEST_DISTANCE = "GPSDestDistance";
-    field public static final java.lang.String TAG_GPS_DEST_DISTANCE_REF = "GPSDestDistanceRef";
-    field public static final java.lang.String TAG_GPS_DEST_LATITUDE = "GPSDestLatitude";
-    field public static final java.lang.String TAG_GPS_DEST_LATITUDE_REF = "GPSDestLatitudeRef";
-    field public static final java.lang.String TAG_GPS_DEST_LONGITUDE = "GPSDestLongitude";
-    field public static final java.lang.String TAG_GPS_DEST_LONGITUDE_REF = "GPSDestLongitudeRef";
-    field public static final java.lang.String TAG_GPS_DIFFERENTIAL = "GPSDifferential";
-    field public static final java.lang.String TAG_GPS_DOP = "GPSDOP";
-    field public static final java.lang.String TAG_GPS_IMG_DIRECTION = "GPSImgDirection";
-    field public static final java.lang.String TAG_GPS_IMG_DIRECTION_REF = "GPSImgDirectionRef";
-    field public static final java.lang.String TAG_GPS_LATITUDE = "GPSLatitude";
-    field public static final java.lang.String TAG_GPS_LATITUDE_REF = "GPSLatitudeRef";
-    field public static final java.lang.String TAG_GPS_LONGITUDE = "GPSLongitude";
-    field public static final java.lang.String TAG_GPS_LONGITUDE_REF = "GPSLongitudeRef";
-    field public static final java.lang.String TAG_GPS_MAP_DATUM = "GPSMapDatum";
-    field public static final java.lang.String TAG_GPS_MEASURE_MODE = "GPSMeasureMode";
-    field public static final java.lang.String TAG_GPS_PROCESSING_METHOD = "GPSProcessingMethod";
-    field public static final java.lang.String TAG_GPS_SATELLITES = "GPSSatellites";
-    field public static final java.lang.String TAG_GPS_SPEED = "GPSSpeed";
-    field public static final java.lang.String TAG_GPS_SPEED_REF = "GPSSpeedRef";
-    field public static final java.lang.String TAG_GPS_STATUS = "GPSStatus";
-    field public static final java.lang.String TAG_GPS_TIMESTAMP = "GPSTimeStamp";
-    field public static final java.lang.String TAG_GPS_TRACK = "GPSTrack";
-    field public static final java.lang.String TAG_GPS_TRACK_REF = "GPSTrackRef";
-    field public static final java.lang.String TAG_GPS_VERSION_ID = "GPSVersionID";
-    field public static final java.lang.String TAG_IMAGE_DESCRIPTION = "ImageDescription";
-    field public static final java.lang.String TAG_IMAGE_LENGTH = "ImageLength";
-    field public static final java.lang.String TAG_IMAGE_UNIQUE_ID = "ImageUniqueID";
-    field public static final java.lang.String TAG_IMAGE_WIDTH = "ImageWidth";
-    field public static final java.lang.String TAG_INTEROPERABILITY_INDEX = "InteroperabilityIndex";
-    field public static final java.lang.String TAG_ISO_SPEED_RATINGS = "ISOSpeedRatings";
-    field public static final java.lang.String TAG_JPEG_INTERCHANGE_FORMAT = "JPEGInterchangeFormat";
-    field public static final java.lang.String TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = "JPEGInterchangeFormatLength";
-    field public static final java.lang.String TAG_LIGHT_SOURCE = "LightSource";
-    field public static final java.lang.String TAG_MAKE = "Make";
-    field public static final java.lang.String TAG_MAKER_NOTE = "MakerNote";
-    field public static final java.lang.String TAG_MAX_APERTURE_VALUE = "MaxApertureValue";
-    field public static final java.lang.String TAG_METERING_MODE = "MeteringMode";
-    field public static final java.lang.String TAG_MODEL = "Model";
-    field public static final java.lang.String TAG_NEW_SUBFILE_TYPE = "NewSubfileType";
-    field public static final java.lang.String TAG_OECF = "OECF";
-    field public static final java.lang.String TAG_ORF_ASPECT_FRAME = "AspectFrame";
-    field public static final java.lang.String TAG_ORF_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
-    field public static final java.lang.String TAG_ORF_PREVIEW_IMAGE_START = "PreviewImageStart";
-    field public static final java.lang.String TAG_ORF_THUMBNAIL_IMAGE = "ThumbnailImage";
-    field public static final java.lang.String TAG_ORIENTATION = "Orientation";
-    field public static final java.lang.String TAG_PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation";
-    field public static final java.lang.String TAG_PIXEL_X_DIMENSION = "PixelXDimension";
-    field public static final java.lang.String TAG_PIXEL_Y_DIMENSION = "PixelYDimension";
-    field public static final java.lang.String TAG_PLANAR_CONFIGURATION = "PlanarConfiguration";
-    field public static final java.lang.String TAG_PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
-    field public static final java.lang.String TAG_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
-    field public static final java.lang.String TAG_RELATED_SOUND_FILE = "RelatedSoundFile";
-    field public static final java.lang.String TAG_RESOLUTION_UNIT = "ResolutionUnit";
-    field public static final java.lang.String TAG_ROWS_PER_STRIP = "RowsPerStrip";
-    field public static final java.lang.String TAG_RW2_ISO = "ISO";
-    field public static final java.lang.String TAG_RW2_JPG_FROM_RAW = "JpgFromRaw";
-    field public static final java.lang.String TAG_RW2_SENSOR_BOTTOM_BORDER = "SensorBottomBorder";
-    field public static final java.lang.String TAG_RW2_SENSOR_LEFT_BORDER = "SensorLeftBorder";
-    field public static final java.lang.String TAG_RW2_SENSOR_RIGHT_BORDER = "SensorRightBorder";
-    field public static final java.lang.String TAG_RW2_SENSOR_TOP_BORDER = "SensorTopBorder";
-    field public static final java.lang.String TAG_SAMPLES_PER_PIXEL = "SamplesPerPixel";
-    field public static final java.lang.String TAG_SATURATION = "Saturation";
-    field public static final java.lang.String TAG_SCENE_CAPTURE_TYPE = "SceneCaptureType";
-    field public static final java.lang.String TAG_SCENE_TYPE = "SceneType";
-    field public static final java.lang.String TAG_SENSING_METHOD = "SensingMethod";
-    field public static final java.lang.String TAG_SHARPNESS = "Sharpness";
-    field public static final java.lang.String TAG_SHUTTER_SPEED_VALUE = "ShutterSpeedValue";
-    field public static final java.lang.String TAG_SOFTWARE = "Software";
-    field public static final java.lang.String TAG_SPATIAL_FREQUENCY_RESPONSE = "SpatialFrequencyResponse";
-    field public static final java.lang.String TAG_SPECTRAL_SENSITIVITY = "SpectralSensitivity";
-    field public static final java.lang.String TAG_STRIP_BYTE_COUNTS = "StripByteCounts";
-    field public static final java.lang.String TAG_STRIP_OFFSETS = "StripOffsets";
-    field public static final java.lang.String TAG_SUBFILE_TYPE = "SubfileType";
-    field public static final java.lang.String TAG_SUBJECT_AREA = "SubjectArea";
-    field public static final java.lang.String TAG_SUBJECT_DISTANCE = "SubjectDistance";
-    field public static final java.lang.String TAG_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
-    field public static final java.lang.String TAG_SUBJECT_LOCATION = "SubjectLocation";
-    field public static final java.lang.String TAG_SUBSEC_TIME = "SubSecTime";
-    field public static final java.lang.String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
-    field public static final java.lang.String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
-    field public static final java.lang.String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
-    field public static final java.lang.String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
-    field public static final java.lang.String TAG_TRANSFER_FUNCTION = "TransferFunction";
-    field public static final java.lang.String TAG_USER_COMMENT = "UserComment";
-    field public static final java.lang.String TAG_WHITE_BALANCE = "WhiteBalance";
-    field public static final java.lang.String TAG_WHITE_POINT = "WhitePoint";
-    field public static final java.lang.String TAG_X_RESOLUTION = "XResolution";
-    field public static final java.lang.String TAG_Y_CB_CR_COEFFICIENTS = "YCbCrCoefficients";
-    field public static final java.lang.String TAG_Y_CB_CR_POSITIONING = "YCbCrPositioning";
-    field public static final java.lang.String TAG_Y_CB_CR_SUB_SAMPLING = "YCbCrSubSampling";
-    field public static final java.lang.String TAG_Y_RESOLUTION = "YResolution";
-    field public static final int WHITEBALANCE_AUTO = 0; // 0x0
-    field public static final int WHITEBALANCE_MANUAL = 1; // 0x1
-  }
-
-}
-
-package android.support.percent {
-
-  public class PercentFrameLayout extends android.widget.FrameLayout {
-    ctor public PercentFrameLayout(android.content.Context);
-    ctor public PercentFrameLayout(android.content.Context, android.util.AttributeSet);
-    ctor public PercentFrameLayout(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public static class PercentFrameLayout.LayoutParams extends android.widget.FrameLayout.LayoutParams implements android.support.percent.PercentLayoutHelper.PercentLayoutParams {
-    ctor public PercentFrameLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public PercentFrameLayout.LayoutParams(int, int);
-    ctor public PercentFrameLayout.LayoutParams(int, int, int);
-    ctor public PercentFrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public PercentFrameLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public PercentFrameLayout.LayoutParams(android.widget.FrameLayout.LayoutParams);
-    ctor public PercentFrameLayout.LayoutParams(android.support.percent.PercentFrameLayout.LayoutParams);
-    method public android.support.percent.PercentLayoutHelper.PercentLayoutInfo getPercentLayoutInfo();
-  }
-
-  public class PercentLayoutHelper {
-    ctor public PercentLayoutHelper(android.view.ViewGroup);
-    method public void adjustChildren(int, int);
-    method public static void fetchWidthAndHeight(android.view.ViewGroup.LayoutParams, android.content.res.TypedArray, int, int);
-    method public static android.support.percent.PercentLayoutHelper.PercentLayoutInfo getPercentLayoutInfo(android.content.Context, android.util.AttributeSet);
-    method public boolean handleMeasuredStateTooSmall();
-    method public void restoreOriginalParams();
-  }
-
-  public static class PercentLayoutHelper.PercentLayoutInfo {
-    ctor public PercentLayoutHelper.PercentLayoutInfo();
-    method public void fillLayoutParams(android.view.ViewGroup.LayoutParams, int, int);
-    method public deprecated void fillMarginLayoutParams(android.view.ViewGroup.MarginLayoutParams, int, int);
-    method public void fillMarginLayoutParams(android.view.View, android.view.ViewGroup.MarginLayoutParams, int, int);
-    method public void restoreLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public void restoreMarginLayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    field public float aspectRatio;
-    field public float bottomMarginPercent;
-    field public float endMarginPercent;
-    field public float heightPercent;
-    field public float leftMarginPercent;
-    field public float rightMarginPercent;
-    field public float startMarginPercent;
-    field public float topMarginPercent;
-    field public float widthPercent;
-  }
-
-  public static abstract interface PercentLayoutHelper.PercentLayoutParams {
-    method public abstract android.support.percent.PercentLayoutHelper.PercentLayoutInfo getPercentLayoutInfo();
-  }
-
-  public class PercentRelativeLayout extends android.widget.RelativeLayout {
-    ctor public PercentRelativeLayout(android.content.Context);
-    ctor public PercentRelativeLayout(android.content.Context, android.util.AttributeSet);
-    ctor public PercentRelativeLayout(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public static class PercentRelativeLayout.LayoutParams extends android.widget.RelativeLayout.LayoutParams implements android.support.percent.PercentLayoutHelper.PercentLayoutParams {
-    ctor public PercentRelativeLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public PercentRelativeLayout.LayoutParams(int, int);
-    ctor public PercentRelativeLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public PercentRelativeLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    method public android.support.percent.PercentLayoutHelper.PercentLayoutInfo getPercentLayoutInfo();
-  }
-
-}
-
-package android.support.transition {
-
-  public class AutoTransition extends android.support.transition.TransitionSet {
-    ctor public AutoTransition();
-  }
-
-  public class ChangeBounds extends android.support.transition.Transition {
-    ctor public ChangeBounds();
-    method public void captureEndValues(android.support.transition.TransitionValues);
-    method public void captureStartValues(android.support.transition.TransitionValues);
-    method public void setResizeClip(boolean);
-  }
-
-  public class Fade extends android.support.transition.Visibility {
-    ctor public Fade(int);
-    ctor public Fade();
-    field public static final int IN = 1; // 0x1
-    field public static final int OUT = 2; // 0x2
-  }
-
-  public class Scene {
-    ctor public Scene(android.view.ViewGroup);
-    ctor public Scene(android.view.ViewGroup, android.view.View);
-    method public void enter();
-    method public void exit();
-    method public static android.support.transition.Scene getSceneForLayout(android.view.ViewGroup, int, android.content.Context);
-    method public android.view.ViewGroup getSceneRoot();
-    method public void setEnterAction(java.lang.Runnable);
-    method public void setExitAction(java.lang.Runnable);
-  }
-
-  public abstract class Transition {
-    ctor public Transition();
-    method public android.support.transition.Transition addListener(android.support.transition.Transition.TransitionListener);
-    method public android.support.transition.Transition addTarget(android.view.View);
-    method public android.support.transition.Transition addTarget(int);
-    method public abstract void captureEndValues(android.support.transition.TransitionValues);
-    method public abstract void captureStartValues(android.support.transition.TransitionValues);
-    method public android.animation.Animator createAnimator(android.view.ViewGroup, android.support.transition.TransitionValues, android.support.transition.TransitionValues);
-    method public android.support.transition.Transition excludeChildren(android.view.View, boolean);
-    method public android.support.transition.Transition excludeChildren(int, boolean);
-    method public android.support.transition.Transition excludeChildren(java.lang.Class, boolean);
-    method public android.support.transition.Transition excludeTarget(android.view.View, boolean);
-    method public android.support.transition.Transition excludeTarget(int, boolean);
-    method public android.support.transition.Transition excludeTarget(java.lang.Class, boolean);
-    method public long getDuration();
-    method public android.animation.TimeInterpolator getInterpolator();
-    method public java.lang.String getName();
-    method public long getStartDelay();
-    method public java.util.List<java.lang.Integer> getTargetIds();
-    method public java.util.List<android.view.View> getTargets();
-    method public java.lang.String[] getTransitionProperties();
-    method public android.support.transition.TransitionValues getTransitionValues(android.view.View, boolean);
-    method public android.support.transition.Transition removeListener(android.support.transition.Transition.TransitionListener);
-    method public android.support.transition.Transition removeTarget(android.view.View);
-    method public android.support.transition.Transition removeTarget(int);
-    method public android.support.transition.Transition setDuration(long);
-    method public android.support.transition.Transition setInterpolator(android.animation.TimeInterpolator);
-    method public android.support.transition.Transition setStartDelay(long);
-  }
-
-  public static abstract interface Transition.TransitionListener {
-    method public abstract void onTransitionCancel(android.support.transition.Transition);
-    method public abstract void onTransitionEnd(android.support.transition.Transition);
-    method public abstract void onTransitionPause(android.support.transition.Transition);
-    method public abstract void onTransitionResume(android.support.transition.Transition);
-    method public abstract void onTransitionStart(android.support.transition.Transition);
-  }
-
-  public class TransitionManager {
-    ctor public TransitionManager();
-    method public static void beginDelayedTransition(android.view.ViewGroup);
-    method public static void beginDelayedTransition(android.view.ViewGroup, android.support.transition.Transition);
-    method public static void go(android.support.transition.Scene);
-    method public static void go(android.support.transition.Scene, android.support.transition.Transition);
-    method public void setTransition(android.support.transition.Scene, android.support.transition.Transition);
-    method public void setTransition(android.support.transition.Scene, android.support.transition.Scene, android.support.transition.Transition);
-    method public void transitionTo(android.support.transition.Scene);
-  }
-
-  public class TransitionSet extends android.support.transition.Transition {
-    ctor public TransitionSet();
-    method public android.support.transition.TransitionSet addTransition(android.support.transition.Transition);
-    method public void captureEndValues(android.support.transition.TransitionValues);
-    method public void captureStartValues(android.support.transition.TransitionValues);
-    method public int getOrdering();
-    method public android.support.transition.TransitionSet removeTransition(android.support.transition.Transition);
-    method public android.support.transition.TransitionSet setOrdering(int);
-    field public static final int ORDERING_SEQUENTIAL = 1; // 0x1
-    field public static final int ORDERING_TOGETHER = 0; // 0x0
-  }
-
-  public class TransitionValues {
-    ctor public TransitionValues();
-    field public final java.util.Map<java.lang.String, java.lang.Object> values;
-    field public android.view.View view;
-  }
-
-  public abstract class Visibility extends android.support.transition.Transition {
-    ctor public Visibility();
-    method public void captureEndValues(android.support.transition.TransitionValues);
-    method public void captureStartValues(android.support.transition.TransitionValues);
-    method public boolean isVisible(android.support.transition.TransitionValues);
-    method public android.animation.Animator onAppear(android.view.ViewGroup, android.support.transition.TransitionValues, int, android.support.transition.TransitionValues, int);
-    method public android.animation.Animator onDisappear(android.view.ViewGroup, android.support.transition.TransitionValues, int, android.support.transition.TransitionValues, int);
-  }
-
-}
-
-package android.support.v13.app {
-
-  public class ActivityCompat extends android.support.v4.app.ActivityCompat {
-    ctor protected ActivityCompat();
-    method public static android.support.v13.view.DragAndDropPermissionsCompat requestDragAndDropPermissions(android.app.Activity, android.view.DragEvent);
-  }
-
-  public class FragmentCompat {
-    ctor public FragmentCompat();
-    method public static void requestPermissions(android.app.Fragment, java.lang.String[], int);
-    method public static void setMenuVisibility(android.app.Fragment, boolean);
-    method public static void setUserVisibleHint(android.app.Fragment, boolean);
-    method public static boolean shouldShowRequestPermissionRationale(android.app.Fragment, java.lang.String);
-  }
-
-  public static abstract interface FragmentCompat.OnRequestPermissionsResultCallback {
-    method public abstract void onRequestPermissionsResult(int, java.lang.String[], int[]);
-  }
-
-  public abstract class FragmentPagerAdapter extends android.support.v4.view.PagerAdapter {
-    ctor public FragmentPagerAdapter(android.app.FragmentManager);
-    method public abstract android.app.Fragment getItem(int);
-    method public long getItemId(int);
-    method public boolean isViewFromObject(android.view.View, java.lang.Object);
-  }
-
-  public abstract class FragmentStatePagerAdapter extends android.support.v4.view.PagerAdapter {
-    ctor public FragmentStatePagerAdapter(android.app.FragmentManager);
-    method public abstract android.app.Fragment getItem(int);
-    method public boolean isViewFromObject(android.view.View, java.lang.Object);
-  }
-
-  public class FragmentTabHost extends android.widget.TabHost implements android.widget.TabHost.OnTabChangeListener {
-    ctor public FragmentTabHost(android.content.Context);
-    ctor public FragmentTabHost(android.content.Context, android.util.AttributeSet);
-    method public void addTab(android.widget.TabHost.TabSpec, java.lang.Class<?>, android.os.Bundle);
-    method public void onTabChanged(java.lang.String);
-    method public void setup(android.content.Context, android.app.FragmentManager);
-    method public void setup(android.content.Context, android.app.FragmentManager, int);
-  }
-
-}
-
-package android.support.v13.view {
-
-  public final class DragAndDropPermissionsCompat {
-    method public void release();
-  }
-
-  public class DragStartHelper {
-    ctor public DragStartHelper(android.view.View, android.support.v13.view.DragStartHelper.OnDragStartListener);
-    method public void attach();
-    method public void detach();
-    method public void getTouchPosition(android.graphics.Point);
-    method public boolean onLongClick(android.view.View);
-    method public boolean onTouch(android.view.View, android.view.MotionEvent);
-  }
-
-  public static abstract interface DragStartHelper.OnDragStartListener {
-    method public abstract boolean onDragStart(android.view.View, android.support.v13.view.DragStartHelper);
-  }
-
-  public class ViewCompat extends android.support.v4.view.ViewCompat {
-    method public static void cancelDragAndDrop(android.view.View);
-    method public static boolean startDragAndDrop(android.view.View, android.content.ClipData, android.view.View.DragShadowBuilder, java.lang.Object, int);
-    method public static void updateDragShadow(android.view.View, android.view.View.DragShadowBuilder);
-  }
-
-}
-
-package android.support.v13.view.inputmethod {
-
-  public final class EditorInfoCompat {
-    ctor public EditorInfoCompat();
-    method public static java.lang.String[] getContentMimeTypes(android.view.inputmethod.EditorInfo);
-    method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, java.lang.String[]);
-  }
-
-  public final class InputConnectionCompat {
-    ctor public InputConnectionCompat();
-    method public static boolean commitContent(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, android.support.v13.view.inputmethod.InputContentInfoCompat, int, android.os.Bundle);
-    method public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, android.support.v13.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
-    field public static int INPUT_CONTENT_GRANT_READ_URI_PERMISSION;
-  }
-
-  public static abstract interface InputConnectionCompat.OnCommitContentListener {
-    method public abstract boolean onCommitContent(android.support.v13.view.inputmethod.InputContentInfoCompat, int, android.os.Bundle);
-  }
-
-  public final class InputContentInfoCompat {
-    ctor public InputContentInfoCompat(android.net.Uri, android.content.ClipDescription, android.net.Uri);
-    method public android.net.Uri getContentUri();
-    method public android.content.ClipDescription getDescription();
-    method public android.net.Uri getLinkUri();
-    method public void releasePermission();
-    method public void requestPermission();
-    method public java.lang.Object unwrap();
-    method public static android.support.v13.view.inputmethod.InputContentInfoCompat wrap(java.lang.Object);
-  }
-
-}
-
-package android.support.v14.preference {
-
-  public class EditTextPreferenceDialogFragment extends android.support.v14.preference.PreferenceDialogFragment {
-    ctor public EditTextPreferenceDialogFragment();
-    method public static android.support.v14.preference.EditTextPreferenceDialogFragment newInstance(java.lang.String);
-    method public void onDialogClosed(boolean);
-  }
-
-  public class ListPreferenceDialogFragment extends android.support.v14.preference.PreferenceDialogFragment {
-    ctor public ListPreferenceDialogFragment();
-    method public static android.support.v14.preference.ListPreferenceDialogFragment newInstance(java.lang.String);
-    method public void onDialogClosed(boolean);
-  }
-
-  public class MultiSelectListPreference extends android.support.v7.preference.DialogPreference {
-    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet);
-    ctor public MultiSelectListPreference(android.content.Context);
-    method public int findIndexOfValue(java.lang.String);
-    method public java.lang.CharSequence[] getEntries();
-    method public java.lang.CharSequence[] getEntryValues();
-    method protected boolean[] getSelectedItems();
-    method public java.util.Set<java.lang.String> getValues();
-    method public void setEntries(java.lang.CharSequence[]);
-    method public void setEntries(int);
-    method public void setEntryValues(java.lang.CharSequence[]);
-    method public void setEntryValues(int);
-    method public void setValues(java.util.Set<java.lang.String>);
-  }
-
-  public class MultiSelectListPreferenceDialogFragment extends android.support.v14.preference.PreferenceDialogFragment {
-    ctor public MultiSelectListPreferenceDialogFragment();
-    method public static android.support.v14.preference.MultiSelectListPreferenceDialogFragment newInstance(java.lang.String);
-    method public void onDialogClosed(boolean);
-  }
-
-  public abstract class PreferenceDialogFragment extends android.app.DialogFragment implements android.content.DialogInterface.OnClickListener {
-    ctor public PreferenceDialogFragment();
-    method public android.support.v7.preference.DialogPreference getPreference();
-    method protected void onBindDialogView(android.view.View);
-    method public void onClick(android.content.DialogInterface, int);
-    method protected android.view.View onCreateDialogView(android.content.Context);
-    method public abstract void onDialogClosed(boolean);
-    method protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder);
-    field protected static final java.lang.String ARG_KEY = "key";
-  }
-
-  public abstract class PreferenceFragment extends android.app.Fragment implements android.support.v7.preference.DialogPreference.TargetFragment android.support.v7.preference.PreferenceManager.OnDisplayPreferenceDialogListener android.support.v7.preference.PreferenceManager.OnNavigateToScreenListener android.support.v7.preference.PreferenceManager.OnPreferenceTreeClickListener {
-    ctor public PreferenceFragment();
-    method public void addPreferencesFromResource(int);
-    method public android.support.v7.preference.Preference findPreference(java.lang.CharSequence);
-    method public final android.support.v7.widget.RecyclerView getListView();
-    method public android.support.v7.preference.PreferenceManager getPreferenceManager();
-    method public android.support.v7.preference.PreferenceScreen getPreferenceScreen();
-    method protected android.support.v7.widget.RecyclerView.Adapter onCreateAdapter(android.support.v7.preference.PreferenceScreen);
-    method public android.support.v7.widget.RecyclerView.LayoutManager onCreateLayoutManager();
-    method public abstract void onCreatePreferences(android.os.Bundle, java.lang.String);
-    method public android.support.v7.widget.RecyclerView onCreateRecyclerView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onDisplayPreferenceDialog(android.support.v7.preference.Preference);
-    method public void onNavigateToScreen(android.support.v7.preference.PreferenceScreen);
-    method public boolean onPreferenceTreeClick(android.support.v7.preference.Preference);
-    method public void scrollToPreference(java.lang.String);
-    method public void scrollToPreference(android.support.v7.preference.Preference);
-    method public void setDivider(android.graphics.drawable.Drawable);
-    method public void setDividerHeight(int);
-    method public void setPreferenceScreen(android.support.v7.preference.PreferenceScreen);
-    method public void setPreferencesFromResource(int, java.lang.String);
-    field public static final java.lang.String ARG_PREFERENCE_ROOT = "android.support.v7.preference.PreferenceFragmentCompat.PREFERENCE_ROOT";
-  }
-
-  public static abstract interface PreferenceFragment.OnPreferenceDisplayDialogCallback {
-    method public abstract boolean onPreferenceDisplayDialog(android.support.v14.preference.PreferenceFragment, android.support.v7.preference.Preference);
-  }
-
-  public static abstract interface PreferenceFragment.OnPreferenceStartFragmentCallback {
-    method public abstract boolean onPreferenceStartFragment(android.support.v14.preference.PreferenceFragment, android.support.v7.preference.Preference);
-  }
-
-  public static abstract interface PreferenceFragment.OnPreferenceStartScreenCallback {
-    method public abstract boolean onPreferenceStartScreen(android.support.v14.preference.PreferenceFragment, android.support.v7.preference.PreferenceScreen);
-  }
-
-  public class SwitchPreference extends android.support.v7.preference.TwoStatePreference {
-    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet);
-    ctor public SwitchPreference(android.content.Context);
-    method public java.lang.CharSequence getSwitchTextOff();
-    method public java.lang.CharSequence getSwitchTextOn();
-    method public void setSwitchTextOff(java.lang.CharSequence);
-    method public void setSwitchTextOff(int);
-    method public void setSwitchTextOn(java.lang.CharSequence);
-    method public void setSwitchTextOn(int);
-  }
-
-}
-
-package android.support.v17.leanback.app {
-
-  public final class BackgroundManager {
-    method public void attach(android.view.Window);
-    method public void attachToView(android.view.View);
-    method public void clearDrawable();
-    method public final int getColor();
-    method public deprecated android.graphics.drawable.Drawable getDefaultDimLayer();
-    method public deprecated android.graphics.drawable.Drawable getDimLayer();
-    method public android.graphics.drawable.Drawable getDrawable();
-    method public static android.support.v17.leanback.app.BackgroundManager getInstance(android.app.Activity);
-    method public boolean isAttached();
-    method public boolean isAutoReleaseOnStop();
-    method public void release();
-    method public void setAutoReleaseOnStop(boolean);
-    method public void setBitmap(android.graphics.Bitmap);
-    method public void setColor(int);
-    method public deprecated void setDimLayer(android.graphics.drawable.Drawable);
-    method public void setDrawable(android.graphics.drawable.Drawable);
-    method public void setThemeDrawableResourceId(int);
-  }
-
-   abstract class BaseRowFragment extends android.app.Fragment {
-    method public final android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public final android.support.v17.leanback.widget.PresenterSelector getPresenterSelector();
-    method public int getSelectedPosition();
-    method public final android.support.v17.leanback.widget.VerticalGridView getVerticalGridView();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void onTransitionStart();
-    method public final void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setAlignment(int);
-    method public final void setPresenterSelector(android.support.v17.leanback.widget.PresenterSelector);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-  }
-
-   abstract class BaseRowSupportFragment extends android.support.v4.app.Fragment {
-    method public final android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public final android.support.v17.leanback.widget.PresenterSelector getPresenterSelector();
-    method public int getSelectedPosition();
-    method public final android.support.v17.leanback.widget.VerticalGridView getVerticalGridView();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void onTransitionStart();
-    method public final void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setAlignment(int);
-    method public final void setPresenterSelector(android.support.v17.leanback.widget.PresenterSelector);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-  }
-
-  public class BrandedFragment extends android.app.Fragment {
-    ctor public BrandedFragment();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public int getSearchAffordanceColor();
-    method public android.support.v17.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public java.lang.CharSequence getTitle();
-    method public android.view.View getTitleView();
-    method public android.support.v17.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void installTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public final boolean isShowingTitle();
-    method public android.view.View onInflateTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColor(int);
-    method public void setSearchAffordanceColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleView(android.view.View);
-    method public void showTitle(boolean);
-    method public void showTitle(int);
-  }
-
-  public class BrandedSupportFragment extends android.support.v4.app.Fragment {
-    ctor public BrandedSupportFragment();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public int getSearchAffordanceColor();
-    method public android.support.v17.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public java.lang.CharSequence getTitle();
-    method public android.view.View getTitleView();
-    method public android.support.v17.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void installTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public final boolean isShowingTitle();
-    method public android.view.View onInflateTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColor(int);
-    method public void setSearchAffordanceColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleView(android.view.View);
-    method public void showTitle(boolean);
-    method public void showTitle(int);
-  }
-
-  public class BrowseFragment extends android.support.v17.leanback.app.BrandedFragment {
-    ctor public BrowseFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, int);
-    method protected java.lang.Object createEntranceTransition();
-    method public void enableMainFragmentScaling(boolean);
-    method public deprecated void enableRowScaling(boolean);
-    method public android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBrandColor();
-    method public android.support.v17.leanback.app.HeadersFragment getHeadersFragment();
-    method public int getHeadersState();
-    method public android.app.Fragment getMainFragment();
-    method public final android.support.v17.leanback.app.BrowseFragment.MainFragmentAdapterRegistry getMainFragmentRegistry();
-    method public android.support.v17.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public android.support.v17.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public android.support.v17.leanback.app.RowsFragment getRowsFragment();
-    method public int getSelectedPosition();
-    method public android.support.v17.leanback.widget.RowPresenter.ViewHolder getSelectedRowViewHolder();
-    method public final boolean isHeadersTransitionOnBackEnabled();
-    method public boolean isInHeadersTransition();
-    method public boolean isShowingHeaders();
-    method public android.support.v17.leanback.app.HeadersFragment onCreateHeadersFragment();
-    method protected void onEntranceTransitionEnd();
-    method protected void onEntranceTransitionPrepare();
-    method protected void onEntranceTransitionStart();
-    method protected void runEntranceTransition(java.lang.Object);
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setBrandColor(int);
-    method public void setBrowseTransitionListener(android.support.v17.leanback.app.BrowseFragment.BrowseTransitionListener);
-    method public void setHeaderPresenterSelector(android.support.v17.leanback.widget.PresenterSelector);
-    method public void setHeadersState(int);
-    method public final void setHeadersTransitionOnBackEnabled(boolean);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask);
-    method public void startHeadersTransition(boolean);
-    field public static final int HEADERS_DISABLED = 3; // 0x3
-    field public static final int HEADERS_ENABLED = 1; // 0x1
-    field public static final int HEADERS_HIDDEN = 2; // 0x2
-  }
-
-  public static class BrowseFragment.BrowseTransitionListener {
-    ctor public BrowseFragment.BrowseTransitionListener();
-    method public void onHeadersTransitionStart(boolean);
-    method public void onHeadersTransitionStop(boolean);
-  }
-
-  public static abstract class BrowseFragment.FragmentFactory<T extends android.app.Fragment> {
-    ctor public BrowseFragment.FragmentFactory();
-    method public abstract T createFragment(java.lang.Object);
-  }
-
-  public static abstract interface BrowseFragment.FragmentHost {
-    method public abstract void notifyDataReady(android.support.v17.leanback.app.BrowseFragment.MainFragmentAdapter);
-    method public abstract void notifyViewCreated(android.support.v17.leanback.app.BrowseFragment.MainFragmentAdapter);
-    method public abstract void showTitleView(boolean);
-  }
-
-  public static class BrowseFragment.ListRowFragmentFactory extends android.support.v17.leanback.app.BrowseFragment.FragmentFactory {
-    ctor public BrowseFragment.ListRowFragmentFactory();
-    method public android.support.v17.leanback.app.RowsFragment createFragment(java.lang.Object);
-  }
-
-  public static class BrowseFragment.MainFragmentAdapter<T extends android.app.Fragment> {
-    ctor public BrowseFragment.MainFragmentAdapter(T);
-    method public final T getFragment();
-    method public final android.support.v17.leanback.app.BrowseFragment.FragmentHost getFragmentHost();
-    method public boolean isScalingEnabled();
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void onTransitionStart();
-    method public void setAlignment(int);
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setScalingEnabled(boolean);
-  }
-
-  public static abstract interface BrowseFragment.MainFragmentAdapterProvider {
-    method public abstract android.support.v17.leanback.app.BrowseFragment.MainFragmentAdapter getMainFragmentAdapter();
-  }
-
-  public static final class BrowseFragment.MainFragmentAdapterRegistry {
-    ctor public BrowseFragment.MainFragmentAdapterRegistry();
-    method public android.app.Fragment createFragment(java.lang.Object);
-    method public void registerFragment(java.lang.Class, android.support.v17.leanback.app.BrowseFragment.FragmentFactory);
-  }
-
-  public static class BrowseFragment.MainFragmentRowsAdapter<T extends android.app.Fragment> {
-    ctor public BrowseFragment.MainFragmentRowsAdapter(T);
-    method public android.support.v17.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public final T getFragment();
-    method public int getSelectedPosition();
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask);
-    method public void setSelectedPosition(int, boolean);
-  }
-
-  public static abstract interface BrowseFragment.MainFragmentRowsAdapterProvider {
-    method public abstract android.support.v17.leanback.app.BrowseFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-  }
-
-  public class BrowseSupportFragment extends android.support.v17.leanback.app.BrandedSupportFragment {
-    ctor public BrowseSupportFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, int);
-    method protected java.lang.Object createEntranceTransition();
-    method public void enableMainFragmentScaling(boolean);
-    method public deprecated void enableRowScaling(boolean);
-    method public android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBrandColor();
-    method public int getHeadersState();
-    method public android.support.v17.leanback.app.HeadersSupportFragment getHeadersSupportFragment();
-    method public android.support.v4.app.Fragment getMainFragment();
-    method public final android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentAdapterRegistry getMainFragmentRegistry();
-    method public android.support.v17.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public android.support.v17.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public android.support.v17.leanback.app.RowsSupportFragment getRowsSupportFragment();
-    method public int getSelectedPosition();
-    method public android.support.v17.leanback.widget.RowPresenter.ViewHolder getSelectedRowViewHolder();
-    method public final boolean isHeadersTransitionOnBackEnabled();
-    method public boolean isInHeadersTransition();
-    method public boolean isShowingHeaders();
-    method public android.support.v17.leanback.app.HeadersSupportFragment onCreateHeadersSupportFragment();
-    method protected void onEntranceTransitionEnd();
-    method protected void onEntranceTransitionPrepare();
-    method protected void onEntranceTransitionStart();
-    method protected void runEntranceTransition(java.lang.Object);
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setBrandColor(int);
-    method public void setBrowseTransitionListener(android.support.v17.leanback.app.BrowseSupportFragment.BrowseTransitionListener);
-    method public void setHeaderPresenterSelector(android.support.v17.leanback.widget.PresenterSelector);
-    method public void setHeadersState(int);
-    method public final void setHeadersTransitionOnBackEnabled(boolean);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask);
-    method public void startHeadersTransition(boolean);
-    field public static final int HEADERS_DISABLED = 3; // 0x3
-    field public static final int HEADERS_ENABLED = 1; // 0x1
-    field public static final int HEADERS_HIDDEN = 2; // 0x2
-  }
-
-  public static class BrowseSupportFragment.BrowseTransitionListener {
-    ctor public BrowseSupportFragment.BrowseTransitionListener();
-    method public void onHeadersTransitionStart(boolean);
-    method public void onHeadersTransitionStop(boolean);
-  }
-
-  public static abstract class BrowseSupportFragment.FragmentFactory<T extends android.support.v4.app.Fragment> {
-    ctor public BrowseSupportFragment.FragmentFactory();
-    method public abstract T createFragment(java.lang.Object);
-  }
-
-  public static abstract interface BrowseSupportFragment.FragmentHost {
-    method public abstract void notifyDataReady(android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentAdapter);
-    method public abstract void notifyViewCreated(android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentAdapter);
-    method public abstract void showTitleView(boolean);
-  }
-
-  public static class BrowseSupportFragment.ListRowFragmentFactory extends android.support.v17.leanback.app.BrowseSupportFragment.FragmentFactory {
-    ctor public BrowseSupportFragment.ListRowFragmentFactory();
-    method public android.support.v17.leanback.app.RowsSupportFragment createFragment(java.lang.Object);
-  }
-
-  public static class BrowseSupportFragment.MainFragmentAdapter<T extends android.support.v4.app.Fragment> {
-    ctor public BrowseSupportFragment.MainFragmentAdapter(T);
-    method public final T getFragment();
-    method public final android.support.v17.leanback.app.BrowseSupportFragment.FragmentHost getFragmentHost();
-    method public boolean isScalingEnabled();
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void onTransitionStart();
-    method public void setAlignment(int);
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setScalingEnabled(boolean);
-  }
-
-  public static abstract interface BrowseSupportFragment.MainFragmentAdapterProvider {
-    method public abstract android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentAdapter getMainFragmentAdapter();
-  }
-
-  public static final class BrowseSupportFragment.MainFragmentAdapterRegistry {
-    ctor public BrowseSupportFragment.MainFragmentAdapterRegistry();
-    method public android.support.v4.app.Fragment createFragment(java.lang.Object);
-    method public void registerFragment(java.lang.Class, android.support.v17.leanback.app.BrowseSupportFragment.FragmentFactory);
-  }
-
-  public static class BrowseSupportFragment.MainFragmentRowsAdapter<T extends android.support.v4.app.Fragment> {
-    ctor public BrowseSupportFragment.MainFragmentRowsAdapter(T);
-    method public android.support.v17.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public final T getFragment();
-    method public int getSelectedPosition();
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask);
-    method public void setSelectedPosition(int, boolean);
-  }
-
-  public static abstract interface BrowseSupportFragment.MainFragmentRowsAdapterProvider {
-    method public abstract android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-  }
-
-  public class DetailsFragment extends android.support.v17.leanback.app.BrandedFragment {
-    ctor public DetailsFragment();
-    method protected java.lang.Object createEntranceTransition();
-    method public android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public android.support.v17.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public android.support.v17.leanback.widget.DetailsParallax getParallax();
-    method public android.support.v17.leanback.app.RowsFragment getRowsFragment();
-    method protected deprecated android.view.View inflateTitle(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method protected void onEntranceTransitionEnd();
-    method protected void onEntranceTransitionPrepare();
-    method protected void onEntranceTransitionStart();
-    method protected void onSetDetailsOverviewRowStatus(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter, android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int);
-    method protected void onSetRowStatus(android.support.v17.leanback.widget.RowPresenter, android.support.v17.leanback.widget.RowPresenter.ViewHolder, int, int, int);
-    method protected void runEntranceTransition(java.lang.Object);
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method protected void setupDetailsOverviewRowPresenter(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter);
-    method protected void setupPresenter(android.support.v17.leanback.widget.Presenter);
-  }
-
-  public class DetailsFragmentBackgroundController {
-    ctor public DetailsFragmentBackgroundController(android.support.v17.leanback.app.DetailsFragment);
-    method public boolean canNavigateToVideoFragment();
-    method public void enableParallax();
-    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.support.v17.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget);
-    method public final android.app.Fragment findOrCreateVideoFragment();
-    method public final android.graphics.drawable.Drawable getBottomDrawable();
-    method public final android.graphics.Bitmap getCoverBitmap();
-    method public final android.graphics.drawable.Drawable getCoverDrawable();
-    method public final int getParallaxDrawableMaxOffset();
-    method public final android.support.v17.leanback.media.PlaybackGlue getPlaybackGlue();
-    method public final int getSolidColor();
-    method public android.support.v17.leanback.media.PlaybackGlueHost onCreateGlueHost();
-    method public android.app.Fragment onCreateVideoFragment();
-    method public final void setCoverBitmap(android.graphics.Bitmap);
-    method public final void setParallaxDrawableMaxOffset(int);
-    method public final void setSolidColor(int);
-    method public void setupVideoPlayback(android.support.v17.leanback.media.PlaybackGlue);
-    method public final void switchToRows();
-    method public final void switchToVideo();
-  }
-
-  public class DetailsSupportFragment extends android.support.v17.leanback.app.BrandedSupportFragment {
-    ctor public DetailsSupportFragment();
-    method protected java.lang.Object createEntranceTransition();
-    method public android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public android.support.v17.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public android.support.v17.leanback.widget.DetailsParallax getParallax();
-    method public android.support.v17.leanback.app.RowsSupportFragment getRowsSupportFragment();
-    method protected deprecated android.view.View inflateTitle(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method protected void onEntranceTransitionEnd();
-    method protected void onEntranceTransitionPrepare();
-    method protected void onEntranceTransitionStart();
-    method protected void onSetDetailsOverviewRowStatus(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter, android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int);
-    method protected void onSetRowStatus(android.support.v17.leanback.widget.RowPresenter, android.support.v17.leanback.widget.RowPresenter.ViewHolder, int, int, int);
-    method protected void runEntranceTransition(java.lang.Object);
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method protected void setupDetailsOverviewRowPresenter(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter);
-    method protected void setupPresenter(android.support.v17.leanback.widget.Presenter);
-  }
-
-  public class DetailsSupportFragmentBackgroundController {
-    ctor public DetailsSupportFragmentBackgroundController(android.support.v17.leanback.app.DetailsSupportFragment);
-    method public boolean canNavigateToVideoSupportFragment();
-    method public void enableParallax();
-    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.support.v17.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget);
-    method public final android.support.v4.app.Fragment findOrCreateVideoSupportFragment();
-    method public final android.graphics.drawable.Drawable getBottomDrawable();
-    method public final android.graphics.Bitmap getCoverBitmap();
-    method public final android.graphics.drawable.Drawable getCoverDrawable();
-    method public final int getParallaxDrawableMaxOffset();
-    method public final android.support.v17.leanback.media.PlaybackGlue getPlaybackGlue();
-    method public final int getSolidColor();
-    method public android.support.v17.leanback.media.PlaybackGlueHost onCreateGlueHost();
-    method public android.support.v4.app.Fragment onCreateVideoSupportFragment();
-    method public final void setCoverBitmap(android.graphics.Bitmap);
-    method public final void setParallaxDrawableMaxOffset(int);
-    method public final void setSolidColor(int);
-    method public void setupVideoPlayback(android.support.v17.leanback.media.PlaybackGlue);
-    method public final void switchToRows();
-    method public final void switchToVideo();
-  }
-
-  public class ErrorFragment extends android.support.v17.leanback.app.BrandedFragment {
-    ctor public ErrorFragment();
-    method public android.graphics.drawable.Drawable getBackgroundDrawable();
-    method public android.view.View.OnClickListener getButtonClickListener();
-    method public java.lang.String getButtonText();
-    method public android.graphics.drawable.Drawable getImageDrawable();
-    method public java.lang.CharSequence getMessage();
-    method public boolean isBackgroundTranslucent();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setButtonClickListener(android.view.View.OnClickListener);
-    method public void setButtonText(java.lang.String);
-    method public void setDefaultBackground(boolean);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setMessage(java.lang.CharSequence);
-  }
-
-  public class ErrorSupportFragment extends android.support.v17.leanback.app.BrandedSupportFragment {
-    ctor public ErrorSupportFragment();
-    method public android.graphics.drawable.Drawable getBackgroundDrawable();
-    method public android.view.View.OnClickListener getButtonClickListener();
-    method public java.lang.String getButtonText();
-    method public android.graphics.drawable.Drawable getImageDrawable();
-    method public java.lang.CharSequence getMessage();
-    method public boolean isBackgroundTranslucent();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setButtonClickListener(android.view.View.OnClickListener);
-    method public void setButtonText(java.lang.String);
-    method public void setDefaultBackground(boolean);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setMessage(java.lang.CharSequence);
-  }
-
-  public class GuidedStepFragment extends android.app.Fragment {
-    ctor public GuidedStepFragment();
-    method public static int add(android.app.FragmentManager, android.support.v17.leanback.app.GuidedStepFragment);
-    method public static int add(android.app.FragmentManager, android.support.v17.leanback.app.GuidedStepFragment, int);
-    method public static int addAsRoot(android.app.Activity, android.support.v17.leanback.app.GuidedStepFragment, int);
-    method public void collapseAction(boolean);
-    method public void collapseSubActions();
-    method public void expandAction(android.support.v17.leanback.widget.GuidedAction, boolean);
-    method public void expandSubActions(android.support.v17.leanback.widget.GuidedAction);
-    method public android.support.v17.leanback.widget.GuidedAction findActionById(long);
-    method public int findActionPositionById(long);
-    method public android.support.v17.leanback.widget.GuidedAction findButtonActionById(long);
-    method public int findButtonActionPositionById(long);
-    method public void finishGuidedStepFragments();
-    method public android.view.View getActionItemView(int);
-    method public java.util.List<android.support.v17.leanback.widget.GuidedAction> getActions();
-    method public android.view.View getButtonActionItemView(int);
-    method public java.util.List<android.support.v17.leanback.widget.GuidedAction> getButtonActions();
-    method public static android.support.v17.leanback.app.GuidedStepFragment getCurrentGuidedStepFragment(android.app.FragmentManager);
-    method public android.support.v17.leanback.widget.GuidanceStylist getGuidanceStylist();
-    method public android.support.v17.leanback.widget.GuidedActionsStylist getGuidedActionsStylist();
-    method public android.support.v17.leanback.widget.GuidedActionsStylist getGuidedButtonActionsStylist();
-    method public int getSelectedActionPosition();
-    method public int getSelectedButtonActionPosition();
-    method public int getUiStyle();
-    method public boolean isExpanded();
-    method public boolean isFocusOutEndAllowed();
-    method public boolean isFocusOutStartAllowed();
-    method public boolean isSubActionsExpanded();
-    method public void notifyActionChanged(int);
-    method public void notifyButtonActionChanged(int);
-    method protected void onAddSharedElementTransition(android.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepFragment);
-    method public void onCreateActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public android.support.v17.leanback.widget.GuidedActionsStylist onCreateActionsStylist();
-    method public android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onCreateButtonActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public android.support.v17.leanback.widget.GuidedActionsStylist onCreateButtonActionsStylist();
-    method public android.support.v17.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle);
-    method public android.support.v17.leanback.widget.GuidanceStylist onCreateGuidanceStylist();
-    method public void onGuidedActionClicked(android.support.v17.leanback.widget.GuidedAction);
-    method public void onGuidedActionEditCanceled(android.support.v17.leanback.widget.GuidedAction);
-    method public deprecated void onGuidedActionEdited(android.support.v17.leanback.widget.GuidedAction);
-    method public long onGuidedActionEditedAndProceed(android.support.v17.leanback.widget.GuidedAction);
-    method public void onGuidedActionFocused(android.support.v17.leanback.widget.GuidedAction);
-    method protected void onProvideFragmentTransitions();
-    method public int onProvideTheme();
-    method public boolean onSubGuidedActionClicked(android.support.v17.leanback.widget.GuidedAction);
-    method public void popBackStackToGuidedStepFragment(java.lang.Class, int);
-    method public void setActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>);
-    method public void setButtonActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>);
-    method public void setSelectedActionPosition(int);
-    method public void setSelectedButtonActionPosition(int);
-    method public void setUiStyle(int);
-    field public static final java.lang.String EXTRA_UI_STYLE = "uiStyle";
-    field public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
-    field public static final deprecated int UI_STYLE_DEFAULT = 0; // 0x0
-    field public static final int UI_STYLE_ENTRANCE = 1; // 0x1
-    field public static final int UI_STYLE_REPLACE = 0; // 0x0
-  }
-
-  public class GuidedStepSupportFragment extends android.support.v4.app.Fragment {
-    ctor public GuidedStepSupportFragment();
-    method public static int add(android.support.v4.app.FragmentManager, android.support.v17.leanback.app.GuidedStepSupportFragment);
-    method public static int add(android.support.v4.app.FragmentManager, android.support.v17.leanback.app.GuidedStepSupportFragment, int);
-    method public static int addAsRoot(android.support.v4.app.FragmentActivity, android.support.v17.leanback.app.GuidedStepSupportFragment, int);
-    method public void collapseAction(boolean);
-    method public void collapseSubActions();
-    method public void expandAction(android.support.v17.leanback.widget.GuidedAction, boolean);
-    method public void expandSubActions(android.support.v17.leanback.widget.GuidedAction);
-    method public android.support.v17.leanback.widget.GuidedAction findActionById(long);
-    method public int findActionPositionById(long);
-    method public android.support.v17.leanback.widget.GuidedAction findButtonActionById(long);
-    method public int findButtonActionPositionById(long);
-    method public void finishGuidedStepSupportFragments();
-    method public android.view.View getActionItemView(int);
-    method public java.util.List<android.support.v17.leanback.widget.GuidedAction> getActions();
-    method public android.view.View getButtonActionItemView(int);
-    method public java.util.List<android.support.v17.leanback.widget.GuidedAction> getButtonActions();
-    method public static android.support.v17.leanback.app.GuidedStepSupportFragment getCurrentGuidedStepSupportFragment(android.support.v4.app.FragmentManager);
-    method public android.support.v17.leanback.widget.GuidanceStylist getGuidanceStylist();
-    method public android.support.v17.leanback.widget.GuidedActionsStylist getGuidedActionsStylist();
-    method public android.support.v17.leanback.widget.GuidedActionsStylist getGuidedButtonActionsStylist();
-    method public int getSelectedActionPosition();
-    method public int getSelectedButtonActionPosition();
-    method public int getUiStyle();
-    method public boolean isExpanded();
-    method public boolean isFocusOutEndAllowed();
-    method public boolean isFocusOutStartAllowed();
-    method public boolean isSubActionsExpanded();
-    method public void notifyActionChanged(int);
-    method public void notifyButtonActionChanged(int);
-    method protected void onAddSharedElementTransition(android.support.v4.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepSupportFragment);
-    method public void onCreateActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public android.support.v17.leanback.widget.GuidedActionsStylist onCreateActionsStylist();
-    method public android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onCreateButtonActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public android.support.v17.leanback.widget.GuidedActionsStylist onCreateButtonActionsStylist();
-    method public android.support.v17.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle);
-    method public android.support.v17.leanback.widget.GuidanceStylist onCreateGuidanceStylist();
-    method public void onGuidedActionClicked(android.support.v17.leanback.widget.GuidedAction);
-    method public void onGuidedActionEditCanceled(android.support.v17.leanback.widget.GuidedAction);
-    method public deprecated void onGuidedActionEdited(android.support.v17.leanback.widget.GuidedAction);
-    method public long onGuidedActionEditedAndProceed(android.support.v17.leanback.widget.GuidedAction);
-    method public void onGuidedActionFocused(android.support.v17.leanback.widget.GuidedAction);
-    method protected void onProvideFragmentTransitions();
-    method public int onProvideTheme();
-    method public boolean onSubGuidedActionClicked(android.support.v17.leanback.widget.GuidedAction);
-    method public void popBackStackToGuidedStepSupportFragment(java.lang.Class, int);
-    method public void setActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>);
-    method public void setButtonActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>);
-    method public void setSelectedActionPosition(int);
-    method public void setSelectedButtonActionPosition(int);
-    method public void setUiStyle(int);
-    field public static final java.lang.String EXTRA_UI_STYLE = "uiStyle";
-    field public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
-    field public static final deprecated int UI_STYLE_DEFAULT = 0; // 0x0
-    field public static final int UI_STYLE_ENTRANCE = 1; // 0x1
-    field public static final int UI_STYLE_REPLACE = 0; // 0x0
-  }
-
-  public class HeadersFragment extends android.support.v17.leanback.app.BaseRowFragment {
-    ctor public HeadersFragment();
-    method public boolean isScrolling();
-    method public void setOnHeaderClickedListener(android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener);
-    method public void setOnHeaderViewSelectedListener(android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener);
-  }
-
-  public static abstract interface HeadersFragment.OnHeaderClickedListener {
-    method public abstract void onHeaderClicked(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row);
-  }
-
-  public static abstract interface HeadersFragment.OnHeaderViewSelectedListener {
-    method public abstract void onHeaderSelected(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row);
-  }
-
-  public class HeadersSupportFragment extends android.support.v17.leanback.app.BaseRowSupportFragment {
-    ctor public HeadersSupportFragment();
-    method public boolean isScrolling();
-    method public void setOnHeaderClickedListener(android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener);
-    method public void setOnHeaderViewSelectedListener(android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener);
-  }
-
-  public static abstract interface HeadersSupportFragment.OnHeaderClickedListener {
-    method public abstract void onHeaderClicked(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row);
-  }
-
-  public static abstract interface HeadersSupportFragment.OnHeaderViewSelectedListener {
-    method public abstract void onHeaderSelected(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row);
-  }
-
-  public abstract deprecated class MediaControllerGlue extends android.support.v17.leanback.app.PlaybackControlGlue {
-    ctor public MediaControllerGlue(android.content.Context, android.support.v17.leanback.app.PlaybackOverlayFragment, int[]);
-    ctor public MediaControllerGlue(android.content.Context, android.support.v17.leanback.app.PlaybackOverlayFragment, int[], int[]);
-    method public void attachToMediaController(android.support.v4.media.session.MediaControllerCompat);
-    method public void detach();
-    method public int getCurrentPosition();
-    method public int getCurrentSpeedId();
-    method public android.graphics.drawable.Drawable getMediaArt();
-    method public final android.support.v4.media.session.MediaControllerCompat getMediaController();
-    method public int getMediaDuration();
-    method public java.lang.CharSequence getMediaSubtitle();
-    method public java.lang.CharSequence getMediaTitle();
-    method public long getSupportedActions();
-    method public boolean hasValidMedia();
-    method public boolean isMediaPlaying();
-  }
-
-  public abstract class OnboardingFragment extends android.app.Fragment {
-    ctor public OnboardingFragment();
-    method protected final int getCurrentPageIndex();
-    method public final int getLogoResourceId();
-    method protected abstract int getPageCount();
-    method protected abstract java.lang.CharSequence getPageDescription(int);
-    method protected abstract java.lang.CharSequence getPageTitle(int);
-    method protected final boolean isLogoAnimationFinished();
-    method protected void moveToNextPage();
-    method protected void moveToPreviousPage();
-    method protected abstract android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected abstract android.view.View onCreateContentView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateEnterAnimation();
-    method protected abstract android.view.View onCreateForegroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateLogoAnimation();
-    method protected void onFinishFragment();
-    method protected void onLogoAnimationFinished();
-    method protected void onPageChanged(int, int);
-    method public int onProvideTheme();
-    method public final void setLogoResourceId(int);
-  }
-
-  public abstract class OnboardingSupportFragment extends android.support.v4.app.Fragment {
-    ctor public OnboardingSupportFragment();
-    method protected final int getCurrentPageIndex();
-    method public final int getLogoResourceId();
-    method protected abstract int getPageCount();
-    method protected abstract java.lang.CharSequence getPageDescription(int);
-    method protected abstract java.lang.CharSequence getPageTitle(int);
-    method protected final boolean isLogoAnimationFinished();
-    method protected void moveToNextPage();
-    method protected void moveToPreviousPage();
-    method protected abstract android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected abstract android.view.View onCreateContentView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateEnterAnimation();
-    method protected abstract android.view.View onCreateForegroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateLogoAnimation();
-    method protected void onFinishFragment();
-    method protected void onLogoAnimationFinished();
-    method protected void onPageChanged(int, int);
-    method public int onProvideTheme();
-    method public final void setLogoResourceId(int);
-  }
-
-  public abstract deprecated class PlaybackControlGlue extends android.support.v17.leanback.media.PlaybackControlGlue {
-    ctor public PlaybackControlGlue(android.content.Context, int[]);
-    ctor public PlaybackControlGlue(android.content.Context, int[], int[]);
-    ctor public PlaybackControlGlue(android.content.Context, android.support.v17.leanback.app.PlaybackOverlayFragment, int[]);
-    ctor public PlaybackControlGlue(android.content.Context, android.support.v17.leanback.app.PlaybackOverlayFragment, int[], int[]);
-    method public android.support.v17.leanback.widget.PlaybackControlsRowPresenter createControlsRowAndPresenter();
-    method protected android.support.v17.leanback.widget.SparseArrayObjectAdapter createPrimaryActionsAdapter(android.support.v17.leanback.widget.PresenterSelector);
-    method public android.support.v17.leanback.app.PlaybackOverlayFragment getFragment();
-    method public deprecated android.support.v17.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public final void next();
-    method protected void onRowChanged(android.support.v17.leanback.widget.PlaybackControlsRow);
-    method public final void pause();
-    method protected deprecated void pausePlayback();
-    method public final void play(int);
-    method public final void previous();
-    method public deprecated void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method protected deprecated void skipToNext();
-    method protected deprecated void skipToPrevious();
-    method protected deprecated void startPlayback(int);
-  }
-
-  public static abstract deprecated interface PlaybackControlGlue.InputEventHandler {
-    method public abstract boolean handleInputEvent(android.view.InputEvent);
-  }
-
-  public abstract deprecated class PlaybackControlSupportGlue extends android.support.v17.leanback.app.PlaybackControlGlue {
-    ctor public PlaybackControlSupportGlue(android.content.Context, int[]);
-    ctor public PlaybackControlSupportGlue(android.content.Context, int[], int[]);
-    ctor public PlaybackControlSupportGlue(android.content.Context, android.support.v17.leanback.app.PlaybackOverlaySupportFragment, int[]);
-    ctor public PlaybackControlSupportGlue(android.content.Context, android.support.v17.leanback.app.PlaybackOverlaySupportFragment, int[], int[]);
-    field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
-    field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
-    field public static final int ACTION_FAST_FORWARD = 128; // 0x80
-    field public static final int ACTION_PLAY_PAUSE = 64; // 0x40
-    field public static final int ACTION_REWIND = 32; // 0x20
-    field public static final int ACTION_SKIP_TO_NEXT = 256; // 0x100
-    field public static final int ACTION_SKIP_TO_PREVIOUS = 16; // 0x10
-    field public static final int PLAYBACK_SPEED_FAST_L0 = 10; // 0xa
-    field public static final int PLAYBACK_SPEED_FAST_L1 = 11; // 0xb
-    field public static final int PLAYBACK_SPEED_FAST_L2 = 12; // 0xc
-    field public static final int PLAYBACK_SPEED_FAST_L3 = 13; // 0xd
-    field public static final int PLAYBACK_SPEED_FAST_L4 = 14; // 0xe
-    field public static final int PLAYBACK_SPEED_INVALID = -1; // 0xffffffff
-    field public static final int PLAYBACK_SPEED_NORMAL = 1; // 0x1
-    field public static final int PLAYBACK_SPEED_PAUSED = 0; // 0x0
-  }
-
-  public class PlaybackFragment extends android.app.Fragment {
-    ctor public PlaybackFragment();
-    method public void fadeOut();
-    method public android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBackgroundType();
-    method public boolean isFadingEnabled();
-    method public void notifyPlaybackRowChanged();
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setBackgroundType(int);
-    method public void setFadingEnabled(boolean);
-    method public void setHostCallback(android.support.v17.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.BaseOnItemViewSelectedListener);
-    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setOnPlaybackItemViewClickedListener(android.support.v17.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setPlaybackRow(android.support.v17.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(android.support.v17.leanback.widget.PlaybackRowPresenter);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void tickle();
-    field public static final int BG_DARK = 1; // 0x1
-    field public static final int BG_LIGHT = 2; // 0x2
-    field public static final int BG_NONE = 0; // 0x0
-  }
-
-  public class PlaybackFragmentGlueHost extends android.support.v17.leanback.media.PlaybackGlueHost {
-    ctor public PlaybackFragmentGlueHost(android.support.v17.leanback.app.PlaybackFragment);
-  }
-
-  public deprecated class PlaybackOverlayFragment extends android.support.v17.leanback.app.DetailsFragment {
-    ctor public PlaybackOverlayFragment();
-    method public void fadeOut();
-    method public int getBackgroundType();
-    method public final android.support.v17.leanback.app.PlaybackControlGlue.InputEventHandler getEventHandler();
-    method public android.support.v17.leanback.app.PlaybackOverlayFragment.OnFadeCompleteListener getFadeCompleteListener();
-    method public final deprecated android.support.v17.leanback.app.PlaybackOverlayFragment.InputEventHandler getInputEventHandler();
-    method public boolean isFadingEnabled();
-    method public void setBackgroundType(int);
-    method public final void setEventHandler(android.support.v17.leanback.app.PlaybackControlGlue.InputEventHandler);
-    method public void setFadeCompleteListener(android.support.v17.leanback.app.PlaybackOverlayFragment.OnFadeCompleteListener);
-    method public void setFadingEnabled(boolean);
-    method public final deprecated void setInputEventHandler(android.support.v17.leanback.app.PlaybackOverlayFragment.InputEventHandler);
-    method public void tickle();
-    field public static final int BG_DARK = 1; // 0x1
-    field public static final int BG_LIGHT = 2; // 0x2
-    field public static final int BG_NONE = 0; // 0x0
-  }
-
-  public static abstract deprecated interface PlaybackOverlayFragment.InputEventHandler implements android.support.v17.leanback.app.PlaybackControlGlue.InputEventHandler {
-  }
-
-  public static class PlaybackOverlayFragment.OnFadeCompleteListener {
-    ctor public PlaybackOverlayFragment.OnFadeCompleteListener();
-    method public void onFadeInComplete();
-    method public void onFadeOutComplete();
-  }
-
-  public deprecated class PlaybackOverlaySupportFragment extends android.support.v17.leanback.app.DetailsSupportFragment {
-    ctor public PlaybackOverlaySupportFragment();
-    method public void fadeOut();
-    method public int getBackgroundType();
-    method public final android.support.v17.leanback.app.PlaybackControlGlue.InputEventHandler getEventHandler();
-    method public android.support.v17.leanback.app.PlaybackOverlaySupportFragment.OnFadeCompleteListener getFadeCompleteListener();
-    method public final deprecated android.support.v17.leanback.app.PlaybackOverlaySupportFragment.InputEventHandler getInputEventHandler();
-    method public boolean isFadingEnabled();
-    method public void setBackgroundType(int);
-    method public final void setEventHandler(android.support.v17.leanback.app.PlaybackControlGlue.InputEventHandler);
-    method public void setFadeCompleteListener(android.support.v17.leanback.app.PlaybackOverlaySupportFragment.OnFadeCompleteListener);
-    method public void setFadingEnabled(boolean);
-    method public final deprecated void setInputEventHandler(android.support.v17.leanback.app.PlaybackOverlaySupportFragment.InputEventHandler);
-    method public void tickle();
-    field public static final int BG_DARK = 1; // 0x1
-    field public static final int BG_LIGHT = 2; // 0x2
-    field public static final int BG_NONE = 0; // 0x0
-  }
-
-  public static abstract deprecated interface PlaybackOverlaySupportFragment.InputEventHandler implements android.support.v17.leanback.app.PlaybackControlGlue.InputEventHandler {
-  }
-
-  public static class PlaybackOverlaySupportFragment.OnFadeCompleteListener {
-    ctor public PlaybackOverlaySupportFragment.OnFadeCompleteListener();
-    method public void onFadeInComplete();
-    method public void onFadeOutComplete();
-  }
-
-  public class PlaybackSupportFragment extends android.support.v4.app.Fragment {
-    ctor public PlaybackSupportFragment();
-    method public void fadeOut();
-    method public android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBackgroundType();
-    method public boolean isFadingEnabled();
-    method public void notifyPlaybackRowChanged();
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setBackgroundType(int);
-    method public void setFadingEnabled(boolean);
-    method public void setHostCallback(android.support.v17.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.BaseOnItemViewSelectedListener);
-    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setOnPlaybackItemViewClickedListener(android.support.v17.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setPlaybackRow(android.support.v17.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(android.support.v17.leanback.widget.PlaybackRowPresenter);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void tickle();
-    field public static final int BG_DARK = 1; // 0x1
-    field public static final int BG_LIGHT = 2; // 0x2
-    field public static final int BG_NONE = 0; // 0x0
-  }
-
-  public class PlaybackSupportFragmentGlueHost extends android.support.v17.leanback.media.PlaybackGlueHost {
-    ctor public PlaybackSupportFragmentGlueHost(android.support.v17.leanback.app.PlaybackSupportFragment);
-  }
-
-  public final class ProgressBarManager {
-    ctor public ProgressBarManager();
-    method public void disableProgressBar();
-    method public void enableProgressBar();
-    method public long getInitialDelay();
-    method public void hide();
-    method public void setInitialDelay(long);
-    method public void setProgressBarView(android.view.View);
-    method public void setRootView(android.view.ViewGroup);
-    method public void show();
-  }
-
-  public class RowsFragment extends android.support.v17.leanback.app.BaseRowFragment implements android.support.v17.leanback.app.BrowseFragment.MainFragmentAdapterProvider android.support.v17.leanback.app.BrowseFragment.MainFragmentRowsAdapterProvider {
-    ctor public RowsFragment();
-    method public deprecated void enableRowScaling(boolean);
-    method protected android.support.v17.leanback.widget.VerticalGridView findGridViewFromRoot(android.view.View);
-    method public android.support.v17.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public android.support.v17.leanback.app.BrowseFragment.MainFragmentAdapter getMainFragmentAdapter();
-    method public android.support.v17.leanback.app.BrowseFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-    method public android.support.v17.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public android.support.v17.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public android.support.v17.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(int);
-    method public boolean isScrolling();
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask);
-  }
-
-  public static class RowsFragment.MainFragmentAdapter extends android.support.v17.leanback.app.BrowseFragment.MainFragmentAdapter {
-    ctor public RowsFragment.MainFragmentAdapter(android.support.v17.leanback.app.RowsFragment);
-  }
-
-  public static class RowsFragment.MainFragmentRowsAdapter extends android.support.v17.leanback.app.BrowseFragment.MainFragmentRowsAdapter {
-    ctor public RowsFragment.MainFragmentRowsAdapter(android.support.v17.leanback.app.RowsFragment);
-  }
-
-  public class RowsSupportFragment extends android.support.v17.leanback.app.BaseRowSupportFragment implements android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentAdapterProvider android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapterProvider {
-    ctor public RowsSupportFragment();
-    method public deprecated void enableRowScaling(boolean);
-    method protected android.support.v17.leanback.widget.VerticalGridView findGridViewFromRoot(android.view.View);
-    method public android.support.v17.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentAdapter getMainFragmentAdapter();
-    method public android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-    method public android.support.v17.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public android.support.v17.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public android.support.v17.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(int);
-    method public boolean isScrolling();
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask);
-  }
-
-  public static class RowsSupportFragment.MainFragmentAdapter extends android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentAdapter {
-    ctor public RowsSupportFragment.MainFragmentAdapter(android.support.v17.leanback.app.RowsSupportFragment);
-  }
-
-  public static class RowsSupportFragment.MainFragmentRowsAdapter extends android.support.v17.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter {
-    ctor public RowsSupportFragment.MainFragmentRowsAdapter(android.support.v17.leanback.app.RowsSupportFragment);
-  }
-
-  public class SearchFragment extends android.app.Fragment {
-    ctor public SearchFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String);
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, java.lang.String);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.content.Intent getRecognizerIntent();
-    method public android.support.v17.leanback.app.RowsFragment getRowsFragment();
-    method public java.lang.String getTitle();
-    method public static android.support.v17.leanback.app.SearchFragment newInstance(java.lang.String);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.OnItemViewSelectedListener);
-    method public void setSearchAffordanceColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchQuery(java.lang.String, boolean);
-    method public void setSearchQuery(android.content.Intent, boolean);
-    method public void setSearchResultProvider(android.support.v17.leanback.app.SearchFragment.SearchResultProvider);
-    method public void setSpeechRecognitionCallback(android.support.v17.leanback.widget.SpeechRecognitionCallback);
-    method public void setTitle(java.lang.String);
-    method public void startRecognition();
-  }
-
-  public static abstract interface SearchFragment.SearchResultProvider {
-    method public abstract android.support.v17.leanback.widget.ObjectAdapter getResultsAdapter();
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
-  }
-
-  public class SearchSupportFragment extends android.support.v4.app.Fragment {
-    ctor public SearchSupportFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String);
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, java.lang.String);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.content.Intent getRecognizerIntent();
-    method public android.support.v17.leanback.app.RowsSupportFragment getRowsSupportFragment();
-    method public java.lang.String getTitle();
-    method public static android.support.v17.leanback.app.SearchSupportFragment newInstance(java.lang.String);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.OnItemViewSelectedListener);
-    method public void setSearchAffordanceColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchQuery(java.lang.String, boolean);
-    method public void setSearchQuery(android.content.Intent, boolean);
-    method public void setSearchResultProvider(android.support.v17.leanback.app.SearchSupportFragment.SearchResultProvider);
-    method public void setSpeechRecognitionCallback(android.support.v17.leanback.widget.SpeechRecognitionCallback);
-    method public void setTitle(java.lang.String);
-    method public void startRecognition();
-  }
-
-  public static abstract interface SearchSupportFragment.SearchResultProvider {
-    method public abstract android.support.v17.leanback.widget.ObjectAdapter getResultsAdapter();
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
-  }
-
-  public class VerticalGridFragment extends android.support.v17.leanback.app.BrandedFragment {
-    ctor public VerticalGridFragment();
-    method protected java.lang.Object createEntranceTransition();
-    method public android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public android.support.v17.leanback.widget.VerticalGridPresenter getGridPresenter();
-    method public android.support.v17.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method protected void runEntranceTransition(java.lang.Object);
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setGridPresenter(android.support.v17.leanback.widget.VerticalGridPresenter);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-  }
-
-  public class VerticalGridSupportFragment extends android.support.v17.leanback.app.BrandedSupportFragment {
-    ctor public VerticalGridSupportFragment();
-    method protected java.lang.Object createEntranceTransition();
-    method public android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public android.support.v17.leanback.widget.VerticalGridPresenter getGridPresenter();
-    method public android.support.v17.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method protected void runEntranceTransition(java.lang.Object);
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setGridPresenter(android.support.v17.leanback.widget.VerticalGridPresenter);
-    method public void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(android.support.v17.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-  }
-
-  public class VideoFragment extends android.support.v17.leanback.app.PlaybackFragment {
-    ctor public VideoFragment();
-    method public android.view.SurfaceView getSurfaceView();
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
-  }
-
-  public class VideoFragmentGlueHost extends android.support.v17.leanback.app.PlaybackFragmentGlueHost implements android.support.v17.leanback.media.SurfaceHolderGlueHost {
-    ctor public VideoFragmentGlueHost(android.support.v17.leanback.app.VideoFragment);
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
-  }
-
-  public class VideoSupportFragment extends android.support.v17.leanback.app.PlaybackSupportFragment {
-    ctor public VideoSupportFragment();
-    method public android.view.SurfaceView getSurfaceView();
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
-  }
-
-  public class VideoSupportFragmentGlueHost extends android.support.v17.leanback.app.PlaybackSupportFragmentGlueHost implements android.support.v17.leanback.media.SurfaceHolderGlueHost {
-    ctor public VideoSupportFragmentGlueHost(android.support.v17.leanback.app.VideoSupportFragment);
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
-  }
-
-}
-
-package android.support.v17.leanback.database {
-
-  public abstract class CursorMapper {
-    ctor public CursorMapper();
-    method protected abstract java.lang.Object bind(android.database.Cursor);
-    method protected abstract void bindColumns(android.database.Cursor);
-    method public java.lang.Object convert(android.database.Cursor);
-  }
-
-}
-
-package android.support.v17.leanback.graphics {
-
-  public class BoundsRule {
-    ctor public BoundsRule();
-    ctor public BoundsRule(android.support.v17.leanback.graphics.BoundsRule);
-    method public void calculateBounds(android.graphics.Rect, android.graphics.Rect);
-    field public android.support.v17.leanback.graphics.BoundsRule.ValueRule bottom;
-    field public android.support.v17.leanback.graphics.BoundsRule.ValueRule left;
-    field public android.support.v17.leanback.graphics.BoundsRule.ValueRule right;
-    field public android.support.v17.leanback.graphics.BoundsRule.ValueRule top;
-  }
-
-  public static final class BoundsRule.ValueRule {
-    method public static android.support.v17.leanback.graphics.BoundsRule.ValueRule absoluteValue(int);
-    method public int getAbsoluteValue();
-    method public float getFraction();
-    method public static android.support.v17.leanback.graphics.BoundsRule.ValueRule inheritFromParent(float);
-    method public static android.support.v17.leanback.graphics.BoundsRule.ValueRule inheritFromParentWithOffset(float, int);
-    method public void setAbsoluteValue(int);
-    method public void setFraction(float);
-  }
-
-  public final class ColorFilterCache {
-    method public static android.support.v17.leanback.graphics.ColorFilterCache getColorFilterCache(int);
-    method public android.graphics.ColorFilter getFilterForLevel(float);
-  }
-
-  public final class ColorFilterDimmer {
-    method public void applyFilterToView(android.view.View);
-    method public static android.support.v17.leanback.graphics.ColorFilterDimmer create(android.support.v17.leanback.graphics.ColorFilterCache, float, float);
-    method public static android.support.v17.leanback.graphics.ColorFilterDimmer createDefault(android.content.Context);
-    method public android.graphics.ColorFilter getColorFilter();
-    method public android.graphics.Paint getPaint();
-    method public void setActiveLevel(float);
-  }
-
-  public final class ColorOverlayDimmer {
-    method public int applyToColor(int);
-    method public static android.support.v17.leanback.graphics.ColorOverlayDimmer createColorOverlayDimmer(int, float, float);
-    method public static android.support.v17.leanback.graphics.ColorOverlayDimmer createDefault(android.content.Context);
-    method public void drawColorOverlay(android.graphics.Canvas, android.view.View, boolean);
-    method public int getAlpha();
-    method public float getAlphaFloat();
-    method public android.graphics.Paint getPaint();
-    method public boolean needsDraw();
-    method public void setActiveLevel(float);
-  }
-
-  public class CompositeDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public CompositeDrawable();
-    method public void addChildDrawable(android.graphics.drawable.Drawable);
-    method public void draw(android.graphics.Canvas);
-    method public android.support.v17.leanback.graphics.CompositeDrawable.ChildDrawable getChildAt(int);
-    method public int getChildCount();
-    method public android.graphics.drawable.Drawable getDrawable(int);
-    method public int getOpacity();
-    method public void invalidateDrawable(android.graphics.drawable.Drawable);
-    method public void removeChild(int);
-    method public void removeDrawable(android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
-    method public void setAlpha(int);
-    method public void setChildDrawableAt(int, android.graphics.drawable.Drawable);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
-  }
-
-  public static final class CompositeDrawable.ChildDrawable {
-    ctor public CompositeDrawable.ChildDrawable(android.graphics.drawable.Drawable, android.support.v17.leanback.graphics.CompositeDrawable);
-    method public android.support.v17.leanback.graphics.BoundsRule getBoundsRule();
-    method public android.graphics.drawable.Drawable getDrawable();
-    method public void recomputeBounds();
-    field public static final android.util.Property<android.support.v17.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> BOTTOM_ABSOLUTE;
-    field public static final android.util.Property<android.support.v17.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> BOTTOM_FRACTION;
-    field public static final android.util.Property<android.support.v17.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> LEFT_ABSOLUTE;
-    field public static final android.util.Property<android.support.v17.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> LEFT_FRACTION;
-    field public static final android.util.Property<android.support.v17.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> RIGHT_ABSOLUTE;
-    field public static final android.util.Property<android.support.v17.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> RIGHT_FRACTION;
-    field public static final android.util.Property<android.support.v17.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> TOP_ABSOLUTE;
-    field public static final android.util.Property<android.support.v17.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> TOP_FRACTION;
-  }
-
-  public class FitWidthBitmapDrawable extends android.graphics.drawable.Drawable {
-    ctor public FitWidthBitmapDrawable();
-    method public void draw(android.graphics.Canvas);
-    method public android.graphics.Bitmap getBitmap();
-    method public int getOpacity();
-    method public android.graphics.Rect getSource();
-    method public int getVerticalOffset();
-    method public void setAlpha(int);
-    method public void setBitmap(android.graphics.Bitmap);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setSource(android.graphics.Rect);
-    method public void setVerticalOffset(int);
-    field public static final android.util.Property<android.support.v17.leanback.graphics.FitWidthBitmapDrawable, java.lang.Integer> PROPERTY_VERTICAL_OFFSET;
-  }
-
-}
-
-package android.support.v17.leanback.media {
-
-  public abstract class MediaControllerGlue extends android.support.v17.leanback.media.PlaybackControlGlue {
-    ctor public MediaControllerGlue(android.content.Context, int[], int[]);
-    method public void attachToMediaController(android.support.v4.media.session.MediaControllerCompat);
-    method public void detach();
-    method public int getCurrentPosition();
-    method public int getCurrentSpeedId();
-    method public android.graphics.drawable.Drawable getMediaArt();
-    method public final android.support.v4.media.session.MediaControllerCompat getMediaController();
-    method public int getMediaDuration();
-    method public java.lang.CharSequence getMediaSubtitle();
-    method public java.lang.CharSequence getMediaTitle();
-    method public long getSupportedActions();
-    method public boolean hasValidMedia();
-    method public boolean isMediaPlaying();
-  }
-
-  public abstract class PlaybackControlGlue extends android.support.v17.leanback.media.PlaybackGlue implements android.support.v17.leanback.widget.OnActionClickedListener android.view.View.OnKeyListener {
-    ctor public PlaybackControlGlue(android.content.Context, int[]);
-    ctor public PlaybackControlGlue(android.content.Context, int[], int[]);
-    method public void enableProgressUpdating(boolean);
-    method public android.support.v17.leanback.widget.PlaybackControlsRow getControlsRow();
-    method public deprecated android.support.v17.leanback.widget.PlaybackControlsRowPresenter getControlsRowPresenter();
-    method public abstract int getCurrentPosition();
-    method public abstract int getCurrentSpeedId();
-    method public int[] getFastForwardSpeeds();
-    method public abstract android.graphics.drawable.Drawable getMediaArt();
-    method public abstract int getMediaDuration();
-    method public abstract java.lang.CharSequence getMediaSubtitle();
-    method public abstract java.lang.CharSequence getMediaTitle();
-    method public android.support.v17.leanback.widget.PlaybackRowPresenter getPlaybackRowPresenter();
-    method public int[] getRewindSpeeds();
-    method public abstract long getSupportedActions();
-    method public int getUpdatePeriod();
-    method public abstract boolean hasValidMedia();
-    method public boolean isFadingEnabled();
-    method public abstract boolean isMediaPlaying();
-    method public void onActionClicked(android.support.v17.leanback.widget.Action);
-    method protected void onCreateControlsRowAndPresenter();
-    method protected void onCreatePrimaryActions(android.support.v17.leanback.widget.SparseArrayObjectAdapter);
-    method protected void onCreateSecondaryActions(android.support.v17.leanback.widget.ArrayObjectAdapter);
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
-    method protected void onMetadataChanged();
-    method protected void onStateChanged();
-    method public void play(int);
-    method public final void play();
-    method public void setControlsRow(android.support.v17.leanback.widget.PlaybackControlsRow);
-    method public deprecated void setControlsRowPresenter(android.support.v17.leanback.widget.PlaybackControlsRowPresenter);
-    method public void setFadingEnabled(boolean);
-    method public void setPlaybackRowPresenter(android.support.v17.leanback.widget.PlaybackRowPresenter);
-    method public void updateProgress();
-    field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
-    field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
-    field public static final int ACTION_FAST_FORWARD = 128; // 0x80
-    field public static final int ACTION_PLAY_PAUSE = 64; // 0x40
-    field public static final int ACTION_REWIND = 32; // 0x20
-    field public static final int ACTION_SKIP_TO_NEXT = 256; // 0x100
-    field public static final int ACTION_SKIP_TO_PREVIOUS = 16; // 0x10
-    field public static final int PLAYBACK_SPEED_FAST_L0 = 10; // 0xa
-    field public static final int PLAYBACK_SPEED_FAST_L1 = 11; // 0xb
-    field public static final int PLAYBACK_SPEED_FAST_L2 = 12; // 0xc
-    field public static final int PLAYBACK_SPEED_FAST_L3 = 13; // 0xd
-    field public static final int PLAYBACK_SPEED_FAST_L4 = 14; // 0xe
-    field public static final int PLAYBACK_SPEED_INVALID = -1; // 0xffffffff
-    field public static final int PLAYBACK_SPEED_NORMAL = 1; // 0x1
-    field public static final int PLAYBACK_SPEED_PAUSED = 0; // 0x0
-  }
-
-  public abstract class PlaybackGlue {
-    ctor public PlaybackGlue(android.content.Context);
-    method public android.content.Context getContext();
-    method public android.support.v17.leanback.media.PlaybackGlueHost getHost();
-    method public boolean isReadyForPlayback();
-    method public void next();
-    method protected void onAttachedToHost(android.support.v17.leanback.media.PlaybackGlueHost);
-    method protected void onDetachedFromHost();
-    method protected void onHostPause();
-    method protected void onHostResume();
-    method protected void onHostStart();
-    method protected void onHostStop();
-    method public void pause();
-    method public void play();
-    method public void previous();
-    method public final void setHost(android.support.v17.leanback.media.PlaybackGlueHost);
-    method public void setPlayerCallback(android.support.v17.leanback.media.PlaybackGlue.PlayerCallback);
-  }
-
-  public static abstract class PlaybackGlue.PlayerCallback {
-    ctor public PlaybackGlue.PlayerCallback();
-    method public abstract void onReadyForPlayback();
-  }
-
-  public abstract class PlaybackGlueHost {
-    ctor public PlaybackGlueHost();
-    method public void fadeOut();
-    method public void notifyPlaybackRowChanged();
-    method public void setFadingEnabled(boolean);
-    method public void setHostCallback(android.support.v17.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnActionClickedListener(android.support.v17.leanback.widget.OnActionClickedListener);
-    method public void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setPlaybackRow(android.support.v17.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(android.support.v17.leanback.widget.PlaybackRowPresenter);
-  }
-
-  public static abstract class PlaybackGlueHost.HostCallback {
-    ctor public PlaybackGlueHost.HostCallback();
-    method public void onHostDestroy();
-    method public void onHostPause();
-    method public void onHostResume();
-    method public void onHostStart();
-    method public void onHostStop();
-  }
-
-  public abstract interface SurfaceHolderGlueHost {
-    method public abstract void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
-  }
-
-}
-
-package android.support.v17.leanback.system {
-
-  public class Settings {
-    method public boolean getBoolean(java.lang.String);
-    method public static android.support.v17.leanback.system.Settings getInstance(android.content.Context);
-    method public void setBoolean(java.lang.String, boolean);
-    field public static final java.lang.String PREFER_STATIC_SHADOWS = "PREFER_STATIC_SHADOWS";
-  }
-
-}
-
-package android.support.v17.leanback.widget {
-
-  public abstract class AbstractDetailsDescriptionPresenter extends android.support.v17.leanback.widget.Presenter {
-    ctor public AbstractDetailsDescriptionPresenter();
-    method protected abstract void onBindDescription(android.support.v17.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder, java.lang.Object);
-    method public final void onBindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final android.support.v17.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder);
-  }
-
-  public static class AbstractDetailsDescriptionPresenter.ViewHolder extends android.support.v17.leanback.widget.Presenter.ViewHolder {
-    ctor public AbstractDetailsDescriptionPresenter.ViewHolder(android.view.View);
-    method public android.widget.TextView getBody();
-    method public android.widget.TextView getSubtitle();
-    method public android.widget.TextView getTitle();
-  }
-
-  public abstract class AbstractMediaItemPresenter extends android.support.v17.leanback.widget.RowPresenter {
-    ctor public AbstractMediaItemPresenter();
-    ctor public AbstractMediaItemPresenter(int);
-    method protected android.support.v17.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public android.support.v17.leanback.widget.Presenter getActionPresenter();
-    method protected int getMediaPlayState(java.lang.Object);
-    method public int getThemeId();
-    method public boolean hasMediaRowSeparator();
-    method protected abstract void onBindMediaDetails(android.support.v17.leanback.widget.AbstractMediaItemPresenter.ViewHolder, java.lang.Object);
-    method public void onBindMediaPlayState(android.support.v17.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method protected void onBindRowActions(android.support.v17.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method protected void onUnbindMediaDetails(android.support.v17.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method public void onUnbindMediaPlayState(android.support.v17.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method public void setActionPresenter(android.support.v17.leanback.widget.Presenter);
-    method public void setBackgroundColor(int);
-    method public void setHasMediaRowSeparator(boolean);
-    method public void setThemeId(int);
-    field public static final int PLAY_STATE_INITIAL = 0; // 0x0
-    field public static final int PLAY_STATE_PAUSED = 1; // 0x1
-    field public static final int PLAY_STATE_PLAYING = 2; // 0x2
-  }
-
-  public static class AbstractMediaItemPresenter.ViewHolder extends android.support.v17.leanback.widget.RowPresenter.ViewHolder {
-    ctor public AbstractMediaItemPresenter.ViewHolder(android.view.View);
-    method public android.view.ViewGroup getMediaItemActionsContainer();
-    method public android.view.View getMediaItemDetailsView();
-    method public android.widget.TextView getMediaItemDurationView();
-    method public android.widget.TextView getMediaItemNameView();
-    method public android.widget.TextView getMediaItemNumberView();
-    method public android.widget.ViewFlipper getMediaItemNumberViewFlipper();
-    method public android.view.View getMediaItemPausedView();
-    method public android.view.View getMediaItemPlayingView();
-    method public android.support.v17.leanback.widget.MultiActionsProvider.MultiAction[] getMediaItemRowActions();
-    method public android.view.View getMediaItemRowSeparator();
-    method public android.view.View getSelectorView();
-    method public void notifyActionChanged(android.support.v17.leanback.widget.MultiActionsProvider.MultiAction);
-    method public void notifyDetailsChanged();
-    method public void notifyPlayStateChanged();
-    method public void onBindRowActions();
-    method public void setSelectedMediaItemNumberView(int);
-  }
-
-  public abstract class AbstractMediaListHeaderPresenter extends android.support.v17.leanback.widget.RowPresenter {
-    ctor public AbstractMediaListHeaderPresenter(android.content.Context, int);
-    ctor public AbstractMediaListHeaderPresenter();
-    method protected android.support.v17.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected abstract void onBindMediaListHeaderViewHolder(android.support.v17.leanback.widget.AbstractMediaListHeaderPresenter.ViewHolder, java.lang.Object);
-    method public void setBackgroundColor(int);
-  }
-
-  public static class AbstractMediaListHeaderPresenter.ViewHolder extends android.support.v17.leanback.widget.RowPresenter.ViewHolder {
-    ctor public AbstractMediaListHeaderPresenter.ViewHolder(android.view.View);
-    method public android.widget.TextView getHeaderView();
-  }
-
-  public class Action {
-    ctor public Action(long);
-    ctor public Action(long, java.lang.CharSequence);
-    ctor public Action(long, java.lang.CharSequence, java.lang.CharSequence);
-    ctor public Action(long, java.lang.CharSequence, java.lang.CharSequence, android.graphics.drawable.Drawable);
-    method public final void addKeyCode(int);
-    method public final android.graphics.drawable.Drawable getIcon();
-    method public final long getId();
-    method public final java.lang.CharSequence getLabel1();
-    method public final java.lang.CharSequence getLabel2();
-    method public final void removeKeyCode(int);
-    method public final boolean respondsToKeyCode(int);
-    method public final void setIcon(android.graphics.drawable.Drawable);
-    method public final void setId(long);
-    method public final void setLabel1(java.lang.CharSequence);
-    method public final void setLabel2(java.lang.CharSequence);
-    field public static final long NO_ID = -1L; // 0xffffffffffffffffL
-  }
-
-  public class ArrayObjectAdapter extends android.support.v17.leanback.widget.ObjectAdapter {
-    ctor public ArrayObjectAdapter(android.support.v17.leanback.widget.PresenterSelector);
-    ctor public ArrayObjectAdapter(android.support.v17.leanback.widget.Presenter);
-    ctor public ArrayObjectAdapter();
-    method public void add(java.lang.Object);
-    method public void add(int, java.lang.Object);
-    method public void addAll(int, java.util.Collection);
-    method public void clear();
-    method public java.lang.Object get(int);
-    method public int indexOf(java.lang.Object);
-    method public void notifyArrayItemRangeChanged(int, int);
-    method public boolean remove(java.lang.Object);
-    method public int removeItems(int, int);
-    method public void replace(int, java.lang.Object);
-    method public int size();
-    method public <E> java.util.List<E> unmodifiableList();
-  }
-
-  public class BaseCardView extends android.widget.FrameLayout {
-    ctor public BaseCardView(android.content.Context);
-    ctor public BaseCardView(android.content.Context, android.util.AttributeSet);
-    ctor public BaseCardView(android.content.Context, android.util.AttributeSet, int);
-    method public int getCardType();
-    method public deprecated int getExtraVisibility();
-    method public int getInfoVisibility();
-    method public boolean isSelectedAnimationDelayed();
-    method public void setCardType(int);
-    method public deprecated void setExtraVisibility(int);
-    method public void setInfoVisibility(int);
-    method public void setSelectedAnimationDelayed(boolean);
-    field public static final int CARD_REGION_VISIBLE_ACTIVATED = 1; // 0x1
-    field public static final int CARD_REGION_VISIBLE_ALWAYS = 0; // 0x0
-    field public static final int CARD_REGION_VISIBLE_SELECTED = 2; // 0x2
-    field public static final int CARD_TYPE_INFO_OVER = 1; // 0x1
-    field public static final int CARD_TYPE_INFO_UNDER = 2; // 0x2
-    field public static final int CARD_TYPE_INFO_UNDER_WITH_EXTRA = 3; // 0x3
-    field public static final int CARD_TYPE_MAIN_ONLY = 0; // 0x0
-  }
-
-  public static class BaseCardView.LayoutParams extends android.widget.FrameLayout.LayoutParams {
-    ctor public BaseCardView.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public BaseCardView.LayoutParams(int, int);
-    ctor public BaseCardView.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public BaseCardView.LayoutParams(android.support.v17.leanback.widget.BaseCardView.LayoutParams);
-    field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
-    field public static final int VIEW_TYPE_INFO = 1; // 0x1
-    field public static final int VIEW_TYPE_MAIN = 0; // 0x0
-    field public int viewType;
-  }
-
-  public abstract interface BaseOnItemViewClickedListener<T> {
-    method public abstract void onItemClicked(android.support.v17.leanback.widget.Presenter.ViewHolder, java.lang.Object, android.support.v17.leanback.widget.RowPresenter.ViewHolder, T);
-  }
-
-  public abstract interface BaseOnItemViewSelectedListener<T> {
-    method public abstract void onItemSelected(android.support.v17.leanback.widget.Presenter.ViewHolder, java.lang.Object, android.support.v17.leanback.widget.RowPresenter.ViewHolder, T);
-  }
-
-  public class BrowseFrameLayout extends android.widget.FrameLayout {
-    ctor public BrowseFrameLayout(android.content.Context);
-    ctor public BrowseFrameLayout(android.content.Context, android.util.AttributeSet);
-    ctor public BrowseFrameLayout(android.content.Context, android.util.AttributeSet, int);
-    method public android.support.v17.leanback.widget.BrowseFrameLayout.OnChildFocusListener getOnChildFocusListener();
-    method public android.support.v17.leanback.widget.BrowseFrameLayout.OnFocusSearchListener getOnFocusSearchListener();
-    method public void setOnChildFocusListener(android.support.v17.leanback.widget.BrowseFrameLayout.OnChildFocusListener);
-    method public void setOnDispatchKeyListener(android.view.View.OnKeyListener);
-    method public void setOnFocusSearchListener(android.support.v17.leanback.widget.BrowseFrameLayout.OnFocusSearchListener);
-  }
-
-  public static abstract interface BrowseFrameLayout.OnChildFocusListener {
-    method public abstract void onRequestChildFocus(android.view.View, android.view.View);
-    method public abstract boolean onRequestFocusInDescendants(int, android.graphics.Rect);
-  }
-
-  public static abstract interface BrowseFrameLayout.OnFocusSearchListener {
-    method public abstract android.view.View onFocusSearch(android.view.View, int);
-  }
-
-  public final class ClassPresenterSelector extends android.support.v17.leanback.widget.PresenterSelector {
-    ctor public ClassPresenterSelector();
-    method public android.support.v17.leanback.widget.ClassPresenterSelector addClassPresenter(java.lang.Class<?>, android.support.v17.leanback.widget.Presenter);
-    method public android.support.v17.leanback.widget.ClassPresenterSelector addClassPresenterSelector(java.lang.Class<?>, android.support.v17.leanback.widget.PresenterSelector);
-    method public android.support.v17.leanback.widget.Presenter getPresenter(java.lang.Object);
-  }
-
-  public class ControlButtonPresenterSelector extends android.support.v17.leanback.widget.PresenterSelector {
-    ctor public ControlButtonPresenterSelector();
-    method public android.support.v17.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public android.support.v17.leanback.widget.Presenter getPrimaryPresenter();
-    method public android.support.v17.leanback.widget.Presenter getSecondaryPresenter();
-  }
-
-  public class CursorObjectAdapter extends android.support.v17.leanback.widget.ObjectAdapter {
-    ctor public CursorObjectAdapter(android.support.v17.leanback.widget.PresenterSelector);
-    ctor public CursorObjectAdapter(android.support.v17.leanback.widget.Presenter);
-    ctor public CursorObjectAdapter();
-    method public void changeCursor(android.database.Cursor);
-    method public void close();
-    method public java.lang.Object get(int);
-    method public final android.database.Cursor getCursor();
-    method public final android.support.v17.leanback.database.CursorMapper getMapper();
-    method protected final void invalidateCache(int);
-    method protected final void invalidateCache(int, int);
-    method public boolean isClosed();
-    method protected void onCursorChanged();
-    method protected void onMapperChanged();
-    method public final void setMapper(android.support.v17.leanback.database.CursorMapper);
-    method public int size();
-    method public android.database.Cursor swapCursor(android.database.Cursor);
-  }
-
-  public class DetailsOverviewLogoPresenter extends android.support.v17.leanback.widget.Presenter {
-    ctor public DetailsOverviewLogoPresenter();
-    method public boolean isBoundToImage(android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder, android.support.v17.leanback.widget.DetailsOverviewRow);
-    method public void onBindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public android.view.View onCreateView(android.view.ViewGroup);
-    method public android.support.v17.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public void setContext(android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder, android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter);
-  }
-
-  public static class DetailsOverviewLogoPresenter.ViewHolder extends android.support.v17.leanback.widget.Presenter.ViewHolder {
-    ctor public DetailsOverviewLogoPresenter.ViewHolder(android.view.View);
-    method public android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter getParentPresenter();
-    method public android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder getParentViewHolder();
-    method public boolean isSizeFromDrawableIntrinsic();
-    method public void setSizeFromDrawableIntrinsic(boolean);
-    field protected android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter mParentPresenter;
-    field protected android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder mParentViewHolder;
-  }
-
-  public class DetailsOverviewRow extends android.support.v17.leanback.widget.Row {
-    ctor public DetailsOverviewRow(java.lang.Object);
-    method public final deprecated void addAction(android.support.v17.leanback.widget.Action);
-    method public final deprecated void addAction(int, android.support.v17.leanback.widget.Action);
-    method public android.support.v17.leanback.widget.Action getActionForKeyCode(int);
-    method public final deprecated java.util.List<android.support.v17.leanback.widget.Action> getActions();
-    method public final android.support.v17.leanback.widget.ObjectAdapter getActionsAdapter();
-    method public final android.graphics.drawable.Drawable getImageDrawable();
-    method public final java.lang.Object getItem();
-    method public boolean isImageScaleUpAllowed();
-    method public final deprecated boolean removeAction(android.support.v17.leanback.widget.Action);
-    method public final void setActionsAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public final void setImageBitmap(android.content.Context, android.graphics.Bitmap);
-    method public final void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setImageScaleUpAllowed(boolean);
-    method public final void setItem(java.lang.Object);
-  }
-
-  public static class DetailsOverviewRow.Listener {
-    ctor public DetailsOverviewRow.Listener();
-    method public void onActionsAdapterChanged(android.support.v17.leanback.widget.DetailsOverviewRow);
-    method public void onImageDrawableChanged(android.support.v17.leanback.widget.DetailsOverviewRow);
-    method public void onItemChanged(android.support.v17.leanback.widget.DetailsOverviewRow);
-  }
-
-  public deprecated class DetailsOverviewRowPresenter extends android.support.v17.leanback.widget.RowPresenter {
-    ctor public DetailsOverviewRowPresenter(android.support.v17.leanback.widget.Presenter);
-    method protected android.support.v17.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public int getBackgroundColor();
-    method public android.support.v17.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public boolean isStyleLarge();
-    method public final boolean isUsingDefaultSelectEffect();
-    method public void setBackgroundColor(int);
-    method public void setOnActionClickedListener(android.support.v17.leanback.widget.OnActionClickedListener);
-    method public final void setSharedElementEnterTransition(android.app.Activity, java.lang.String, long);
-    method public final void setSharedElementEnterTransition(android.app.Activity, java.lang.String);
-    method public void setStyleLarge(boolean);
-  }
-
-  public final class DetailsOverviewRowPresenter.ViewHolder extends android.support.v17.leanback.widget.RowPresenter.ViewHolder {
-    ctor public DetailsOverviewRowPresenter.ViewHolder(android.view.View, android.support.v17.leanback.widget.Presenter);
-    field public final android.support.v17.leanback.widget.Presenter.ViewHolder mDetailsDescriptionViewHolder;
-  }
-
-  public class DetailsParallax extends android.support.v17.leanback.widget.RecyclerViewParallax {
-    ctor public DetailsParallax();
-    method public android.support.v17.leanback.widget.Parallax.IntProperty getOverviewRowBottom();
-    method public android.support.v17.leanback.widget.Parallax.IntProperty getOverviewRowTop();
-  }
-
-  public class DividerPresenter extends android.support.v17.leanback.widget.Presenter {
-    ctor public DividerPresenter();
-    method public void onBindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public android.support.v17.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder);
-  }
-
-  public class DividerRow extends android.support.v17.leanback.widget.Row {
-    ctor public DividerRow();
-    method public final boolean isRenderedAsRowView();
-  }
-
-  public abstract interface FacetProvider {
-    method public abstract java.lang.Object getFacet(java.lang.Class<?>);
-  }
-
-  public abstract interface FacetProviderAdapter {
-    method public abstract android.support.v17.leanback.widget.FacetProvider getFacetProvider(int);
-  }
-
-  public abstract interface FocusHighlight {
-    field public static final int ZOOM_FACTOR_LARGE = 3; // 0x3
-    field public static final int ZOOM_FACTOR_MEDIUM = 2; // 0x2
-    field public static final int ZOOM_FACTOR_NONE = 0; // 0x0
-    field public static final int ZOOM_FACTOR_SMALL = 1; // 0x1
-    field public static final int ZOOM_FACTOR_XSMALL = 4; // 0x4
-  }
-
-  public class FocusHighlightHelper {
-    ctor public FocusHighlightHelper();
-    method public static void setupBrowseItemFocusHighlight(android.support.v17.leanback.widget.ItemBridgeAdapter, int, boolean);
-    method public static void setupHeaderItemFocusHighlight(android.support.v17.leanback.widget.VerticalGridView);
-    method public static void setupHeaderItemFocusHighlight(android.support.v17.leanback.widget.VerticalGridView, boolean);
-  }
-
-  public abstract interface FragmentAnimationProvider {
-    method public abstract void onImeAppearing(java.util.List<android.animation.Animator>);
-    method public abstract void onImeDisappearing(java.util.List<android.animation.Animator>);
-  }
-
-  public class FullWidthDetailsOverviewRowPresenter extends android.support.v17.leanback.widget.RowPresenter {
-    ctor public FullWidthDetailsOverviewRowPresenter(android.support.v17.leanback.widget.Presenter);
-    ctor public FullWidthDetailsOverviewRowPresenter(android.support.v17.leanback.widget.Presenter, android.support.v17.leanback.widget.DetailsOverviewLogoPresenter);
-    method protected android.support.v17.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public final int getActionsBackgroundColor();
-    method public final int getAlignmentMode();
-    method public final int getBackgroundColor();
-    method public final int getInitialState();
-    method protected int getLayoutResourceId();
-    method public android.support.v17.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public final boolean isParticipatingEntranceTransition();
-    method public final boolean isUsingDefaultSelectEffect();
-    method public final void notifyOnBindLogo(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder);
-    method protected void onLayoutLogo(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, boolean);
-    method protected void onLayoutOverviewFrame(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, boolean);
-    method protected void onStateChanged(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int);
-    method public final void setActionsBackgroundColor(int);
-    method public final void setAlignmentMode(int);
-    method public final void setBackgroundColor(int);
-    method public final void setInitialState(int);
-    method public final void setListener(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.Listener);
-    method public void setOnActionClickedListener(android.support.v17.leanback.widget.OnActionClickedListener);
-    method public final void setParticipatingEntranceTransition(boolean);
-    method public final void setState(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int);
-    field public static final int ALIGN_MODE_MIDDLE = 1; // 0x1
-    field public static final int ALIGN_MODE_START = 0; // 0x0
-    field public static final int STATE_FULL = 1; // 0x1
-    field public static final int STATE_HALF = 0; // 0x0
-    field public static final int STATE_SMALL = 2; // 0x2
-    field protected int mInitialState;
-  }
-
-  public static abstract class FullWidthDetailsOverviewRowPresenter.Listener {
-    ctor public FullWidthDetailsOverviewRowPresenter.Listener();
-    method public void onBindLogo(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder);
-  }
-
-  public class FullWidthDetailsOverviewRowPresenter.ViewHolder extends android.support.v17.leanback.widget.RowPresenter.ViewHolder {
-    ctor public FullWidthDetailsOverviewRowPresenter.ViewHolder(android.view.View, android.support.v17.leanback.widget.Presenter, android.support.v17.leanback.widget.DetailsOverviewLogoPresenter);
-    method protected android.support.v17.leanback.widget.DetailsOverviewRow.Listener createRowListener();
-    method public final android.view.ViewGroup getActionsRow();
-    method public final android.view.ViewGroup getDetailsDescriptionFrame();
-    method public final android.support.v17.leanback.widget.Presenter.ViewHolder getDetailsDescriptionViewHolder();
-    method public final android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder getLogoViewHolder();
-    method public final android.view.ViewGroup getOverviewView();
-    method public final int getState();
-    field protected final android.support.v17.leanback.widget.DetailsOverviewRow.Listener mRowListener;
-  }
-
-  public class FullWidthDetailsOverviewRowPresenter.ViewHolder.DetailsOverviewRowListener extends android.support.v17.leanback.widget.DetailsOverviewRow.Listener {
-    ctor public FullWidthDetailsOverviewRowPresenter.ViewHolder.DetailsOverviewRowListener();
-  }
-
-  public class FullWidthDetailsOverviewSharedElementHelper extends android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.Listener {
-    ctor public FullWidthDetailsOverviewSharedElementHelper();
-    method public boolean getAutoStartSharedElementTransition();
-    method public void setAutoStartSharedElementTransition(boolean);
-    method public void setSharedElementEnterTransition(android.app.Activity, java.lang.String);
-    method public void setSharedElementEnterTransition(android.app.Activity, java.lang.String, long);
-    method public void startPostponedEnterTransition();
-  }
-
-  public class GuidanceStylist implements android.support.v17.leanback.widget.FragmentAnimationProvider {
-    ctor public GuidanceStylist();
-    method public android.widget.TextView getBreadcrumbView();
-    method public android.widget.TextView getDescriptionView();
-    method public android.widget.ImageView getIconView();
-    method public android.widget.TextView getTitleView();
-    method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.support.v17.leanback.widget.GuidanceStylist.Guidance);
-    method public void onDestroyView();
-    method public void onImeAppearing(java.util.List<android.animation.Animator>);
-    method public void onImeDisappearing(java.util.List<android.animation.Animator>);
-    method public int onProvideLayoutId();
-  }
-
-  public static class GuidanceStylist.Guidance {
-    ctor public GuidanceStylist.Guidance(java.lang.String, java.lang.String, java.lang.String, android.graphics.drawable.Drawable);
-    method public java.lang.String getBreadcrumb();
-    method public java.lang.String getDescription();
-    method public android.graphics.drawable.Drawable getIconDrawable();
-    method public java.lang.String getTitle();
-  }
-
-  public class GuidedAction extends android.support.v17.leanback.widget.Action {
-    ctor protected GuidedAction();
-    method public int getCheckSetId();
-    method public java.lang.CharSequence getDescription();
-    method public int getDescriptionEditInputType();
-    method public int getDescriptionInputType();
-    method public java.lang.CharSequence getEditDescription();
-    method public int getEditInputType();
-    method public java.lang.CharSequence getEditTitle();
-    method public int getInputType();
-    method public android.content.Intent getIntent();
-    method public java.util.List<android.support.v17.leanback.widget.GuidedAction> getSubActions();
-    method public java.lang.CharSequence getTitle();
-    method public boolean hasEditableActivatorView();
-    method public boolean hasMultilineDescription();
-    method public boolean hasNext();
-    method public boolean hasSubActions();
-    method public boolean hasTextEditable();
-    method public boolean infoOnly();
-    method public final boolean isAutoSaveRestoreEnabled();
-    method public boolean isChecked();
-    method public boolean isDescriptionEditable();
-    method public boolean isEditTitleUsed();
-    method public boolean isEditable();
-    method public boolean isEnabled();
-    method public boolean isFocusable();
-    method public void onRestoreInstanceState(android.os.Bundle, java.lang.String);
-    method public void onSaveInstanceState(android.os.Bundle, java.lang.String);
-    method public void setChecked(boolean);
-    method public void setDescription(java.lang.CharSequence);
-    method public void setEditDescription(java.lang.CharSequence);
-    method public void setEditTitle(java.lang.CharSequence);
-    method public void setEnabled(boolean);
-    method public void setFocusable(boolean);
-    method public void setIntent(android.content.Intent);
-    method public void setSubActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>);
-    method public void setTitle(java.lang.CharSequence);
-    field public static final long ACTION_ID_CANCEL = -5L; // 0xfffffffffffffffbL
-    field public static final long ACTION_ID_CONTINUE = -7L; // 0xfffffffffffffff9L
-    field public static final long ACTION_ID_CURRENT = -3L; // 0xfffffffffffffffdL
-    field public static final long ACTION_ID_FINISH = -6L; // 0xfffffffffffffffaL
-    field public static final long ACTION_ID_NEXT = -2L; // 0xfffffffffffffffeL
-    field public static final long ACTION_ID_NO = -9L; // 0xfffffffffffffff7L
-    field public static final long ACTION_ID_OK = -4L; // 0xfffffffffffffffcL
-    field public static final long ACTION_ID_YES = -8L; // 0xfffffffffffffff8L
-    field public static final int CHECKBOX_CHECK_SET_ID = -1; // 0xffffffff
-    field public static final int DEFAULT_CHECK_SET_ID = 1; // 0x1
-    field public static final int NO_CHECK_SET = 0; // 0x0
-  }
-
-  public static class GuidedAction.Builder extends android.support.v17.leanback.widget.GuidedAction.BuilderBase {
-    ctor public deprecated GuidedAction.Builder();
-    ctor public GuidedAction.Builder(android.content.Context);
-    method public android.support.v17.leanback.widget.GuidedAction build();
-  }
-
-  public static abstract class GuidedAction.BuilderBase<B extends android.support.v17.leanback.widget.GuidedAction.BuilderBase> {
-    ctor public GuidedAction.BuilderBase(android.content.Context);
-    method protected final void applyValues(android.support.v17.leanback.widget.GuidedAction);
-    method public B autoSaveRestoreEnabled(boolean);
-    method public B checkSetId(int);
-    method public B checked(boolean);
-    method public B clickAction(long);
-    method public B description(java.lang.CharSequence);
-    method public B description(int);
-    method public B descriptionEditInputType(int);
-    method public B descriptionEditable(boolean);
-    method public B descriptionInputType(int);
-    method public B editDescription(java.lang.CharSequence);
-    method public B editDescription(int);
-    method public B editInputType(int);
-    method public B editTitle(java.lang.CharSequence);
-    method public B editTitle(int);
-    method public B editable(boolean);
-    method public B enabled(boolean);
-    method public B focusable(boolean);
-    method public android.content.Context getContext();
-    method public B hasEditableActivatorView(boolean);
-    method public B hasNext(boolean);
-    method public B icon(android.graphics.drawable.Drawable);
-    method public B icon(int);
-    method public deprecated B iconResourceId(int, android.content.Context);
-    method public B id(long);
-    method public B infoOnly(boolean);
-    method public B inputType(int);
-    method public B intent(android.content.Intent);
-    method public B multilineDescription(boolean);
-    method public B subActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>);
-    method public B title(java.lang.CharSequence);
-    method public B title(int);
-  }
-
-  public class GuidedActionEditText extends android.widget.EditText implements android.support.v17.leanback.widget.ImeKeyMonitor {
-    ctor public GuidedActionEditText(android.content.Context);
-    ctor public GuidedActionEditText(android.content.Context, android.util.AttributeSet);
-    ctor public GuidedActionEditText(android.content.Context, android.util.AttributeSet, int);
-    method public void setImeKeyListener(android.support.v17.leanback.widget.ImeKeyMonitor.ImeKeyListener);
-  }
-
-  public class GuidedActionsStylist implements android.support.v17.leanback.widget.FragmentAnimationProvider {
-    ctor public GuidedActionsStylist();
-    method public void collapseAction(boolean);
-    method public void expandAction(android.support.v17.leanback.widget.GuidedAction, boolean);
-    method public android.support.v17.leanback.widget.VerticalGridView getActionsGridView();
-    method public android.support.v17.leanback.widget.GuidedAction getExpandedAction();
-    method public int getItemViewType(android.support.v17.leanback.widget.GuidedAction);
-    method public android.support.v17.leanback.widget.VerticalGridView getSubActionsGridView();
-    method public final boolean isBackKeyToCollapseActivatorView();
-    method public final boolean isBackKeyToCollapseSubActions();
-    method public boolean isButtonActions();
-    method public boolean isExpandTransitionSupported();
-    method public boolean isExpanded();
-    method public boolean isInExpandTransition();
-    method public boolean isSubActionsExpanded();
-    method public void onAnimateItemChecked(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemFocused(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemPressed(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemPressedCancelled(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method public void onBindActivatorView(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction);
-    method public void onBindCheckMarkView(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction);
-    method public void onBindChevronView(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction);
-    method public void onBindViewHolder(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction);
-    method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup);
-    method public android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
-    method public void onDestroyView();
-    method protected deprecated void onEditingModeChange(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean);
-    method protected void onEditingModeChange(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, boolean, boolean);
-    method public void onImeAppearing(java.util.List<android.animation.Animator>);
-    method public void onImeDisappearing(java.util.List<android.animation.Animator>);
-    method public int onProvideItemLayoutId();
-    method public int onProvideItemLayoutId(int);
-    method public int onProvideLayoutId();
-    method public boolean onUpdateActivatorView(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction);
-    method public void onUpdateExpandedViewHolder(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method public void setAsButtonActions();
-    method public final void setBackKeyToCollapseActivatorView(boolean);
-    method public final void setBackKeyToCollapseSubActions(boolean);
-    method public deprecated void setEditingMode(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean);
-    method public deprecated void setExpandedViewHolder(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method protected void setupImeOptions(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction);
-    method public deprecated void startExpandedTransition(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder);
-    field public static final int VIEW_TYPE_DATE_PICKER = 1; // 0x1
-    field public static final int VIEW_TYPE_DEFAULT = 0; // 0x0
-  }
-
-  public static class GuidedActionsStylist.ViewHolder extends android.support.v7.widget.RecyclerView.ViewHolder implements android.support.v17.leanback.widget.FacetProvider {
-    ctor public GuidedActionsStylist.ViewHolder(android.view.View);
-    ctor public GuidedActionsStylist.ViewHolder(android.view.View, boolean);
-    method public android.support.v17.leanback.widget.GuidedAction getAction();
-    method public android.widget.ImageView getCheckmarkView();
-    method public android.widget.ImageView getChevronView();
-    method public android.view.View getContentView();
-    method public android.widget.TextView getDescriptionView();
-    method public android.widget.EditText getEditableDescriptionView();
-    method public android.widget.EditText getEditableTitleView();
-    method public android.view.View getEditingView();
-    method public java.lang.Object getFacet(java.lang.Class<?>);
-    method public android.widget.ImageView getIconView();
-    method public android.widget.TextView getTitleView();
-    method public boolean isInEditing();
-    method public boolean isInEditingActivatorView();
-    method public boolean isInEditingDescription();
-    method public boolean isInEditingText();
-    method public boolean isInEditingTitle();
-    method public boolean isSubAction();
-  }
-
-  public class GuidedDatePickerAction extends android.support.v17.leanback.widget.GuidedAction {
-    ctor public GuidedDatePickerAction();
-    method public long getDate();
-    method public java.lang.String getDatePickerFormat();
-    method public long getMaxDate();
-    method public long getMinDate();
-    method public void setDate(long);
-  }
-
-  public static final class GuidedDatePickerAction.Builder extends android.support.v17.leanback.widget.GuidedDatePickerAction.BuilderBase {
-    ctor public GuidedDatePickerAction.Builder(android.content.Context);
-    method public android.support.v17.leanback.widget.GuidedDatePickerAction build();
-  }
-
-  public static abstract class GuidedDatePickerAction.BuilderBase<B extends android.support.v17.leanback.widget.GuidedDatePickerAction.BuilderBase> extends android.support.v17.leanback.widget.GuidedAction.BuilderBase {
-    ctor public GuidedDatePickerAction.BuilderBase(android.content.Context);
-    method protected final void applyDatePickerValues(android.support.v17.leanback.widget.GuidedDatePickerAction);
-    method public B date(long);
-    method public B datePickerFormat(java.lang.String);
-    method public B maxDate(long);
-    method public B minDate(long);
-  }
-
-  public class HeaderItem {
-    ctor public HeaderItem(long, java.lang.String);
-    ctor public HeaderItem(java.lang.String);
-    method public java.lang.CharSequence getContentDescription();
-    method public java.lang.CharSequence getDescription();
-    method public final long getId();
-    method public final java.lang.String getName();
-    method public void setContentDescription(java.lang.CharSequence);
-    method public void setDescription(java.lang.CharSequence);
-  }
-
-  public class HorizontalGridView extends android.support.v7.widget.RecyclerView {
-    ctor public HorizontalGridView(android.content.Context);
-    ctor public HorizontalGridView(android.content.Context, android.util.AttributeSet);
-    ctor public HorizontalGridView(android.content.Context, android.util.AttributeSet, int);
-    method public final boolean getFadingLeftEdge();
-    method public final int getFadingLeftEdgeLength();
-    method public final int getFadingLeftEdgeOffset();
-    method public final boolean getFadingRightEdge();
-    method public final int getFadingRightEdgeLength();
-    method public final int getFadingRightEdgeOffset();
-    method protected void initAttributes(android.content.Context, android.util.AttributeSet);
-    method public final void setFadingLeftEdge(boolean);
-    method public final void setFadingLeftEdgeLength(int);
-    method public final void setFadingLeftEdgeOffset(int);
-    method public final void setFadingRightEdge(boolean);
-    method public final void setFadingRightEdgeLength(int);
-    method public final void setFadingRightEdgeOffset(int);
-    method public void setNumRows(int);
-    method public void setRowHeight(int);
-  }
-
-  public final class HorizontalHoverCardSwitcher extends android.support.v17.leanback.widget.PresenterSwitcher {
-    ctor public HorizontalHoverCardSwitcher();
-    method protected void insertView(android.view.View);
-    method public void select(android.support.v17.leanback.widget.HorizontalGridView, android.view.View, java.lang.Object);
-  }
-
-  public class ImageCardView extends android.support.v17.leanback.widget.BaseCardView {
-    ctor public deprecated ImageCardView(android.content.Context, int);
-    ctor public ImageCardView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ImageCardView(android.content.Context);
-    ctor public ImageCardView(android.content.Context, android.util.AttributeSet);
-    method public android.graphics.drawable.Drawable getBadgeImage();
-    method public java.lang.CharSequence getContentText();
-    method public android.graphics.drawable.Drawable getInfoAreaBackground();
-    method public android.graphics.drawable.Drawable getMainImage();
-    method public final android.widget.ImageView getMainImageView();
-    method public java.lang.CharSequence getTitleText();
-    method public void setBadgeImage(android.graphics.drawable.Drawable);
-    method public void setContentText(java.lang.CharSequence);
-    method public void setInfoAreaBackground(android.graphics.drawable.Drawable);
-    method public void setInfoAreaBackgroundColor(int);
-    method public void setMainImage(android.graphics.drawable.Drawable);
-    method public void setMainImage(android.graphics.drawable.Drawable, boolean);
-    method public void setMainImageAdjustViewBounds(boolean);
-    method public void setMainImageDimensions(int, int);
-    method public void setMainImageScaleType(android.widget.ImageView.ScaleType);
-    method public void setTitleText(java.lang.CharSequence);
-    field public static final int CARD_TYPE_FLAG_CONTENT = 2; // 0x2
-    field public static final int CARD_TYPE_FLAG_ICON_LEFT = 8; // 0x8
-    field public static final int CARD_TYPE_FLAG_ICON_RIGHT = 4; // 0x4
-    field public static final int CARD_TYPE_FLAG_IMAGE_ONLY = 0; // 0x0
-    field public static final int CARD_TYPE_FLAG_TITLE = 1; // 0x1
-  }
-
-  public abstract interface ImeKeyMonitor {
-    method public abstract void setImeKeyListener(android.support.v17.leanback.widget.ImeKeyMonitor.ImeKeyListener);
-  }
-
-  public static abstract interface ImeKeyMonitor.ImeKeyListener {
-    method public abstract boolean onKeyPreIme(android.widget.EditText, int, android.view.KeyEvent);
-  }
-
-  public final class ItemAlignmentFacet {
-    ctor public ItemAlignmentFacet();
-    method public android.support.v17.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[] getAlignmentDefs();
-    method public boolean isMultiAlignment();
-    method public void setAlignmentDefs(android.support.v17.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]);
-    field public static final float ITEM_ALIGN_OFFSET_PERCENT_DISABLED = -1.0f;
-  }
-
-  public static class ItemAlignmentFacet.ItemAlignmentDef {
-    ctor public ItemAlignmentFacet.ItemAlignmentDef();
-    method public final int getItemAlignmentFocusViewId();
-    method public final int getItemAlignmentOffset();
-    method public final float getItemAlignmentOffsetPercent();
-    method public final int getItemAlignmentViewId();
-    method public boolean isAlignedToTextViewBaseLine();
-    method public final boolean isItemAlignmentOffsetWithPadding();
-    method public final void setAlignedToTextViewBaseline(boolean);
-    method public final void setItemAlignmentFocusViewId(int);
-    method public final void setItemAlignmentOffset(int);
-    method public final void setItemAlignmentOffsetPercent(float);
-    method public final void setItemAlignmentOffsetWithPadding(boolean);
-    method public final void setItemAlignmentViewId(int);
-  }
-
-  public class ItemBridgeAdapter extends android.support.v7.widget.RecyclerView.Adapter implements android.support.v17.leanback.widget.FacetProviderAdapter {
-    ctor public ItemBridgeAdapter(android.support.v17.leanback.widget.ObjectAdapter, android.support.v17.leanback.widget.PresenterSelector);
-    ctor public ItemBridgeAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    ctor public ItemBridgeAdapter();
-    method public void clear();
-    method public android.support.v17.leanback.widget.FacetProvider getFacetProvider(int);
-    method public int getItemCount();
-    method public java.util.ArrayList<android.support.v17.leanback.widget.Presenter> getPresenterMapper();
-    method public android.support.v17.leanback.widget.ItemBridgeAdapter.Wrapper getWrapper();
-    method protected void onAddPresenter(android.support.v17.leanback.widget.Presenter, int);
-    method protected void onAttachedToWindow(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method protected void onBind(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final void onBindViewHolder(android.support.v7.widget.RecyclerView.ViewHolder, int);
-    method protected void onCreate(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final android.support.v7.widget.RecyclerView.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
-    method protected void onDetachedFromWindow(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method protected void onUnbind(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final void onViewAttachedToWindow(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void onViewDetachedFromWindow(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void onViewRecycled(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void setAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setAdapterListener(android.support.v17.leanback.widget.ItemBridgeAdapter.AdapterListener);
-    method public void setPresenter(android.support.v17.leanback.widget.PresenterSelector);
-    method public void setPresenterMapper(java.util.ArrayList<android.support.v17.leanback.widget.Presenter>);
-    method public void setWrapper(android.support.v17.leanback.widget.ItemBridgeAdapter.Wrapper);
-  }
-
-  public static class ItemBridgeAdapter.AdapterListener {
-    ctor public ItemBridgeAdapter.AdapterListener();
-    method public void onAddPresenter(android.support.v17.leanback.widget.Presenter, int);
-    method public void onAttachedToWindow(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onBind(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onCreate(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onDetachedFromWindow(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onUnbind(android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder);
-  }
-
-  public class ItemBridgeAdapter.ViewHolder extends android.support.v7.widget.RecyclerView.ViewHolder implements android.support.v17.leanback.widget.FacetProvider {
-    method public final java.lang.Object getExtraObject();
-    method public java.lang.Object getFacet(java.lang.Class<?>);
-    method public final java.lang.Object getItem();
-    method public final android.support.v17.leanback.widget.Presenter getPresenter();
-    method public final android.support.v17.leanback.widget.Presenter.ViewHolder getViewHolder();
-    method public void setExtraObject(java.lang.Object);
-  }
-
-  public static abstract class ItemBridgeAdapter.Wrapper {
-    ctor public ItemBridgeAdapter.Wrapper();
-    method public abstract android.view.View createWrapper(android.view.View);
-    method public abstract void wrap(android.view.View, android.view.View);
-  }
-
-  public class ItemBridgeAdapterShadowOverlayWrapper extends android.support.v17.leanback.widget.ItemBridgeAdapter.Wrapper {
-    ctor public ItemBridgeAdapterShadowOverlayWrapper(android.support.v17.leanback.widget.ShadowOverlayHelper);
-    method public android.view.View createWrapper(android.view.View);
-    method public void wrap(android.view.View, android.view.View);
-  }
-
-  public class ListRow extends android.support.v17.leanback.widget.Row {
-    ctor public ListRow(android.support.v17.leanback.widget.HeaderItem, android.support.v17.leanback.widget.ObjectAdapter);
-    ctor public ListRow(long, android.support.v17.leanback.widget.HeaderItem, android.support.v17.leanback.widget.ObjectAdapter);
-    ctor public ListRow(android.support.v17.leanback.widget.ObjectAdapter);
-    method public final android.support.v17.leanback.widget.ObjectAdapter getAdapter();
-    method public java.lang.CharSequence getContentDescription();
-    method public void setContentDescription(java.lang.CharSequence);
-  }
-
-  public final class ListRowHoverCardView extends android.widget.LinearLayout {
-    ctor public ListRowHoverCardView(android.content.Context);
-    ctor public ListRowHoverCardView(android.content.Context, android.util.AttributeSet);
-    ctor public ListRowHoverCardView(android.content.Context, android.util.AttributeSet, int);
-    method public final java.lang.CharSequence getDescription();
-    method public final java.lang.CharSequence getTitle();
-    method public final void setDescription(java.lang.CharSequence);
-    method public final void setTitle(java.lang.CharSequence);
-  }
-
-  public class ListRowPresenter extends android.support.v17.leanback.widget.RowPresenter {
-    ctor public ListRowPresenter();
-    ctor public ListRowPresenter(int);
-    ctor public ListRowPresenter(int, boolean);
-    method public final boolean areChildRoundedCornersEnabled();
-    method protected android.support.v17.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected android.support.v17.leanback.widget.ShadowOverlayHelper.Options createShadowOverlayOptions();
-    method public final void enableChildRoundedCorners(boolean);
-    method public int getExpandedRowHeight();
-    method public final int getFocusZoomFactor();
-    method public final android.support.v17.leanback.widget.PresenterSelector getHoverCardPresenterSelector();
-    method public int getRecycledPoolSize(android.support.v17.leanback.widget.Presenter);
-    method public int getRowHeight();
-    method public final boolean getShadowEnabled();
-    method public final deprecated int getZoomFactor();
-    method public final boolean isFocusDimmerUsed();
-    method public final boolean isKeepChildForeground();
-    method public boolean isUsingDefaultListSelectEffect();
-    method public final boolean isUsingDefaultSelectEffect();
-    method public boolean isUsingDefaultShadow();
-    method public boolean isUsingZOrder(android.content.Context);
-    method public void setExpandedRowHeight(int);
-    method public final void setHoverCardPresenterSelector(android.support.v17.leanback.widget.PresenterSelector);
-    method public final void setKeepChildForeground(boolean);
-    method public void setNumRows(int);
-    method public void setRecycledPoolSize(android.support.v17.leanback.widget.Presenter, int);
-    method public void setRowHeight(int);
-    method public final void setShadowEnabled(boolean);
-  }
-
-  public static class ListRowPresenter.SelectItemViewHolderTask extends android.support.v17.leanback.widget.Presenter.ViewHolderTask {
-    ctor public ListRowPresenter.SelectItemViewHolderTask(int);
-    method public int getItemPosition();
-    method public android.support.v17.leanback.widget.Presenter.ViewHolderTask getItemTask();
-    method public boolean isSmoothScroll();
-    method public void setItemPosition(int);
-    method public void setItemTask(android.support.v17.leanback.widget.Presenter.ViewHolderTask);
-    method public void setSmoothScroll(boolean);
-  }
-
-  public static class ListRowPresenter.ViewHolder extends android.support.v17.leanback.widget.RowPresenter.ViewHolder {
-    ctor public ListRowPresenter.ViewHolder(android.view.View, android.support.v17.leanback.widget.HorizontalGridView, android.support.v17.leanback.widget.ListRowPresenter);
-    method public final android.support.v17.leanback.widget.ItemBridgeAdapter getBridgeAdapter();
-    method public final android.support.v17.leanback.widget.HorizontalGridView getGridView();
-    method public android.support.v17.leanback.widget.Presenter.ViewHolder getItemViewHolder(int);
-    method public final android.support.v17.leanback.widget.ListRowPresenter getListRowPresenter();
-    method public int getSelectedPosition();
-  }
-
-  public final class ListRowView extends android.widget.LinearLayout {
-    ctor public ListRowView(android.content.Context);
-    ctor public ListRowView(android.content.Context, android.util.AttributeSet);
-    ctor public ListRowView(android.content.Context, android.util.AttributeSet, int);
-    method public android.support.v17.leanback.widget.HorizontalGridView getGridView();
-  }
-
-  public abstract interface MultiActionsProvider {
-    method public abstract android.support.v17.leanback.widget.MultiActionsProvider.MultiAction[] getActions();
-  }
-
-  public static class MultiActionsProvider.MultiAction {
-    ctor public MultiActionsProvider.MultiAction(long);
-    method public android.graphics.drawable.Drawable getCurrentDrawable();
-    method public android.graphics.drawable.Drawable[] getDrawables();
-    method public long getId();
-    method public int getIndex();
-    method public void incrementIndex();
-    method public void setDrawables(android.graphics.drawable.Drawable[]);
-    method public void setIndex(int);
-  }
-
-  public abstract class ObjectAdapter {
-    ctor public ObjectAdapter(android.support.v17.leanback.widget.PresenterSelector);
-    ctor public ObjectAdapter(android.support.v17.leanback.widget.Presenter);
-    ctor public ObjectAdapter();
-    method public abstract java.lang.Object get(int);
-    method public long getId(int);
-    method public final android.support.v17.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public final android.support.v17.leanback.widget.PresenterSelector getPresenterSelector();
-    method public final boolean hasStableIds();
-    method public boolean isImmediateNotifySupported();
-    method protected final void notifyChanged();
-    method public final void notifyItemRangeChanged(int, int);
-    method protected final void notifyItemRangeInserted(int, int);
-    method protected final void notifyItemRangeRemoved(int, int);
-    method protected void onHasStableIdsChanged();
-    method protected void onPresenterSelectorChanged();
-    method public final void registerObserver(android.support.v17.leanback.widget.ObjectAdapter.DataObserver);
-    method public final void setHasStableIds(boolean);
-    method public final void setPresenterSelector(android.support.v17.leanback.widget.PresenterSelector);
-    method public abstract int size();
-    method public final void unregisterAllObservers();
-    method public final void unregisterObserver(android.support.v17.leanback.widget.ObjectAdapter.DataObserver);
-    field public static final int NO_ID = -1; // 0xffffffff
-  }
-
-  public static abstract class ObjectAdapter.DataObserver {
-    ctor public ObjectAdapter.DataObserver();
-    method public void onChanged();
-    method public void onItemRangeChanged(int, int);
-    method public void onItemRangeInserted(int, int);
-    method public void onItemRangeRemoved(int, int);
-  }
-
-  public abstract interface OnActionClickedListener {
-    method public abstract void onActionClicked(android.support.v17.leanback.widget.Action);
-  }
-
-  public abstract interface OnChildLaidOutListener {
-    method public abstract void onChildLaidOut(android.view.ViewGroup, android.view.View, int, long);
-  }
-
-  public abstract deprecated interface OnChildSelectedListener {
-    method public abstract void onChildSelected(android.view.ViewGroup, android.view.View, int, long);
-  }
-
-  public abstract class OnChildViewHolderSelectedListener {
-    ctor public OnChildViewHolderSelectedListener();
-    method public void onChildViewHolderSelected(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder, int, int);
-    method public void onChildViewHolderSelectedAndPositioned(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder, int, int);
-  }
-
-  public abstract interface OnItemViewClickedListener implements android.support.v17.leanback.widget.BaseOnItemViewClickedListener {
-  }
-
-  public abstract interface OnItemViewSelectedListener implements android.support.v17.leanback.widget.BaseOnItemViewSelectedListener {
-  }
-
-  public class PageRow extends android.support.v17.leanback.widget.Row {
-    ctor public PageRow(android.support.v17.leanback.widget.HeaderItem);
-    method public final boolean isRenderedAsRowView();
-  }
-
-  public abstract class Parallax<PropertyT extends android.util.Property> {
-    ctor public Parallax();
-    method public android.support.v17.leanback.widget.ParallaxEffect addEffect(android.support.v17.leanback.widget.Parallax.PropertyMarkerValue...);
-    method public final PropertyT addProperty(java.lang.String);
-    method public abstract PropertyT createProperty(java.lang.String, int);
-    method public java.util.List<android.support.v17.leanback.widget.ParallaxEffect> getEffects();
-    method public abstract float getMaxValue();
-    method public final java.util.List<PropertyT> getProperties();
-    method public void removeAllEffects();
-    method public void removeEffect(android.support.v17.leanback.widget.ParallaxEffect);
-    method public void updateValues();
-  }
-
-  public static class Parallax.FloatProperty extends android.util.Property {
-    ctor public Parallax.FloatProperty(java.lang.String, int);
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue at(float, float);
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue atAbsolute(float);
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue atFraction(float);
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue atMax();
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue atMin();
-    method public final java.lang.Float get(android.support.v17.leanback.widget.Parallax);
-    method public final int getIndex();
-    method public final float getValue(android.support.v17.leanback.widget.Parallax);
-    method public final void set(android.support.v17.leanback.widget.Parallax, java.lang.Float);
-    method public final void setValue(android.support.v17.leanback.widget.Parallax, float);
-    field public static final float UNKNOWN_AFTER = 3.4028235E38f;
-    field public static final float UNKNOWN_BEFORE = -3.4028235E38f;
-  }
-
-  public static class Parallax.IntProperty extends android.util.Property {
-    ctor public Parallax.IntProperty(java.lang.String, int);
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue at(int, float);
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue atAbsolute(int);
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue atFraction(float);
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue atMax();
-    method public final android.support.v17.leanback.widget.Parallax.PropertyMarkerValue atMin();
-    method public final java.lang.Integer get(android.support.v17.leanback.widget.Parallax);
-    method public final int getIndex();
-    method public final int getValue(android.support.v17.leanback.widget.Parallax);
-    method public final void set(android.support.v17.leanback.widget.Parallax, java.lang.Integer);
-    method public final void setValue(android.support.v17.leanback.widget.Parallax, int);
-    field public static final int UNKNOWN_AFTER = 2147483647; // 0x7fffffff
-    field public static final int UNKNOWN_BEFORE = -2147483648; // 0x80000000
-  }
-
-  public static class Parallax.PropertyMarkerValue<PropertyT> {
-    ctor public Parallax.PropertyMarkerValue(PropertyT);
-    method public PropertyT getProperty();
-  }
-
-  public abstract class ParallaxEffect {
-    method public final void addTarget(android.support.v17.leanback.widget.ParallaxTarget);
-    method public final java.util.List<android.support.v17.leanback.widget.Parallax.PropertyMarkerValue> getPropertyRanges();
-    method public final java.util.List<android.support.v17.leanback.widget.ParallaxTarget> getTargets();
-    method public final void performMapping(android.support.v17.leanback.widget.Parallax);
-    method public final void removeTarget(android.support.v17.leanback.widget.ParallaxTarget);
-    method public final void setPropertyRanges(android.support.v17.leanback.widget.Parallax.PropertyMarkerValue...);
-    method public final android.support.v17.leanback.widget.ParallaxEffect target(android.support.v17.leanback.widget.ParallaxTarget);
-    method public final android.support.v17.leanback.widget.ParallaxEffect target(java.lang.Object, android.animation.PropertyValuesHolder);
-    method public final <T, V extends java.lang.Number> android.support.v17.leanback.widget.ParallaxEffect target(T, android.util.Property<T, V>);
-  }
-
-  public abstract class ParallaxTarget {
-    ctor public ParallaxTarget();
-    method public void directUpdate(java.lang.Number);
-    method public boolean isDirectMapping();
-    method public void update(float);
-  }
-
-  public static final class ParallaxTarget.DirectPropertyTarget<T, V extends java.lang.Number> extends android.support.v17.leanback.widget.ParallaxTarget {
-    ctor public ParallaxTarget.DirectPropertyTarget(java.lang.Object, android.util.Property<T, V>);
-  }
-
-  public static final class ParallaxTarget.PropertyValuesHolderTarget extends android.support.v17.leanback.widget.ParallaxTarget {
-    ctor public ParallaxTarget.PropertyValuesHolderTarget(java.lang.Object, android.animation.PropertyValuesHolder);
-  }
-
-  public class PlaybackControlsRow extends android.support.v17.leanback.widget.Row {
-    ctor public PlaybackControlsRow(java.lang.Object);
-    ctor public PlaybackControlsRow();
-    method public android.support.v17.leanback.widget.Action getActionForKeyCode(int);
-    method public android.support.v17.leanback.widget.Action getActionForKeyCode(android.support.v17.leanback.widget.ObjectAdapter, int);
-    method public int getBufferedProgress();
-    method public long getBufferedProgressLong();
-    method public int getCurrentTime();
-    method public long getCurrentTimeLong();
-    method public final android.graphics.drawable.Drawable getImageDrawable();
-    method public final java.lang.Object getItem();
-    method public final android.support.v17.leanback.widget.ObjectAdapter getPrimaryActionsAdapter();
-    method public final android.support.v17.leanback.widget.ObjectAdapter getSecondaryActionsAdapter();
-    method public int getTotalTime();
-    method public long getTotalTimeLong();
-    method public void setBufferedProgress(int);
-    method public void setBufferedProgressLong(long);
-    method public void setCurrentTime(int);
-    method public void setCurrentTimeLong(long);
-    method public final void setImageBitmap(android.content.Context, android.graphics.Bitmap);
-    method public final void setImageDrawable(android.graphics.drawable.Drawable);
-    method public final void setPrimaryActionsAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public final void setSecondaryActionsAdapter(android.support.v17.leanback.widget.ObjectAdapter);
-    method public void setTotalTime(int);
-    method public void setTotalTimeLong(long);
-  }
-
-  public static class PlaybackControlsRow.ClosedCaptioningAction extends android.support.v17.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context);
-    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context, int);
-    field public static int OFF;
-    field public static int ON;
-  }
-
-  public static class PlaybackControlsRow.FastForwardAction extends android.support.v17.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context);
-    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context, int);
-  }
-
-  public static class PlaybackControlsRow.HighQualityAction extends android.support.v17.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context);
-    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context, int);
-    field public static int OFF;
-    field public static int ON;
-  }
-
-  public static class PlaybackControlsRow.MoreActions extends android.support.v17.leanback.widget.Action {
-    ctor public PlaybackControlsRow.MoreActions(android.content.Context);
-  }
-
-  public static abstract class PlaybackControlsRow.MultiAction extends android.support.v17.leanback.widget.Action {
-    ctor public PlaybackControlsRow.MultiAction(int);
-    method public int getActionCount();
-    method public android.graphics.drawable.Drawable getDrawable(int);
-    method public int getIndex();
-    method public java.lang.String getLabel(int);
-    method public java.lang.String getSecondaryLabel(int);
-    method public void nextIndex();
-    method public void setDrawables(android.graphics.drawable.Drawable[]);
-    method public void setIndex(int);
-    method public void setLabels(java.lang.String[]);
-    method public void setSecondaryLabels(java.lang.String[]);
-  }
-
-  public static class PlaybackControlsRow.PictureInPictureAction extends android.support.v17.leanback.widget.Action {
-    ctor public PlaybackControlsRow.PictureInPictureAction(android.content.Context);
-  }
-
-  public static class PlaybackControlsRow.PlayPauseAction extends android.support.v17.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.PlayPauseAction(android.content.Context);
-    field public static int PAUSE;
-    field public static int PLAY;
-  }
-
-  public static class PlaybackControlsRow.RepeatAction extends android.support.v17.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context);
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context, int);
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context, int, int);
-    field public static int ALL;
-    field public static int NONE;
-    field public static int ONE;
-  }
-
-  public static class PlaybackControlsRow.RewindAction extends android.support.v17.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.RewindAction(android.content.Context);
-    ctor public PlaybackControlsRow.RewindAction(android.content.Context, int);
-  }
-
-  public static class PlaybackControlsRow.ShuffleAction extends android.support.v17.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context);
-    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context, int);
-    field public static int OFF;
-    field public static int ON;
-  }
-
-  public static class PlaybackControlsRow.SkipNextAction extends android.support.v17.leanback.widget.Action {
-    ctor public PlaybackControlsRow.SkipNextAction(android.content.Context);
-  }
-
-  public static class PlaybackControlsRow.SkipPreviousAction extends android.support.v17.leanback.widget.Action {
-    ctor public PlaybackControlsRow.SkipPreviousAction(android.content.Context);
-  }
-
-  public static abstract class PlaybackControlsRow.ThumbsAction extends android.support.v17.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ThumbsAction(int, android.content.Context, int, int);
-    field public static int OUTLINE;
-    field public static int SOLID;
-  }
-
-  public static class PlaybackControlsRow.ThumbsDownAction extends android.support.v17.leanback.widget.PlaybackControlsRow.ThumbsAction {
-    ctor public PlaybackControlsRow.ThumbsDownAction(android.content.Context);
-  }
-
-  public static class PlaybackControlsRow.ThumbsUpAction extends android.support.v17.leanback.widget.PlaybackControlsRow.ThumbsAction {
-    ctor public PlaybackControlsRow.ThumbsUpAction(android.content.Context);
-  }
-
-  public class PlaybackControlsRowPresenter extends android.support.v17.leanback.widget.PlaybackRowPresenter {
-    ctor public PlaybackControlsRowPresenter(android.support.v17.leanback.widget.Presenter);
-    ctor public PlaybackControlsRowPresenter();
-    method public boolean areSecondaryActionsHidden();
-    method protected android.support.v17.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public int getBackgroundColor();
-    method public android.support.v17.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public int getProgressColor();
-    method public void setBackgroundColor(int);
-    method public void setOnActionClickedListener(android.support.v17.leanback.widget.OnActionClickedListener);
-    method public void setProgressColor(int);
-    method public void setSecondaryActionsHidden(boolean);
-    method public void showBottomSpace(android.support.v17.leanback.widget.PlaybackControlsRowPresenter.ViewHolder, boolean);
-    method public void showPrimaryActions(android.support.v17.leanback.widget.PlaybackControlsRowPresenter.ViewHolder);
-  }
-
-  public class PlaybackControlsRowPresenter.ViewHolder extends android.support.v17.leanback.widget.PlaybackRowPresenter.ViewHolder {
-    field public final android.support.v17.leanback.widget.Presenter.ViewHolder mDescriptionViewHolder;
-  }
-
-  public abstract class PlaybackRowPresenter extends android.support.v17.leanback.widget.RowPresenter {
-    ctor public PlaybackRowPresenter();
-    method public void onReappear(android.support.v17.leanback.widget.RowPresenter.ViewHolder);
-  }
-
-  public static class PlaybackRowPresenter.ViewHolder extends android.support.v17.leanback.widget.RowPresenter.ViewHolder {
-    ctor public PlaybackRowPresenter.ViewHolder(android.view.View);
-  }
-
-  public abstract class Presenter implements android.support.v17.leanback.widget.FacetProvider {
-    ctor public Presenter();
-    method protected static void cancelAnimationsRecursive(android.view.View);
-    method public final java.lang.Object getFacet(java.lang.Class<?>);
-    method public abstract void onBindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public abstract android.support.v17.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public abstract void onUnbindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public void onViewAttachedToWindow(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public void onViewDetachedFromWindow(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public final void setFacet(java.lang.Class<?>, java.lang.Object);
-    method public void setOnClickListener(android.support.v17.leanback.widget.Presenter.ViewHolder, android.view.View.OnClickListener);
-  }
-
-  public static class Presenter.ViewHolder implements android.support.v17.leanback.widget.FacetProvider {
-    ctor public Presenter.ViewHolder(android.view.View);
-    method public final java.lang.Object getFacet(java.lang.Class<?>);
-    method public final void setFacet(java.lang.Class<?>, java.lang.Object);
-    field public final android.view.View view;
-  }
-
-  public static abstract class Presenter.ViewHolderTask {
-    ctor public Presenter.ViewHolderTask();
-    method public void run(android.support.v17.leanback.widget.Presenter.ViewHolder);
-  }
-
-  public abstract class PresenterSelector {
-    ctor public PresenterSelector();
-    method public abstract android.support.v17.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public android.support.v17.leanback.widget.Presenter[] getPresenters();
-  }
-
-  public abstract class PresenterSwitcher {
-    ctor public PresenterSwitcher();
-    method public void clear();
-    method public final android.view.ViewGroup getParentViewGroup();
-    method public void init(android.view.ViewGroup, android.support.v17.leanback.widget.PresenterSelector);
-    method protected abstract void insertView(android.view.View);
-    method protected void onViewSelected(android.view.View);
-    method public void select(java.lang.Object);
-    method protected void showView(android.view.View, boolean);
-    method public void unselect();
-  }
-
-  public class RecyclerViewParallax extends android.support.v17.leanback.widget.Parallax {
-    ctor public RecyclerViewParallax();
-    method public android.support.v17.leanback.widget.RecyclerViewParallax.ChildPositionProperty createProperty(java.lang.String, int);
-    method public float getMaxValue();
-    method public android.support.v7.widget.RecyclerView getRecyclerView();
-    method public void setRecyclerView(android.support.v7.widget.RecyclerView);
-  }
-
-  public static final class RecyclerViewParallax.ChildPositionProperty extends android.support.v17.leanback.widget.Parallax.IntProperty {
-    method public android.support.v17.leanback.widget.RecyclerViewParallax.ChildPositionProperty adapterPosition(int);
-    method public android.support.v17.leanback.widget.RecyclerViewParallax.ChildPositionProperty fraction(float);
-    method public int getAdapterPosition();
-    method public float getFraction();
-    method public int getOffset();
-    method public int getViewId();
-    method public android.support.v17.leanback.widget.RecyclerViewParallax.ChildPositionProperty offset(int);
-    method public android.support.v17.leanback.widget.RecyclerViewParallax.ChildPositionProperty viewId(int);
-  }
-
-  public class Row {
-    ctor public Row(long, android.support.v17.leanback.widget.HeaderItem);
-    ctor public Row(android.support.v17.leanback.widget.HeaderItem);
-    ctor public Row();
-    method public final android.support.v17.leanback.widget.HeaderItem getHeaderItem();
-    method public final long getId();
-    method public boolean isRenderedAsRowView();
-    method public final void setHeaderItem(android.support.v17.leanback.widget.HeaderItem);
-    method public final void setId(long);
-  }
-
-  public class RowHeaderPresenter extends android.support.v17.leanback.widget.Presenter {
-    ctor public RowHeaderPresenter();
-    method protected static float getFontDescent(android.widget.TextView, android.graphics.Paint);
-    method public int getSpaceUnderBaseline(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder);
-    method public boolean isNullItemVisibilityGone();
-    method public void onBindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public android.support.v17.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method protected void onSelectLevelChanged(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder);
-    method public void onUnbindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public void setNullItemVisibilityGone(boolean);
-    method public final void setSelectLevel(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, float);
-  }
-
-  public static class RowHeaderPresenter.ViewHolder extends android.support.v17.leanback.widget.Presenter.ViewHolder {
-    ctor public RowHeaderPresenter.ViewHolder(android.view.View);
-    method public final float getSelectLevel();
-  }
-
-  public final class RowHeaderView extends android.widget.TextView {
-    ctor public RowHeaderView(android.content.Context);
-    ctor public RowHeaderView(android.content.Context, android.util.AttributeSet);
-    ctor public RowHeaderView(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public abstract class RowPresenter extends android.support.v17.leanback.widget.Presenter {
-    ctor public RowPresenter();
-    method protected abstract android.support.v17.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected void dispatchItemSelectedListener(android.support.v17.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public void freeze(android.support.v17.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public final android.support.v17.leanback.widget.RowHeaderPresenter getHeaderPresenter();
-    method public final android.support.v17.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public final boolean getSelectEffectEnabled();
-    method public final float getSelectLevel(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public final int getSyncActivatePolicy();
-    method protected void initializeRowViewHolder(android.support.v17.leanback.widget.RowPresenter.ViewHolder);
-    method protected boolean isClippingChildren();
-    method public boolean isUsingDefaultSelectEffect();
-    method protected void onBindRowViewHolder(android.support.v17.leanback.widget.RowPresenter.ViewHolder, java.lang.Object);
-    method public final void onBindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final android.support.v17.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method protected void onRowViewAttachedToWindow(android.support.v17.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onRowViewDetachedFromWindow(android.support.v17.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onRowViewExpanded(android.support.v17.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method protected void onRowViewSelected(android.support.v17.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method protected void onSelectLevelChanged(android.support.v17.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onUnbindRowViewHolder(android.support.v17.leanback.widget.RowPresenter.ViewHolder);
-    method public final void onUnbindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public final void onViewAttachedToWindow(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public final void onViewDetachedFromWindow(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public void setEntranceTransitionState(android.support.v17.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public final void setHeaderPresenter(android.support.v17.leanback.widget.RowHeaderPresenter);
-    method public final void setRowViewExpanded(android.support.v17.leanback.widget.Presenter.ViewHolder, boolean);
-    method public final void setRowViewSelected(android.support.v17.leanback.widget.Presenter.ViewHolder, boolean);
-    method public final void setSelectEffectEnabled(boolean);
-    method public final void setSelectLevel(android.support.v17.leanback.widget.Presenter.ViewHolder, float);
-    method public final void setSyncActivatePolicy(int);
-    field public static final int SYNC_ACTIVATED_CUSTOM = 0; // 0x0
-    field public static final int SYNC_ACTIVATED_TO_EXPANDED = 1; // 0x1
-    field public static final int SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED = 3; // 0x3
-    field public static final int SYNC_ACTIVATED_TO_SELECTED = 2; // 0x2
-  }
-
-  public static class RowPresenter.ViewHolder extends android.support.v17.leanback.widget.Presenter.ViewHolder {
-    ctor public RowPresenter.ViewHolder(android.view.View);
-    method public final android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder getHeaderViewHolder();
-    method public final android.support.v17.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public final android.support.v17.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public android.view.View.OnKeyListener getOnKeyListener();
-    method public final android.support.v17.leanback.widget.Row getRow();
-    method public final java.lang.Object getRowObject();
-    method public final float getSelectLevel();
-    method public java.lang.Object getSelectedItem();
-    method public android.support.v17.leanback.widget.Presenter.ViewHolder getSelectedItemViewHolder();
-    method public final boolean isExpanded();
-    method public final boolean isSelected();
-    method public final void setActivated(boolean);
-    method public final void setOnItemViewClickedListener(android.support.v17.leanback.widget.BaseOnItemViewClickedListener);
-    method public final void setOnItemViewSelectedListener(android.support.v17.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setOnKeyListener(android.view.View.OnKeyListener);
-    method public final void syncActivatedStatus(android.view.View);
-    field protected final android.support.v17.leanback.graphics.ColorOverlayDimmer mColorDimmer;
-  }
-
-  public class SearchBar extends android.widget.RelativeLayout {
-    ctor public SearchBar(android.content.Context);
-    ctor public SearchBar(android.content.Context, android.util.AttributeSet);
-    ctor public SearchBar(android.content.Context, android.util.AttributeSet, int);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public java.lang.CharSequence getHint();
-    method public java.lang.String getTitle();
-    method public boolean isRecognizing();
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setPermissionListener(android.support.v17.leanback.widget.SearchBar.SearchBarPermissionListener);
-    method public void setSearchAffordanceColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchBarListener(android.support.v17.leanback.widget.SearchBar.SearchBarListener);
-    method public void setSearchQuery(java.lang.String);
-    method public void setSpeechRecognitionCallback(android.support.v17.leanback.widget.SpeechRecognitionCallback);
-    method public void setSpeechRecognizer(android.speech.SpeechRecognizer);
-    method public void setTitle(java.lang.String);
-    method public void startRecognition();
-    method public void stopRecognition();
-  }
-
-  public static abstract interface SearchBar.SearchBarListener {
-    method public abstract void onKeyboardDismiss(java.lang.String);
-    method public abstract void onSearchQueryChange(java.lang.String);
-    method public abstract void onSearchQuerySubmit(java.lang.String);
-  }
-
-  public static abstract interface SearchBar.SearchBarPermissionListener {
-    method public abstract void requestAudioPermission();
-  }
-
-  public class SearchEditText extends android.support.v17.leanback.widget.StreamingTextView {
-    ctor public SearchEditText(android.content.Context);
-    ctor public SearchEditText(android.content.Context, android.util.AttributeSet);
-    ctor public SearchEditText(android.content.Context, android.util.AttributeSet, int);
-    method public void setOnKeyboardDismissListener(android.support.v17.leanback.widget.SearchEditText.OnKeyboardDismissListener);
-  }
-
-  public static abstract interface SearchEditText.OnKeyboardDismissListener {
-    method public abstract void onKeyboardDismiss();
-  }
-
-  public class SearchOrbView extends android.widget.FrameLayout implements android.view.View.OnClickListener {
-    ctor public SearchOrbView(android.content.Context);
-    ctor public SearchOrbView(android.content.Context, android.util.AttributeSet);
-    ctor public SearchOrbView(android.content.Context, android.util.AttributeSet, int);
-    method public void enableOrbColorAnimation(boolean);
-    method public int getOrbColor();
-    method public android.support.v17.leanback.widget.SearchOrbView.Colors getOrbColors();
-    method public android.graphics.drawable.Drawable getOrbIcon();
-    method public void onClick(android.view.View);
-    method public void setOnOrbClickedListener(android.view.View.OnClickListener);
-    method public void setOrbColor(int);
-    method public deprecated void setOrbColor(int, int);
-    method public void setOrbColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setOrbIcon(android.graphics.drawable.Drawable);
-  }
-
-  public static class SearchOrbView.Colors {
-    ctor public SearchOrbView.Colors(int);
-    ctor public SearchOrbView.Colors(int, int);
-    ctor public SearchOrbView.Colors(int, int, int);
-    method public static int getBrightColor(int);
-    field public int brightColor;
-    field public int color;
-    field public int iconColor;
-  }
-
-  public class SectionRow extends android.support.v17.leanback.widget.Row {
-    ctor public SectionRow(android.support.v17.leanback.widget.HeaderItem);
-    ctor public SectionRow(long, java.lang.String);
-    ctor public SectionRow(java.lang.String);
-    method public final boolean isRenderedAsRowView();
-  }
-
-  public class ShadowOverlayContainer extends android.widget.FrameLayout {
-    ctor public ShadowOverlayContainer(android.content.Context);
-    ctor public ShadowOverlayContainer(android.content.Context, android.util.AttributeSet);
-    ctor public ShadowOverlayContainer(android.content.Context, android.util.AttributeSet, int);
-    method public int getShadowType();
-    method public android.view.View getWrappedView();
-    method public deprecated void initialize(boolean, boolean);
-    method public deprecated void initialize(boolean, boolean, boolean);
-    method public static void prepareParentForShadow(android.view.ViewGroup);
-    method public void setOverlayColor(int);
-    method public void setShadowFocusLevel(float);
-    method public static boolean supportsDynamicShadow();
-    method public static boolean supportsShadow();
-    method public void useDynamicShadow();
-    method public void useDynamicShadow(float, float);
-    method public void useStaticShadow();
-    method public void wrap(android.view.View);
-    field public static final int SHADOW_DYNAMIC = 3; // 0x3
-    field public static final int SHADOW_NONE = 1; // 0x1
-    field public static final int SHADOW_STATIC = 2; // 0x2
-  }
-
-  public final class ShadowOverlayHelper {
-    method public android.support.v17.leanback.widget.ShadowOverlayContainer createShadowOverlayContainer(android.content.Context);
-    method public int getShadowType();
-    method public boolean needsOverlay();
-    method public boolean needsRoundedCorner();
-    method public boolean needsWrapper();
-    method public void onViewCreated(android.view.View);
-    method public void prepareParentForShadow(android.view.ViewGroup);
-    method public static void setNoneWrapperOverlayColor(android.view.View, int);
-    method public static void setNoneWrapperShadowFocusLevel(android.view.View, float);
-    method public void setOverlayColor(android.view.View, int);
-    method public void setShadowFocusLevel(android.view.View, float);
-    method public static boolean supportsDynamicShadow();
-    method public static boolean supportsForeground();
-    method public static boolean supportsRoundedCorner();
-    method public static boolean supportsShadow();
-    field public static final int SHADOW_DYNAMIC = 3; // 0x3
-    field public static final int SHADOW_NONE = 1; // 0x1
-    field public static final int SHADOW_STATIC = 2; // 0x2
-  }
-
-  public static final class ShadowOverlayHelper.Builder {
-    ctor public ShadowOverlayHelper.Builder();
-    method public android.support.v17.leanback.widget.ShadowOverlayHelper build(android.content.Context);
-    method public android.support.v17.leanback.widget.ShadowOverlayHelper.Builder keepForegroundDrawable(boolean);
-    method public android.support.v17.leanback.widget.ShadowOverlayHelper.Builder needsOverlay(boolean);
-    method public android.support.v17.leanback.widget.ShadowOverlayHelper.Builder needsRoundedCorner(boolean);
-    method public android.support.v17.leanback.widget.ShadowOverlayHelper.Builder needsShadow(boolean);
-    method public android.support.v17.leanback.widget.ShadowOverlayHelper.Builder options(android.support.v17.leanback.widget.ShadowOverlayHelper.Options);
-    method public android.support.v17.leanback.widget.ShadowOverlayHelper.Builder preferZOrder(boolean);
-  }
-
-  public static final class ShadowOverlayHelper.Options {
-    ctor public ShadowOverlayHelper.Options();
-    method public android.support.v17.leanback.widget.ShadowOverlayHelper.Options dynamicShadowZ(float, float);
-    method public final float getDynamicShadowFocusedZ();
-    method public final float getDynamicShadowUnfocusedZ();
-    method public final int getRoundedCornerRadius();
-    method public android.support.v17.leanback.widget.ShadowOverlayHelper.Options roundedCornerRadius(int);
-    field public static final android.support.v17.leanback.widget.ShadowOverlayHelper.Options DEFAULT;
-  }
-
-  public final class SinglePresenterSelector extends android.support.v17.leanback.widget.PresenterSelector {
-    ctor public SinglePresenterSelector(android.support.v17.leanback.widget.Presenter);
-    method public android.support.v17.leanback.widget.Presenter getPresenter(java.lang.Object);
-  }
-
-  public class SparseArrayObjectAdapter extends android.support.v17.leanback.widget.ObjectAdapter {
-    ctor public SparseArrayObjectAdapter(android.support.v17.leanback.widget.PresenterSelector);
-    ctor public SparseArrayObjectAdapter(android.support.v17.leanback.widget.Presenter);
-    ctor public SparseArrayObjectAdapter();
-    method public void clear(int);
-    method public void clear();
-    method public java.lang.Object get(int);
-    method public int indexOf(java.lang.Object);
-    method public int indexOf(int);
-    method public java.lang.Object lookup(int);
-    method public void notifyArrayItemRangeChanged(int, int);
-    method public void set(int, java.lang.Object);
-    method public int size();
-  }
-
-  public class SpeechOrbView extends android.support.v17.leanback.widget.SearchOrbView {
-    ctor public SpeechOrbView(android.content.Context);
-    ctor public SpeechOrbView(android.content.Context, android.util.AttributeSet);
-    ctor public SpeechOrbView(android.content.Context, android.util.AttributeSet, int);
-    method public void setListeningOrbColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setNotListeningOrbColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setSoundLevel(int);
-    method public void showListening();
-    method public void showNotListening();
-  }
-
-  public abstract interface SpeechRecognitionCallback {
-    method public abstract void recognizeSpeech();
-  }
-
-   class StreamingTextView extends android.widget.EditText {
-    ctor public StreamingTextView(android.content.Context, android.util.AttributeSet);
-    ctor public StreamingTextView(android.content.Context, android.util.AttributeSet, int);
-    method public static boolean isLayoutRtl(android.view.View);
-    method public void reset();
-    method public void setFinalRecognizedText(java.lang.CharSequence);
-    method public void updateRecognizedText(java.lang.String, java.lang.String);
-    method public void updateRecognizedText(java.lang.String, java.util.List<java.lang.Float>);
-  }
-
-  public class TitleHelper {
-    ctor public TitleHelper(android.view.ViewGroup, android.view.View);
-    method public android.support.v17.leanback.widget.BrowseFrameLayout.OnFocusSearchListener getOnFocusSearchListener();
-    method public android.view.ViewGroup getSceneRoot();
-    method public android.view.View getTitleView();
-    method public void showTitle(boolean);
-  }
-
-  public class TitleView extends android.widget.FrameLayout implements android.support.v17.leanback.widget.TitleViewAdapter.Provider {
-    ctor public TitleView(android.content.Context);
-    ctor public TitleView(android.content.Context, android.util.AttributeSet);
-    ctor public TitleView(android.content.Context, android.util.AttributeSet, int);
-    method public void enableAnimation(boolean);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.support.v17.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public android.view.View getSearchAffordanceView();
-    method public java.lang.CharSequence getTitle();
-    method public android.support.v17.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void updateComponentsVisibility(int);
-  }
-
-  public abstract class TitleViewAdapter {
-    ctor public TitleViewAdapter();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.support.v17.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public abstract android.view.View getSearchAffordanceView();
-    method public java.lang.CharSequence getTitle();
-    method public void setAnimationEnabled(boolean);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColors(android.support.v17.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void updateComponentsVisibility(int);
-    field public static final int BRANDING_VIEW_VISIBLE = 2; // 0x2
-    field public static final int FULL_VIEW_VISIBLE = 6; // 0x6
-    field public static final int SEARCH_VIEW_VISIBLE = 4; // 0x4
-  }
-
-  public static abstract interface TitleViewAdapter.Provider {
-    method public abstract android.support.v17.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-  }
-
-  public class VerticalGridPresenter extends android.support.v17.leanback.widget.Presenter {
-    ctor public VerticalGridPresenter();
-    ctor public VerticalGridPresenter(int);
-    ctor public VerticalGridPresenter(int, boolean);
-    method public final boolean areChildRoundedCornersEnabled();
-    method protected android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder createGridViewHolder(android.view.ViewGroup);
-    method protected android.support.v17.leanback.widget.ShadowOverlayHelper.Options createShadowOverlayOptions();
-    method public final void enableChildRoundedCorners(boolean);
-    method public final int getFocusZoomFactor();
-    method public final boolean getKeepChildForeground();
-    method public int getNumberOfColumns();
-    method public final android.support.v17.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public final android.support.v17.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public final boolean getShadowEnabled();
-    method protected void initializeGridViewHolder(android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder);
-    method public final boolean isFocusDimmerUsed();
-    method public boolean isUsingDefaultShadow();
-    method public boolean isUsingZOrder(android.content.Context);
-    method public void onBindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(android.support.v17.leanback.widget.Presenter.ViewHolder);
-    method public void setEntranceTransitionState(android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder, boolean);
-    method public final void setKeepChildForeground(boolean);
-    method public void setNumberOfColumns(int);
-    method public final void setOnItemViewClickedListener(android.support.v17.leanback.widget.OnItemViewClickedListener);
-    method public final void setOnItemViewSelectedListener(android.support.v17.leanback.widget.OnItemViewSelectedListener);
-    method public final void setShadowEnabled(boolean);
-  }
-
-  public static class VerticalGridPresenter.ViewHolder extends android.support.v17.leanback.widget.Presenter.ViewHolder {
-    ctor public VerticalGridPresenter.ViewHolder(android.support.v17.leanback.widget.VerticalGridView);
-    method public android.support.v17.leanback.widget.VerticalGridView getGridView();
-  }
-
-  public class VerticalGridView extends android.support.v7.widget.RecyclerView {
-    ctor public VerticalGridView(android.content.Context);
-    ctor public VerticalGridView(android.content.Context, android.util.AttributeSet);
-    ctor public VerticalGridView(android.content.Context, android.util.AttributeSet, int);
-    method protected void initAttributes(android.content.Context, android.util.AttributeSet);
-    method public void setColumnWidth(int);
-    method public void setNumColumns(int);
-  }
-
-  public abstract interface ViewHolderTask {
-    method public abstract void run(android.support.v7.widget.RecyclerView.ViewHolder);
-  }
-
-}
-
-package android.support.v17.leanback.widget.picker {
-
-  public class Picker extends android.widget.FrameLayout {
-    ctor public Picker(android.content.Context, android.util.AttributeSet, int);
-    method public void addOnValueChangedListener(android.support.v17.leanback.widget.picker.Picker.PickerValueListener);
-    method public float getActivatedVisibleItemCount();
-    method public android.support.v17.leanback.widget.picker.PickerColumn getColumnAt(int);
-    method public int getColumnsCount();
-    method protected int getPickerItemHeightPixels();
-    method public final int getPickerItemLayoutId();
-    method public final int getPickerItemTextViewId();
-    method public int getSelectedColumn();
-    method public final java.lang.CharSequence getSeparator();
-    method public float getVisibleItemCount();
-    method public void onColumnValueChanged(int, int);
-    method public void removeOnValueChangedListener(android.support.v17.leanback.widget.picker.Picker.PickerValueListener);
-    method public void setActivatedVisibleItemCount(float);
-    method public void setColumnAt(int, android.support.v17.leanback.widget.picker.PickerColumn);
-    method public void setColumnValue(int, int, boolean);
-    method public void setColumns(java.util.List<android.support.v17.leanback.widget.picker.PickerColumn>);
-    method public final void setPickerItemTextViewId(int);
-    method public void setSelectedColumn(int);
-    method public final void setSeparator(java.lang.CharSequence);
-    method public void setVisibleItemCount(float);
-  }
-
-  public static abstract interface Picker.PickerValueListener {
-    method public abstract void onValueChanged(android.support.v17.leanback.widget.picker.Picker, int);
-  }
-
-  public class PickerColumn {
-    ctor public PickerColumn();
-    method public int getCount();
-    method public int getCurrentValue();
-    method public java.lang.CharSequence getLabelFor(int);
-    method public java.lang.String getLabelFormat();
-    method public int getMaxValue();
-    method public int getMinValue();
-    method public java.lang.CharSequence[] getStaticLabels();
-    method public void setCurrentValue(int);
-    method public void setLabelFormat(java.lang.String);
-    method public void setMaxValue(int);
-    method public void setMinValue(int);
-    method public void setStaticLabels(java.lang.CharSequence[]);
-  }
-
-  public class TimePicker extends android.support.v17.leanback.widget.picker.Picker {
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int);
-    method public int getHour();
-    method public int getMinute();
-    method public boolean is24Hour();
-    method public boolean isPm();
-    method public void setHour(int);
-    method public void setIs24Hour(boolean);
-    method public void setMinute(int);
-  }
-
-}
-
-package android.support.v17.preference {
-
-  public abstract class BaseLeanbackPreferenceFragment extends android.support.v14.preference.PreferenceFragment {
-    ctor public BaseLeanbackPreferenceFragment();
-  }
-
-  public class LeanbackListPreferenceDialogFragment extends android.support.v17.preference.LeanbackPreferenceDialogFragment {
-    ctor public LeanbackListPreferenceDialogFragment();
-    method public static android.support.v17.preference.LeanbackListPreferenceDialogFragment newInstanceMulti(java.lang.String);
-    method public static android.support.v17.preference.LeanbackListPreferenceDialogFragment newInstanceSingle(java.lang.String);
-    method public android.support.v7.widget.RecyclerView.Adapter onCreateAdapter();
-  }
-
-  public class LeanbackListPreferenceDialogFragment.AdapterMulti extends android.support.v7.widget.RecyclerView.Adapter implements android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder.OnItemClickListener {
-    ctor public LeanbackListPreferenceDialogFragment.AdapterMulti(java.lang.CharSequence[], java.lang.CharSequence[], java.util.Set<java.lang.String>);
-    method public int getItemCount();
-    method public void onBindViewHolder(android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder, int);
-    method public android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
-    method public void onItemClick(android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder);
-  }
-
-  public class LeanbackListPreferenceDialogFragment.AdapterSingle extends android.support.v7.widget.RecyclerView.Adapter implements android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder.OnItemClickListener {
-    ctor public LeanbackListPreferenceDialogFragment.AdapterSingle(java.lang.CharSequence[], java.lang.CharSequence[], java.lang.CharSequence);
-    method public int getItemCount();
-    method public void onBindViewHolder(android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder, int);
-    method public android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
-    method public void onItemClick(android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder);
-  }
-
-  public static class LeanbackListPreferenceDialogFragment.ViewHolder extends android.support.v7.widget.RecyclerView.ViewHolder implements android.view.View.OnClickListener {
-    ctor public LeanbackListPreferenceDialogFragment.ViewHolder(android.view.View, android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder.OnItemClickListener);
-    method public android.view.ViewGroup getContainer();
-    method public android.widget.TextView getTitleView();
-    method public android.widget.Checkable getWidgetView();
-    method public void onClick(android.view.View);
-  }
-
-  public static abstract interface LeanbackListPreferenceDialogFragment.ViewHolder.OnItemClickListener {
-    method public abstract void onItemClick(android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder);
-  }
-
-  public class LeanbackPreferenceDialogFragment extends android.app.Fragment {
-    ctor public LeanbackPreferenceDialogFragment();
-    method public android.support.v7.preference.DialogPreference getPreference();
-    field public static final java.lang.String ARG_KEY = "key";
-  }
-
-  public abstract class LeanbackPreferenceFragment extends android.support.v17.preference.BaseLeanbackPreferenceFragment {
-    ctor public LeanbackPreferenceFragment();
-    method public void setTitle(java.lang.CharSequence);
-  }
-
-  public abstract class LeanbackSettingsFragment extends android.app.Fragment implements android.support.v14.preference.PreferenceFragment.OnPreferenceDisplayDialogCallback android.support.v14.preference.PreferenceFragment.OnPreferenceStartFragmentCallback android.support.v14.preference.PreferenceFragment.OnPreferenceStartScreenCallback {
-    ctor public LeanbackSettingsFragment();
-    method public boolean onPreferenceDisplayDialog(android.support.v14.preference.PreferenceFragment, android.support.v7.preference.Preference);
-    method public abstract void onPreferenceStartInitialScreen();
-    method public void startImmersiveFragment(android.app.Fragment);
-    method public void startPreferenceFragment(android.app.Fragment);
-  }
-
-}
-
-package android.support.v4.accessibilityservice {
-
-  public final class AccessibilityServiceInfoCompat {
-    method public static java.lang.String capabilityToString(int);
-    method public static java.lang.String feedbackTypeToString(int);
-    method public static java.lang.String flagToString(int);
-    method public static boolean getCanRetrieveWindowContent(android.accessibilityservice.AccessibilityServiceInfo);
-    method public static int getCapabilities(android.accessibilityservice.AccessibilityServiceInfo);
-    method public static deprecated java.lang.String getDescription(android.accessibilityservice.AccessibilityServiceInfo);
-    method public static java.lang.String getId(android.accessibilityservice.AccessibilityServiceInfo);
-    method public static android.content.pm.ResolveInfo getResolveInfo(android.accessibilityservice.AccessibilityServiceInfo);
-    method public static java.lang.String getSettingsActivityName(android.accessibilityservice.AccessibilityServiceInfo);
-    method public static java.lang.String loadDescription(android.accessibilityservice.AccessibilityServiceInfo, android.content.pm.PackageManager);
-    field public static final int CAPABILITY_CAN_FILTER_KEY_EVENTS = 8; // 0x8
-    field public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
-    field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
-    field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
-    field public static final int FEEDBACK_BRAILLE = 32; // 0x20
-    field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
-    field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
-    field public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
-    field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
-    field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
-  }
-
-}
-
-package android.support.v4.app {
-
-  public deprecated class ActionBarDrawerToggle implements android.support.v4.widget.DrawerLayout.DrawerListener {
-    ctor public ActionBarDrawerToggle(android.app.Activity, android.support.v4.widget.DrawerLayout, int, int, int);
-    ctor public ActionBarDrawerToggle(android.app.Activity, android.support.v4.widget.DrawerLayout, boolean, int, int, int);
-    method public boolean isDrawerIndicatorEnabled();
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public void onDrawerClosed(android.view.View);
-    method public void onDrawerOpened(android.view.View);
-    method public void onDrawerSlide(android.view.View, float);
-    method public void onDrawerStateChanged(int);
-    method public boolean onOptionsItemSelected(android.view.MenuItem);
-    method public void setDrawerIndicatorEnabled(boolean);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable);
-    method public void setHomeAsUpIndicator(int);
-    method public void syncState();
-  }
-
-  public static abstract deprecated interface ActionBarDrawerToggle.Delegate {
-    method public abstract android.graphics.drawable.Drawable getThemeUpIndicator();
-    method public abstract void setActionBarDescription(int);
-    method public abstract void setActionBarUpIndicator(android.graphics.drawable.Drawable, int);
-  }
-
-  public static abstract deprecated interface ActionBarDrawerToggle.DelegateProvider {
-    method public abstract android.support.v4.app.ActionBarDrawerToggle.Delegate getDrawerToggleDelegate();
-  }
-
-  public class ActivityCompat extends android.support.v4.content.ContextCompat {
-    ctor protected ActivityCompat();
-    method public static void finishAffinity(android.app.Activity);
-    method public static void finishAfterTransition(android.app.Activity);
-    method public static android.net.Uri getReferrer(android.app.Activity);
-    method public static boolean invalidateOptionsMenu(android.app.Activity);
-    method public static void postponeEnterTransition(android.app.Activity);
-    method public static void requestPermissions(android.app.Activity, java.lang.String[], int);
-    method public static void setEnterSharedElementCallback(android.app.Activity, android.support.v4.app.SharedElementCallback);
-    method public static void setExitSharedElementCallback(android.app.Activity, android.support.v4.app.SharedElementCallback);
-    method public static boolean shouldShowRequestPermissionRationale(android.app.Activity, java.lang.String);
-    method public static void startActivityForResult(android.app.Activity, android.content.Intent, int, android.os.Bundle);
-    method public static void startIntentSenderForResult(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method public static void startPostponedEnterTransition(android.app.Activity);
-  }
-
-  public static abstract interface ActivityCompat.OnRequestPermissionsResultCallback {
-    method public abstract void onRequestPermissionsResult(int, java.lang.String[], int[]);
-  }
-
-  public final class ActivityManagerCompat {
-    method public static boolean isLowRamDevice(android.app.ActivityManager);
-  }
-
-  public class ActivityOptionsCompat {
-    ctor protected ActivityOptionsCompat();
-    method public android.graphics.Rect getLaunchBounds();
-    method public static android.support.v4.app.ActivityOptionsCompat makeBasic();
-    method public static android.support.v4.app.ActivityOptionsCompat makeClipRevealAnimation(android.view.View, int, int, int, int);
-    method public static android.support.v4.app.ActivityOptionsCompat makeCustomAnimation(android.content.Context, int, int);
-    method public static android.support.v4.app.ActivityOptionsCompat makeScaleUpAnimation(android.view.View, int, int, int, int);
-    method public static android.support.v4.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, android.view.View, java.lang.String);
-    method public static android.support.v4.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, android.support.v4.util.Pair<android.view.View, java.lang.String>...);
-    method public static android.support.v4.app.ActivityOptionsCompat makeTaskLaunchBehind();
-    method public static android.support.v4.app.ActivityOptionsCompat makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
-    method public void requestUsageTimeReport(android.app.PendingIntent);
-    method public android.support.v4.app.ActivityOptionsCompat setLaunchBounds(android.graphics.Rect);
-    method public android.os.Bundle toBundle();
-    method public void update(android.support.v4.app.ActivityOptionsCompat);
-    field public static final java.lang.String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
-    field public static final java.lang.String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
-  }
-
-  public class AppLaunchChecker {
-    ctor public AppLaunchChecker();
-    method public static boolean hasStartedFromLauncher(android.content.Context);
-    method public static void onActivityCreate(android.app.Activity);
-  }
-
-  public final class AppOpsManagerCompat {
-    method public static int noteOp(android.content.Context, java.lang.String, int, java.lang.String);
-    method public static int noteProxyOp(android.content.Context, java.lang.String, java.lang.String);
-    method public static java.lang.String permissionToOp(java.lang.String);
-    field public static final int MODE_ALLOWED = 0; // 0x0
-    field public static final int MODE_DEFAULT = 3; // 0x3
-    field public static final int MODE_IGNORED = 1; // 0x1
-  }
-
-  public final class BundleCompat {
-    method public static android.os.IBinder getBinder(android.os.Bundle, java.lang.String);
-    method public static void putBinder(android.os.Bundle, java.lang.String, android.os.IBinder);
-  }
-
-  public class DialogFragment extends android.support.v4.app.Fragment implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
-    ctor public DialogFragment();
-    method public void dismiss();
-    method public void dismissAllowingStateLoss();
-    method public android.app.Dialog getDialog();
-    method public boolean getShowsDialog();
-    method public int getTheme();
-    method public boolean isCancelable();
-    method public void onCancel(android.content.DialogInterface);
-    method public android.app.Dialog onCreateDialog(android.os.Bundle);
-    method public void onDismiss(android.content.DialogInterface);
-    method public void setCancelable(boolean);
-    method public void setShowsDialog(boolean);
-    method public void setStyle(int, int);
-    method public void show(android.support.v4.app.FragmentManager, java.lang.String);
-    method public int show(android.support.v4.app.FragmentTransaction, java.lang.String);
-    field public static final int STYLE_NORMAL = 0; // 0x0
-    field public static final int STYLE_NO_FRAME = 2; // 0x2
-    field public static final int STYLE_NO_INPUT = 3; // 0x3
-    field public static final int STYLE_NO_TITLE = 1; // 0x1
-  }
-
-  public class Fragment implements android.content.ComponentCallbacks android.view.View.OnCreateContextMenuListener {
-    ctor public Fragment();
-    method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    method public final boolean equals(java.lang.Object);
-    method public final android.support.v4.app.FragmentActivity getActivity();
-    method public boolean getAllowEnterTransitionOverlap();
-    method public boolean getAllowReturnTransitionOverlap();
-    method public final android.os.Bundle getArguments();
-    method public final android.support.v4.app.FragmentManager getChildFragmentManager();
-    method public android.content.Context getContext();
-    method public java.lang.Object getEnterTransition();
-    method public java.lang.Object getExitTransition();
-    method public final android.support.v4.app.FragmentManager getFragmentManager();
-    method public final java.lang.Object getHost();
-    method public final int getId();
-    method public final android.view.LayoutInflater getLayoutInflater();
-    method public android.support.v4.app.LoaderManager getLoaderManager();
-    method public final android.support.v4.app.Fragment getParentFragment();
-    method public java.lang.Object getReenterTransition();
-    method public final android.content.res.Resources getResources();
-    method public final boolean getRetainInstance();
-    method public java.lang.Object getReturnTransition();
-    method public java.lang.Object getSharedElementEnterTransition();
-    method public java.lang.Object getSharedElementReturnTransition();
-    method public final java.lang.String getString(int);
-    method public final java.lang.String getString(int, java.lang.Object...);
-    method public final java.lang.String getTag();
-    method public final android.support.v4.app.Fragment getTargetFragment();
-    method public final int getTargetRequestCode();
-    method public final java.lang.CharSequence getText(int);
-    method public boolean getUserVisibleHint();
-    method public android.view.View getView();
-    method public final int hashCode();
-    method public static android.support.v4.app.Fragment instantiate(android.content.Context, java.lang.String);
-    method public static android.support.v4.app.Fragment instantiate(android.content.Context, java.lang.String, android.os.Bundle);
-    method public final boolean isAdded();
-    method public final boolean isDetached();
-    method public final boolean isHidden();
-    method public final boolean isInLayout();
-    method public final boolean isRemoving();
-    method public final boolean isResumed();
-    method public final boolean isVisible();
-    method public void onActivityCreated(android.os.Bundle);
-    method public void onActivityResult(int, int, android.content.Intent);
-    method public void onAttach(android.content.Context);
-    method public deprecated void onAttach(android.app.Activity);
-    method public void onAttachFragment(android.support.v4.app.Fragment);
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public boolean onContextItemSelected(android.view.MenuItem);
-    method public void onCreate(android.os.Bundle);
-    method public android.view.animation.Animation onCreateAnimation(int, boolean, int);
-    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
-    method public void onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
-    method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onDestroy();
-    method public void onDestroyOptionsMenu();
-    method public void onDestroyView();
-    method public void onDetach();
-    method public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
-    method public void onHiddenChanged(boolean);
-    method public void onInflate(android.content.Context, android.util.AttributeSet, android.os.Bundle);
-    method public deprecated void onInflate(android.app.Activity, android.util.AttributeSet, android.os.Bundle);
-    method public void onLowMemory();
-    method public void onMultiWindowModeChanged(boolean);
-    method public boolean onOptionsItemSelected(android.view.MenuItem);
-    method public void onOptionsMenuClosed(android.view.Menu);
-    method public void onPause();
-    method public void onPictureInPictureModeChanged(boolean);
-    method public void onPrepareOptionsMenu(android.view.Menu);
-    method public void onRequestPermissionsResult(int, java.lang.String[], int[]);
-    method public void onResume();
-    method public void onSaveInstanceState(android.os.Bundle);
-    method public void onStart();
-    method public void onStop();
-    method public void onViewCreated(android.view.View, android.os.Bundle);
-    method public void onViewStateRestored(android.os.Bundle);
-    method public void postponeEnterTransition();
-    method public void registerForContextMenu(android.view.View);
-    method public final void requestPermissions(java.lang.String[], int);
-    method public void setAllowEnterTransitionOverlap(boolean);
-    method public void setAllowReturnTransitionOverlap(boolean);
-    method public void setArguments(android.os.Bundle);
-    method public void setEnterSharedElementCallback(android.support.v4.app.SharedElementCallback);
-    method public void setEnterTransition(java.lang.Object);
-    method public void setExitSharedElementCallback(android.support.v4.app.SharedElementCallback);
-    method public void setExitTransition(java.lang.Object);
-    method public void setHasOptionsMenu(boolean);
-    method public void setInitialSavedState(android.support.v4.app.Fragment.SavedState);
-    method public void setMenuVisibility(boolean);
-    method public void setReenterTransition(java.lang.Object);
-    method public void setRetainInstance(boolean);
-    method public void setReturnTransition(java.lang.Object);
-    method public void setSharedElementEnterTransition(java.lang.Object);
-    method public void setSharedElementReturnTransition(java.lang.Object);
-    method public void setTargetFragment(android.support.v4.app.Fragment, int);
-    method public void setUserVisibleHint(boolean);
-    method public boolean shouldShowRequestPermissionRationale(java.lang.String);
-    method public void startActivity(android.content.Intent);
-    method public void startActivity(android.content.Intent, android.os.Bundle);
-    method public void startActivityForResult(android.content.Intent, int);
-    method public void startActivityForResult(android.content.Intent, int, android.os.Bundle);
-    method public void startIntentSenderForResult(android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method public void startPostponedEnterTransition();
-    method public void unregisterForContextMenu(android.view.View);
-  }
-
-  public static class Fragment.InstantiationException extends java.lang.RuntimeException {
-    ctor public Fragment.InstantiationException(java.lang.String, java.lang.Exception);
-  }
-
-  public static class Fragment.SavedState implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.app.Fragment.SavedState> CREATOR;
-  }
-
-  public class FragmentActivity extends android.app.Activity implements android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback {
-    ctor public FragmentActivity();
-    method public java.lang.Object getLastCustomNonConfigurationInstance();
-    method public android.support.v4.app.FragmentManager getSupportFragmentManager();
-    method public android.support.v4.app.LoaderManager getSupportLoaderManager();
-    method public final deprecated android.support.v4.media.session.MediaControllerCompat getSupportMediaController();
-    method public void onAttachFragment(android.support.v4.app.Fragment);
-    method protected void onResumeFragments();
-    method public java.lang.Object onRetainCustomNonConfigurationInstance();
-    method public final java.lang.Object onRetainNonConfigurationInstance();
-    method public void setEnterSharedElementCallback(android.support.v4.app.SharedElementCallback);
-    method public void setExitSharedElementCallback(android.support.v4.app.SharedElementCallback);
-    method public final deprecated void setSupportMediaController(android.support.v4.media.session.MediaControllerCompat);
-    method public void startActivityFromFragment(android.support.v4.app.Fragment, android.content.Intent, int);
-    method public void startActivityFromFragment(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle);
-    method public void startIntentSenderFromFragment(android.support.v4.app.Fragment, android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method public void supportFinishAfterTransition();
-    method public void supportInvalidateOptionsMenu();
-    method public void supportPostponeEnterTransition();
-    method public void supportStartPostponedEnterTransition();
-    method public final void validateRequestPermissionsRequestCode(int);
-  }
-
-  public abstract class FragmentContainer {
-    ctor public FragmentContainer();
-    method public abstract android.view.View onFindViewById(int);
-    method public abstract boolean onHasView();
-  }
-
-  public class FragmentController {
-    method public void attachHost(android.support.v4.app.Fragment);
-    method public static final android.support.v4.app.FragmentController createController(android.support.v4.app.FragmentHostCallback<?>);
-    method public void dispatchActivityCreated();
-    method public void dispatchConfigurationChanged(android.content.res.Configuration);
-    method public boolean dispatchContextItemSelected(android.view.MenuItem);
-    method public void dispatchCreate();
-    method public boolean dispatchCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
-    method public void dispatchDestroy();
-    method public void dispatchDestroyView();
-    method public void dispatchLowMemory();
-    method public void dispatchMultiWindowModeChanged(boolean);
-    method public boolean dispatchOptionsItemSelected(android.view.MenuItem);
-    method public void dispatchOptionsMenuClosed(android.view.Menu);
-    method public void dispatchPause();
-    method public void dispatchPictureInPictureModeChanged(boolean);
-    method public boolean dispatchPrepareOptionsMenu(android.view.Menu);
-    method public void dispatchReallyStop();
-    method public void dispatchResume();
-    method public void dispatchStart();
-    method public void dispatchStop();
-    method public void doLoaderDestroy();
-    method public void doLoaderRetain();
-    method public void doLoaderStart();
-    method public void doLoaderStop(boolean);
-    method public void dumpLoaders(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    method public boolean execPendingActions();
-    method public android.support.v4.app.Fragment findFragmentByWho(java.lang.String);
-    method public java.util.List<android.support.v4.app.Fragment> getActiveFragments(java.util.List<android.support.v4.app.Fragment>);
-    method public int getActiveFragmentsCount();
-    method public android.support.v4.app.FragmentManager getSupportFragmentManager();
-    method public android.support.v4.app.LoaderManager getSupportLoaderManager();
-    method public void noteStateNotSaved();
-    method public android.view.View onCreateView(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet);
-    method public void reportLoaderStart();
-    method public deprecated void restoreAllState(android.os.Parcelable, java.util.List<android.support.v4.app.Fragment>);
-    method public void restoreAllState(android.os.Parcelable, android.support.v4.app.FragmentManagerNonConfig);
-    method public void restoreLoaderNonConfig(android.support.v4.util.SimpleArrayMap<java.lang.String, android.support.v4.app.LoaderManager>);
-    method public android.support.v4.util.SimpleArrayMap<java.lang.String, android.support.v4.app.LoaderManager> retainLoaderNonConfig();
-    method public android.support.v4.app.FragmentManagerNonConfig retainNestedNonConfig();
-    method public deprecated java.util.List<android.support.v4.app.Fragment> retainNonConfig();
-    method public android.os.Parcelable saveAllState();
-  }
-
-  public abstract class FragmentHostCallback<E> extends android.support.v4.app.FragmentContainer {
-    ctor public FragmentHostCallback(android.content.Context, android.os.Handler, int);
-    method public void onDump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    method public android.view.View onFindViewById(int);
-    method public abstract E onGetHost();
-    method public android.view.LayoutInflater onGetLayoutInflater();
-    method public int onGetWindowAnimations();
-    method public boolean onHasView();
-    method public boolean onHasWindowAnimations();
-    method public void onRequestPermissionsFromFragment(android.support.v4.app.Fragment, java.lang.String[], int);
-    method public boolean onShouldSaveFragmentState(android.support.v4.app.Fragment);
-    method public boolean onShouldShowRequestPermissionRationale(java.lang.String);
-    method public void onStartActivityFromFragment(android.support.v4.app.Fragment, android.content.Intent, int);
-    method public void onStartActivityFromFragment(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle);
-    method public void onStartIntentSenderFromFragment(android.support.v4.app.Fragment, android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method public void onSupportInvalidateOptionsMenu();
-  }
-
-  public abstract class FragmentManager {
-    ctor public FragmentManager();
-    method public abstract void addOnBackStackChangedListener(android.support.v4.app.FragmentManager.OnBackStackChangedListener);
-    method public abstract android.support.v4.app.FragmentTransaction beginTransaction();
-    method public abstract void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    method public static void enableDebugLogging(boolean);
-    method public abstract boolean executePendingTransactions();
-    method public abstract android.support.v4.app.Fragment findFragmentById(int);
-    method public abstract android.support.v4.app.Fragment findFragmentByTag(java.lang.String);
-    method public abstract android.support.v4.app.FragmentManager.BackStackEntry getBackStackEntryAt(int);
-    method public abstract int getBackStackEntryCount();
-    method public abstract android.support.v4.app.Fragment getFragment(android.os.Bundle, java.lang.String);
-    method public abstract java.util.List<android.support.v4.app.Fragment> getFragments();
-    method public abstract boolean isDestroyed();
-    method public abstract void popBackStack();
-    method public abstract void popBackStack(java.lang.String, int);
-    method public abstract void popBackStack(int, int);
-    method public abstract boolean popBackStackImmediate();
-    method public abstract boolean popBackStackImmediate(java.lang.String, int);
-    method public abstract boolean popBackStackImmediate(int, int);
-    method public abstract void putFragment(android.os.Bundle, java.lang.String, android.support.v4.app.Fragment);
-    method public abstract void registerFragmentLifecycleCallbacks(android.support.v4.app.FragmentManager.FragmentLifecycleCallbacks, boolean);
-    method public abstract void removeOnBackStackChangedListener(android.support.v4.app.FragmentManager.OnBackStackChangedListener);
-    method public abstract android.support.v4.app.Fragment.SavedState saveFragmentInstanceState(android.support.v4.app.Fragment);
-    method public abstract void unregisterFragmentLifecycleCallbacks(android.support.v4.app.FragmentManager.FragmentLifecycleCallbacks);
-    field public static final int POP_BACK_STACK_INCLUSIVE = 1; // 0x1
-  }
-
-  public static abstract interface FragmentManager.BackStackEntry {
-    method public abstract java.lang.CharSequence getBreadCrumbShortTitle();
-    method public abstract int getBreadCrumbShortTitleRes();
-    method public abstract java.lang.CharSequence getBreadCrumbTitle();
-    method public abstract int getBreadCrumbTitleRes();
-    method public abstract int getId();
-    method public abstract java.lang.String getName();
-  }
-
-  public static abstract class FragmentManager.FragmentLifecycleCallbacks {
-    ctor public FragmentManager.FragmentLifecycleCallbacks();
-    method public void onFragmentActivityCreated(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment, android.os.Bundle);
-    method public void onFragmentAttached(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment, android.content.Context);
-    method public void onFragmentCreated(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment, android.os.Bundle);
-    method public void onFragmentDestroyed(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment);
-    method public void onFragmentDetached(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment);
-    method public void onFragmentPaused(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment);
-    method public void onFragmentPreAttached(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment, android.content.Context);
-    method public void onFragmentResumed(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment);
-    method public void onFragmentSaveInstanceState(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment, android.os.Bundle);
-    method public void onFragmentStarted(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment);
-    method public void onFragmentStopped(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment);
-    method public void onFragmentViewCreated(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment, android.view.View, android.os.Bundle);
-    method public void onFragmentViewDestroyed(android.support.v4.app.FragmentManager, android.support.v4.app.Fragment);
-  }
-
-  public static abstract interface FragmentManager.OnBackStackChangedListener {
-    method public abstract void onBackStackChanged();
-  }
-
-  public class FragmentManagerNonConfig {
-  }
-
-  public abstract class FragmentPagerAdapter extends android.support.v4.view.PagerAdapter {
-    ctor public FragmentPagerAdapter(android.support.v4.app.FragmentManager);
-    method public abstract android.support.v4.app.Fragment getItem(int);
-    method public long getItemId(int);
-    method public boolean isViewFromObject(android.view.View, java.lang.Object);
-  }
-
-  public abstract class FragmentStatePagerAdapter extends android.support.v4.view.PagerAdapter {
-    ctor public FragmentStatePagerAdapter(android.support.v4.app.FragmentManager);
-    method public abstract android.support.v4.app.Fragment getItem(int);
-    method public boolean isViewFromObject(android.view.View, java.lang.Object);
-  }
-
-  public class FragmentTabHost extends android.widget.TabHost implements android.widget.TabHost.OnTabChangeListener {
-    ctor public FragmentTabHost(android.content.Context);
-    ctor public FragmentTabHost(android.content.Context, android.util.AttributeSet);
-    method public void addTab(android.widget.TabHost.TabSpec, java.lang.Class<?>, android.os.Bundle);
-    method public void onTabChanged(java.lang.String);
-    method public void setup(android.content.Context, android.support.v4.app.FragmentManager);
-    method public void setup(android.content.Context, android.support.v4.app.FragmentManager, int);
-  }
-
-  public abstract class FragmentTransaction {
-    ctor public FragmentTransaction();
-    method public abstract android.support.v4.app.FragmentTransaction add(android.support.v4.app.Fragment, java.lang.String);
-    method public abstract android.support.v4.app.FragmentTransaction add(int, android.support.v4.app.Fragment);
-    method public abstract android.support.v4.app.FragmentTransaction add(int, android.support.v4.app.Fragment, java.lang.String);
-    method public abstract android.support.v4.app.FragmentTransaction addSharedElement(android.view.View, java.lang.String);
-    method public abstract android.support.v4.app.FragmentTransaction addToBackStack(java.lang.String);
-    method public abstract android.support.v4.app.FragmentTransaction attach(android.support.v4.app.Fragment);
-    method public abstract int commit();
-    method public abstract int commitAllowingStateLoss();
-    method public abstract void commitNow();
-    method public abstract void commitNowAllowingStateLoss();
-    method public abstract android.support.v4.app.FragmentTransaction detach(android.support.v4.app.Fragment);
-    method public abstract android.support.v4.app.FragmentTransaction disallowAddToBackStack();
-    method public abstract android.support.v4.app.FragmentTransaction hide(android.support.v4.app.Fragment);
-    method public abstract boolean isAddToBackStackAllowed();
-    method public abstract boolean isEmpty();
-    method public abstract android.support.v4.app.FragmentTransaction remove(android.support.v4.app.Fragment);
-    method public abstract android.support.v4.app.FragmentTransaction replace(int, android.support.v4.app.Fragment);
-    method public abstract android.support.v4.app.FragmentTransaction replace(int, android.support.v4.app.Fragment, java.lang.String);
-    method public abstract android.support.v4.app.FragmentTransaction setAllowOptimization(boolean);
-    method public abstract android.support.v4.app.FragmentTransaction setBreadCrumbShortTitle(int);
-    method public abstract android.support.v4.app.FragmentTransaction setBreadCrumbShortTitle(java.lang.CharSequence);
-    method public abstract android.support.v4.app.FragmentTransaction setBreadCrumbTitle(int);
-    method public abstract android.support.v4.app.FragmentTransaction setBreadCrumbTitle(java.lang.CharSequence);
-    method public abstract android.support.v4.app.FragmentTransaction setCustomAnimations(int, int);
-    method public abstract android.support.v4.app.FragmentTransaction setCustomAnimations(int, int, int, int);
-    method public abstract android.support.v4.app.FragmentTransaction setTransition(int);
-    method public abstract android.support.v4.app.FragmentTransaction setTransitionStyle(int);
-    method public abstract android.support.v4.app.FragmentTransaction show(android.support.v4.app.Fragment);
-    field public static final int TRANSIT_ENTER_MASK = 4096; // 0x1000
-    field public static final int TRANSIT_EXIT_MASK = 8192; // 0x2000
-    field public static final int TRANSIT_FRAGMENT_CLOSE = 8194; // 0x2002
-    field public static final int TRANSIT_FRAGMENT_FADE = 4099; // 0x1003
-    field public static final int TRANSIT_FRAGMENT_OPEN = 4097; // 0x1001
-    field public static final int TRANSIT_NONE = 0; // 0x0
-    field public static final int TRANSIT_UNSET = -1; // 0xffffffff
-  }
-
-  public class ListFragment extends android.support.v4.app.Fragment {
-    ctor public ListFragment();
-    method public android.widget.ListAdapter getListAdapter();
-    method public android.widget.ListView getListView();
-    method public long getSelectedItemId();
-    method public int getSelectedItemPosition();
-    method public void onListItemClick(android.widget.ListView, android.view.View, int, long);
-    method public void setEmptyText(java.lang.CharSequence);
-    method public void setListAdapter(android.widget.ListAdapter);
-    method public void setListShown(boolean);
-    method public void setListShownNoAnimation(boolean);
-    method public void setSelection(int);
-  }
-
-  public abstract class LoaderManager {
-    ctor public LoaderManager();
-    method public abstract void destroyLoader(int);
-    method public abstract void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    method public static void enableDebugLogging(boolean);
-    method public abstract <D> android.support.v4.content.Loader<D> getLoader(int);
-    method public boolean hasRunningLoaders();
-    method public abstract <D> android.support.v4.content.Loader<D> initLoader(int, android.os.Bundle, android.support.v4.app.LoaderManager.LoaderCallbacks<D>);
-    method public abstract <D> android.support.v4.content.Loader<D> restartLoader(int, android.os.Bundle, android.support.v4.app.LoaderManager.LoaderCallbacks<D>);
-  }
-
-  public static abstract interface LoaderManager.LoaderCallbacks<D> {
-    method public abstract android.support.v4.content.Loader<D> onCreateLoader(int, android.os.Bundle);
-    method public abstract void onLoadFinished(android.support.v4.content.Loader<D>, D);
-    method public abstract void onLoaderReset(android.support.v4.content.Loader<D>);
-  }
-
-  public final class NavUtils {
-    method public static android.content.Intent getParentActivityIntent(android.app.Activity);
-    method public static android.content.Intent getParentActivityIntent(android.content.Context, java.lang.Class<?>) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static android.content.Intent getParentActivityIntent(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static java.lang.String getParentActivityName(android.app.Activity);
-    method public static java.lang.String getParentActivityName(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static void navigateUpFromSameTask(android.app.Activity);
-    method public static void navigateUpTo(android.app.Activity, android.content.Intent);
-    method public static boolean shouldUpRecreateTask(android.app.Activity, android.content.Intent);
-    field public static final java.lang.String PARENT_ACTIVITY = "android.support.PARENT_ACTIVITY";
-  }
-
-  public class NotificationCompat {
-    ctor public NotificationCompat();
-    method public static android.support.v4.app.NotificationCompat.Action getAction(android.app.Notification, int);
-    method public static int getActionCount(android.app.Notification);
-    method public static java.lang.String getCategory(android.app.Notification);
-    method public static android.os.Bundle getExtras(android.app.Notification);
-    method public static java.lang.String getGroup(android.app.Notification);
-    method public static boolean getLocalOnly(android.app.Notification);
-    method public static java.lang.String getSortKey(android.app.Notification);
-    method public static boolean isGroupSummary(android.app.Notification);
-    field public static final java.lang.String CATEGORY_ALARM = "alarm";
-    field public static final java.lang.String CATEGORY_CALL = "call";
-    field public static final java.lang.String CATEGORY_EMAIL = "email";
-    field public static final java.lang.String CATEGORY_ERROR = "err";
-    field public static final java.lang.String CATEGORY_EVENT = "event";
-    field public static final java.lang.String CATEGORY_MESSAGE = "msg";
-    field public static final java.lang.String CATEGORY_PROGRESS = "progress";
-    field public static final java.lang.String CATEGORY_PROMO = "promo";
-    field public static final java.lang.String CATEGORY_RECOMMENDATION = "recommendation";
-    field public static final java.lang.String CATEGORY_REMINDER = "reminder";
-    field public static final java.lang.String CATEGORY_SERVICE = "service";
-    field public static final java.lang.String CATEGORY_SOCIAL = "social";
-    field public static final java.lang.String CATEGORY_STATUS = "status";
-    field public static final java.lang.String CATEGORY_SYSTEM = "sys";
-    field public static final java.lang.String CATEGORY_TRANSPORT = "transport";
-    field public static final int COLOR_DEFAULT = 0; // 0x0
-    field public static final int DEFAULT_ALL = -1; // 0xffffffff
-    field public static final int DEFAULT_LIGHTS = 4; // 0x4
-    field public static final int DEFAULT_SOUND = 1; // 0x1
-    field public static final int DEFAULT_VIBRATE = 2; // 0x2
-    field public static final java.lang.String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
-    field public static final java.lang.String EXTRA_BIG_TEXT = "android.bigText";
-    field public static final java.lang.String EXTRA_COMPACT_ACTIONS = "android.compactActions";
-    field public static final java.lang.String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
-    field public static final java.lang.String EXTRA_INFO_TEXT = "android.infoText";
-    field public static final java.lang.String EXTRA_LARGE_ICON = "android.largeIcon";
-    field public static final java.lang.String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
-    field public static final java.lang.String EXTRA_MEDIA_SESSION = "android.mediaSession";
-    field public static final java.lang.String EXTRA_MESSAGES = "android.messages";
-    field public static final java.lang.String EXTRA_PEOPLE = "android.people";
-    field public static final java.lang.String EXTRA_PICTURE = "android.picture";
-    field public static final java.lang.String EXTRA_PROGRESS = "android.progress";
-    field public static final java.lang.String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
-    field public static final java.lang.String EXTRA_PROGRESS_MAX = "android.progressMax";
-    field public static final java.lang.String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
-    field public static final java.lang.String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
-    field public static final java.lang.String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
-    field public static final java.lang.String EXTRA_SHOW_WHEN = "android.showWhen";
-    field public static final java.lang.String EXTRA_SMALL_ICON = "android.icon";
-    field public static final java.lang.String EXTRA_SUB_TEXT = "android.subText";
-    field public static final java.lang.String EXTRA_SUMMARY_TEXT = "android.summaryText";
-    field public static final java.lang.String EXTRA_TEMPLATE = "android.template";
-    field public static final java.lang.String EXTRA_TEXT = "android.text";
-    field public static final java.lang.String EXTRA_TEXT_LINES = "android.textLines";
-    field public static final java.lang.String EXTRA_TITLE = "android.title";
-    field public static final java.lang.String EXTRA_TITLE_BIG = "android.title.big";
-    field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
-    field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
-    field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
-    field public static final deprecated int FLAG_HIGH_PRIORITY = 128; // 0x80
-    field public static final int FLAG_INSISTENT = 4; // 0x4
-    field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
-    field public static final int FLAG_NO_CLEAR = 32; // 0x20
-    field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
-    field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
-    field public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
-    field public static final int PRIORITY_DEFAULT = 0; // 0x0
-    field public static final int PRIORITY_HIGH = 1; // 0x1
-    field public static final int PRIORITY_LOW = -1; // 0xffffffff
-    field public static final int PRIORITY_MAX = 2; // 0x2
-    field public static final int PRIORITY_MIN = -2; // 0xfffffffe
-    field public static final int STREAM_DEFAULT = -1; // 0xffffffff
-    field public static final int VISIBILITY_PRIVATE = 0; // 0x0
-    field public static final int VISIBILITY_PUBLIC = 1; // 0x1
-    field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
-  }
-
-  public static class NotificationCompat.Action {
-    ctor public NotificationCompat.Action(int, java.lang.CharSequence, android.app.PendingIntent);
-    method public android.app.PendingIntent getActionIntent();
-    method public boolean getAllowGeneratedReplies();
-    method public android.os.Bundle getExtras();
-    method public int getIcon();
-    method public android.support.v4.app.RemoteInput[] getRemoteInputs();
-    method public java.lang.CharSequence getTitle();
-    field public android.app.PendingIntent actionIntent;
-    field public int icon;
-    field public java.lang.CharSequence title;
-  }
-
-  public static final class NotificationCompat.Action.Builder {
-    ctor public NotificationCompat.Action.Builder(int, java.lang.CharSequence, android.app.PendingIntent);
-    ctor public NotificationCompat.Action.Builder(android.support.v4.app.NotificationCompat.Action);
-    method public android.support.v4.app.NotificationCompat.Action.Builder addExtras(android.os.Bundle);
-    method public android.support.v4.app.NotificationCompat.Action.Builder addRemoteInput(android.support.v4.app.RemoteInput);
-    method public android.support.v4.app.NotificationCompat.Action build();
-    method public android.support.v4.app.NotificationCompat.Action.Builder extend(android.support.v4.app.NotificationCompat.Action.Extender);
-    method public android.os.Bundle getExtras();
-    method public android.support.v4.app.NotificationCompat.Action.Builder setAllowGeneratedReplies(boolean);
-  }
-
-  public static abstract interface NotificationCompat.Action.Extender {
-    method public abstract android.support.v4.app.NotificationCompat.Action.Builder extend(android.support.v4.app.NotificationCompat.Action.Builder);
-  }
-
-  public static final class NotificationCompat.Action.WearableExtender implements android.support.v4.app.NotificationCompat.Action.Extender {
-    ctor public NotificationCompat.Action.WearableExtender();
-    ctor public NotificationCompat.Action.WearableExtender(android.support.v4.app.NotificationCompat.Action);
-    method public android.support.v4.app.NotificationCompat.Action.WearableExtender clone();
-    method public android.support.v4.app.NotificationCompat.Action.Builder extend(android.support.v4.app.NotificationCompat.Action.Builder);
-    method public java.lang.CharSequence getCancelLabel();
-    method public java.lang.CharSequence getConfirmLabel();
-    method public boolean getHintDisplayActionInline();
-    method public boolean getHintLaunchesActivity();
-    method public java.lang.CharSequence getInProgressLabel();
-    method public boolean isAvailableOffline();
-    method public android.support.v4.app.NotificationCompat.Action.WearableExtender setAvailableOffline(boolean);
-    method public android.support.v4.app.NotificationCompat.Action.WearableExtender setCancelLabel(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.Action.WearableExtender setConfirmLabel(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.Action.WearableExtender setHintDisplayActionInline(boolean);
-    method public android.support.v4.app.NotificationCompat.Action.WearableExtender setHintLaunchesActivity(boolean);
-    method public android.support.v4.app.NotificationCompat.Action.WearableExtender setInProgressLabel(java.lang.CharSequence);
-  }
-
-  public static class NotificationCompat.BigPictureStyle extends android.support.v4.app.NotificationCompat.Style {
-    ctor public NotificationCompat.BigPictureStyle();
-    ctor public NotificationCompat.BigPictureStyle(android.support.v4.app.NotificationCompat.Builder);
-    method public android.support.v4.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap);
-    method public android.support.v4.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap);
-    method public android.support.v4.app.NotificationCompat.BigPictureStyle setBigContentTitle(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.BigPictureStyle setSummaryText(java.lang.CharSequence);
-  }
-
-  public static class NotificationCompat.BigTextStyle extends android.support.v4.app.NotificationCompat.Style {
-    ctor public NotificationCompat.BigTextStyle();
-    ctor public NotificationCompat.BigTextStyle(android.support.v4.app.NotificationCompat.Builder);
-    method public android.support.v4.app.NotificationCompat.BigTextStyle bigText(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.BigTextStyle setBigContentTitle(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.BigTextStyle setSummaryText(java.lang.CharSequence);
-  }
-
-  public static class NotificationCompat.Builder {
-    ctor public NotificationCompat.Builder(android.content.Context);
-    method public android.support.v4.app.NotificationCompat.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
-    method public android.support.v4.app.NotificationCompat.Builder addAction(android.support.v4.app.NotificationCompat.Action);
-    method public android.support.v4.app.NotificationCompat.Builder addExtras(android.os.Bundle);
-    method public android.support.v4.app.NotificationCompat.Builder addPerson(java.lang.String);
-    method public android.app.Notification build();
-    method public android.support.v4.app.NotificationCompat.Builder extend(android.support.v4.app.NotificationCompat.Extender);
-    method public android.os.Bundle getExtras();
-    method public deprecated android.app.Notification getNotification();
-    method protected static java.lang.CharSequence limitCharSequenceLength(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.Builder setAutoCancel(boolean);
-    method public android.support.v4.app.NotificationCompat.Builder setCategory(java.lang.String);
-    method public android.support.v4.app.NotificationCompat.Builder setColor(int);
-    method public android.support.v4.app.NotificationCompat.Builder setContent(android.widget.RemoteViews);
-    method public android.support.v4.app.NotificationCompat.Builder setContentInfo(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.Builder setContentIntent(android.app.PendingIntent);
-    method public android.support.v4.app.NotificationCompat.Builder setContentText(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.Builder setContentTitle(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.Builder setCustomBigContentView(android.widget.RemoteViews);
-    method public android.support.v4.app.NotificationCompat.Builder setCustomContentView(android.widget.RemoteViews);
-    method public android.support.v4.app.NotificationCompat.Builder setCustomHeadsUpContentView(android.widget.RemoteViews);
-    method public android.support.v4.app.NotificationCompat.Builder setDefaults(int);
-    method public android.support.v4.app.NotificationCompat.Builder setDeleteIntent(android.app.PendingIntent);
-    method public android.support.v4.app.NotificationCompat.Builder setExtras(android.os.Bundle);
-    method public android.support.v4.app.NotificationCompat.Builder setFullScreenIntent(android.app.PendingIntent, boolean);
-    method public android.support.v4.app.NotificationCompat.Builder setGroup(java.lang.String);
-    method public android.support.v4.app.NotificationCompat.Builder setGroupSummary(boolean);
-    method public android.support.v4.app.NotificationCompat.Builder setLargeIcon(android.graphics.Bitmap);
-    method public android.support.v4.app.NotificationCompat.Builder setLights(int, int, int);
-    method public android.support.v4.app.NotificationCompat.Builder setLocalOnly(boolean);
-    method public android.support.v4.app.NotificationCompat.Builder setNumber(int);
-    method public android.support.v4.app.NotificationCompat.Builder setOngoing(boolean);
-    method public android.support.v4.app.NotificationCompat.Builder setOnlyAlertOnce(boolean);
-    method public android.support.v4.app.NotificationCompat.Builder setPriority(int);
-    method public android.support.v4.app.NotificationCompat.Builder setProgress(int, int, boolean);
-    method public android.support.v4.app.NotificationCompat.Builder setPublicVersion(android.app.Notification);
-    method public android.support.v4.app.NotificationCompat.Builder setRemoteInputHistory(java.lang.CharSequence[]);
-    method public android.support.v4.app.NotificationCompat.Builder setShowWhen(boolean);
-    method public android.support.v4.app.NotificationCompat.Builder setSmallIcon(int);
-    method public android.support.v4.app.NotificationCompat.Builder setSmallIcon(int, int);
-    method public android.support.v4.app.NotificationCompat.Builder setSortKey(java.lang.String);
-    method public android.support.v4.app.NotificationCompat.Builder setSound(android.net.Uri);
-    method public android.support.v4.app.NotificationCompat.Builder setSound(android.net.Uri, int);
-    method public android.support.v4.app.NotificationCompat.Builder setStyle(android.support.v4.app.NotificationCompat.Style);
-    method public android.support.v4.app.NotificationCompat.Builder setSubText(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.Builder setTicker(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.Builder setTicker(java.lang.CharSequence, android.widget.RemoteViews);
-    method public android.support.v4.app.NotificationCompat.Builder setUsesChronometer(boolean);
-    method public android.support.v4.app.NotificationCompat.Builder setVibrate(long[]);
-    method public android.support.v4.app.NotificationCompat.Builder setVisibility(int);
-    method public android.support.v4.app.NotificationCompat.Builder setWhen(long);
-    field public java.util.ArrayList<java.lang.String> mPeople;
-  }
-
-  public static final class NotificationCompat.CarExtender implements android.support.v4.app.NotificationCompat.Extender {
-    ctor public NotificationCompat.CarExtender();
-    ctor public NotificationCompat.CarExtender(android.app.Notification);
-    method public android.support.v4.app.NotificationCompat.Builder extend(android.support.v4.app.NotificationCompat.Builder);
-    method public int getColor();
-    method public android.graphics.Bitmap getLargeIcon();
-    method public android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation getUnreadConversation();
-    method public android.support.v4.app.NotificationCompat.CarExtender setColor(int);
-    method public android.support.v4.app.NotificationCompat.CarExtender setLargeIcon(android.graphics.Bitmap);
-    method public android.support.v4.app.NotificationCompat.CarExtender setUnreadConversation(android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation);
-  }
-
-  public static class NotificationCompat.CarExtender.UnreadConversation {
-    method public long getLatestTimestamp();
-    method public java.lang.String[] getMessages();
-    method public java.lang.String getParticipant();
-    method public java.lang.String[] getParticipants();
-    method public android.app.PendingIntent getReadPendingIntent();
-    method public android.support.v4.app.RemoteInput getRemoteInput();
-    method public android.app.PendingIntent getReplyPendingIntent();
-  }
-
-  public static class NotificationCompat.CarExtender.UnreadConversation.Builder {
-    ctor public NotificationCompat.CarExtender.UnreadConversation.Builder(java.lang.String);
-    method public android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation.Builder addMessage(java.lang.String);
-    method public android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation build();
-    method public android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation.Builder setLatestTimestamp(long);
-    method public android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation.Builder setReadPendingIntent(android.app.PendingIntent);
-    method public android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation.Builder setReplyAction(android.app.PendingIntent, android.support.v4.app.RemoteInput);
-  }
-
-  public static abstract interface NotificationCompat.Extender {
-    method public abstract android.support.v4.app.NotificationCompat.Builder extend(android.support.v4.app.NotificationCompat.Builder);
-  }
-
-  public static class NotificationCompat.InboxStyle extends android.support.v4.app.NotificationCompat.Style {
-    ctor public NotificationCompat.InboxStyle();
-    ctor public NotificationCompat.InboxStyle(android.support.v4.app.NotificationCompat.Builder);
-    method public android.support.v4.app.NotificationCompat.InboxStyle addLine(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.InboxStyle setBigContentTitle(java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.InboxStyle setSummaryText(java.lang.CharSequence);
-  }
-
-  public static class NotificationCompat.MessagingStyle extends android.support.v4.app.NotificationCompat.Style {
-    ctor public NotificationCompat.MessagingStyle(java.lang.CharSequence);
-    method public void addCompatExtras(android.os.Bundle);
-    method public android.support.v4.app.NotificationCompat.MessagingStyle addMessage(java.lang.CharSequence, long, java.lang.CharSequence);
-    method public android.support.v4.app.NotificationCompat.MessagingStyle addMessage(android.support.v4.app.NotificationCompat.MessagingStyle.Message);
-    method public static android.support.v4.app.NotificationCompat.MessagingStyle extractMessagingStyleFromNotification(android.app.Notification);
-    method public java.lang.CharSequence getConversationTitle();
-    method public java.util.List<android.support.v4.app.NotificationCompat.MessagingStyle.Message> getMessages();
-    method public java.lang.CharSequence getUserDisplayName();
-    method public android.support.v4.app.NotificationCompat.MessagingStyle setConversationTitle(java.lang.CharSequence);
-    field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
-  }
-
-  public static final class NotificationCompat.MessagingStyle.Message {
-    ctor public NotificationCompat.MessagingStyle.Message(java.lang.CharSequence, long, java.lang.CharSequence);
-    method public java.lang.String getDataMimeType();
-    method public android.net.Uri getDataUri();
-    method public java.lang.CharSequence getSender();
-    method public java.lang.CharSequence getText();
-    method public long getTimestamp();
-    method public android.support.v4.app.NotificationCompat.MessagingStyle.Message setData(java.lang.String, android.net.Uri);
-  }
-
-  public static abstract class NotificationCompat.Style {
-    ctor public NotificationCompat.Style();
-    method public android.app.Notification build();
-    method public void setBuilder(android.support.v4.app.NotificationCompat.Builder);
-  }
-
-  public static final class NotificationCompat.WearableExtender implements android.support.v4.app.NotificationCompat.Extender {
-    ctor public NotificationCompat.WearableExtender();
-    ctor public NotificationCompat.WearableExtender(android.app.Notification);
-    method public android.support.v4.app.NotificationCompat.WearableExtender addAction(android.support.v4.app.NotificationCompat.Action);
-    method public android.support.v4.app.NotificationCompat.WearableExtender addActions(java.util.List<android.support.v4.app.NotificationCompat.Action>);
-    method public android.support.v4.app.NotificationCompat.WearableExtender addPage(android.app.Notification);
-    method public android.support.v4.app.NotificationCompat.WearableExtender addPages(java.util.List<android.app.Notification>);
-    method public android.support.v4.app.NotificationCompat.WearableExtender clearActions();
-    method public android.support.v4.app.NotificationCompat.WearableExtender clearPages();
-    method public android.support.v4.app.NotificationCompat.WearableExtender clone();
-    method public android.support.v4.app.NotificationCompat.Builder extend(android.support.v4.app.NotificationCompat.Builder);
-    method public java.util.List<android.support.v4.app.NotificationCompat.Action> getActions();
-    method public android.graphics.Bitmap getBackground();
-    method public java.lang.String getBridgeTag();
-    method public int getContentAction();
-    method public int getContentIcon();
-    method public int getContentIconGravity();
-    method public boolean getContentIntentAvailableOffline();
-    method public int getCustomContentHeight();
-    method public int getCustomSizePreset();
-    method public java.lang.String getDismissalId();
-    method public android.app.PendingIntent getDisplayIntent();
-    method public int getGravity();
-    method public boolean getHintAmbientBigPicture();
-    method public boolean getHintAvoidBackgroundClipping();
-    method public boolean getHintContentIntentLaunchesActivity();
-    method public boolean getHintHideIcon();
-    method public int getHintScreenTimeout();
-    method public boolean getHintShowBackgroundOnly();
-    method public java.util.List<android.app.Notification> getPages();
-    method public boolean getStartScrollBottom();
-    method public android.support.v4.app.NotificationCompat.WearableExtender setBackground(android.graphics.Bitmap);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setBridgeTag(java.lang.String);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setContentAction(int);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setContentIcon(int);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setContentIconGravity(int);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setContentIntentAvailableOffline(boolean);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setCustomContentHeight(int);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setCustomSizePreset(int);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setDismissalId(java.lang.String);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setDisplayIntent(android.app.PendingIntent);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setGravity(int);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setHintAmbientBigPicture(boolean);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setHintAvoidBackgroundClipping(boolean);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setHintContentIntentLaunchesActivity(boolean);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setHintHideIcon(boolean);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setHintScreenTimeout(int);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setHintShowBackgroundOnly(boolean);
-    method public android.support.v4.app.NotificationCompat.WearableExtender setStartScrollBottom(boolean);
-    field public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
-    field public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
-    field public static final int SIZE_DEFAULT = 0; // 0x0
-    field public static final int SIZE_FULL_SCREEN = 5; // 0x5
-    field public static final int SIZE_LARGE = 4; // 0x4
-    field public static final int SIZE_MEDIUM = 3; // 0x3
-    field public static final int SIZE_SMALL = 2; // 0x2
-    field public static final int SIZE_XSMALL = 1; // 0x1
-    field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
-  }
-
-  public final class NotificationCompatExtras {
-    field public static final java.lang.String EXTRA_ACTION_EXTRAS = "android.support.actionExtras";
-    field public static final java.lang.String EXTRA_GROUP_KEY = "android.support.groupKey";
-    field public static final java.lang.String EXTRA_GROUP_SUMMARY = "android.support.isGroupSummary";
-    field public static final java.lang.String EXTRA_LOCAL_ONLY = "android.support.localOnly";
-    field public static final java.lang.String EXTRA_REMOTE_INPUTS = "android.support.remoteInputs";
-    field public static final java.lang.String EXTRA_SORT_KEY = "android.support.sortKey";
-  }
-
-  public abstract class NotificationCompatSideChannelService extends android.app.Service {
-    ctor public NotificationCompatSideChannelService();
-    method public abstract void cancel(java.lang.String, int, java.lang.String);
-    method public abstract void cancelAll(java.lang.String);
-    method public abstract void notify(java.lang.String, int, java.lang.String, android.app.Notification);
-    method public android.os.IBinder onBind(android.content.Intent);
-  }
-
-  public final class NotificationManagerCompat {
-    method public boolean areNotificationsEnabled();
-    method public void cancel(int);
-    method public void cancel(java.lang.String, int);
-    method public void cancelAll();
-    method public static android.support.v4.app.NotificationManagerCompat from(android.content.Context);
-    method public static java.util.Set<java.lang.String> getEnabledListenerPackages(android.content.Context);
-    method public int getImportance();
-    method public void notify(int, android.app.Notification);
-    method public void notify(java.lang.String, int, android.app.Notification);
-    field public static final java.lang.String ACTION_BIND_SIDE_CHANNEL = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL";
-    field public static final java.lang.String EXTRA_USE_SIDE_CHANNEL = "android.support.useSideChannel";
-    field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
-    field public static final int IMPORTANCE_HIGH = 4; // 0x4
-    field public static final int IMPORTANCE_LOW = 2; // 0x2
-    field public static final int IMPORTANCE_MAX = 5; // 0x5
-    field public static final int IMPORTANCE_MIN = 1; // 0x1
-    field public static final int IMPORTANCE_NONE = 0; // 0x0
-    field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
-  }
-
-  public final class RemoteInput extends android.support.v4.app.RemoteInputCompatBase.RemoteInput {
-    method public static void addResultsToIntent(android.support.v4.app.RemoteInput[], android.content.Intent, android.os.Bundle);
-    method public boolean getAllowFreeFormInput();
-    method public java.lang.CharSequence[] getChoices();
-    method public android.os.Bundle getExtras();
-    method public java.lang.CharSequence getLabel();
-    method public java.lang.String getResultKey();
-    method public static android.os.Bundle getResultsFromIntent(android.content.Intent);
-    field public static final java.lang.String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
-    field public static final java.lang.String RESULTS_CLIP_LABEL = "android.remoteinput.results";
-  }
-
-  public static final class RemoteInput.Builder {
-    ctor public RemoteInput.Builder(java.lang.String);
-    method public android.support.v4.app.RemoteInput.Builder addExtras(android.os.Bundle);
-    method public android.support.v4.app.RemoteInput build();
-    method public android.os.Bundle getExtras();
-    method public android.support.v4.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
-    method public android.support.v4.app.RemoteInput.Builder setChoices(java.lang.CharSequence[]);
-    method public android.support.v4.app.RemoteInput.Builder setLabel(java.lang.CharSequence);
-  }
-
-   class RemoteInputCompatBase {
-  }
-
-  public static abstract class RemoteInputCompatBase.RemoteInput {
-    ctor public RemoteInputCompatBase.RemoteInput();
-    method protected abstract boolean getAllowFreeFormInput();
-    method protected abstract java.lang.CharSequence[] getChoices();
-    method protected abstract android.os.Bundle getExtras();
-    method protected abstract java.lang.CharSequence getLabel();
-    method protected abstract java.lang.String getResultKey();
-  }
-
-  public final class ServiceCompat {
-    method public static void stopForeground(android.app.Service, int);
-    field public static final int START_STICKY = 1; // 0x1
-    field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
-    field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
-  }
-
-  public final class ShareCompat {
-    method public static void configureMenuItem(android.view.MenuItem, android.support.v4.app.ShareCompat.IntentBuilder);
-    method public static void configureMenuItem(android.view.Menu, int, android.support.v4.app.ShareCompat.IntentBuilder);
-    method public static android.content.ComponentName getCallingActivity(android.app.Activity);
-    method public static java.lang.String getCallingPackage(android.app.Activity);
-    field public static final java.lang.String EXTRA_CALLING_ACTIVITY = "android.support.v4.app.EXTRA_CALLING_ACTIVITY";
-    field public static final java.lang.String EXTRA_CALLING_PACKAGE = "android.support.v4.app.EXTRA_CALLING_PACKAGE";
-  }
-
-  public static class ShareCompat.IntentBuilder {
-    method public android.support.v4.app.ShareCompat.IntentBuilder addEmailBcc(java.lang.String);
-    method public android.support.v4.app.ShareCompat.IntentBuilder addEmailBcc(java.lang.String[]);
-    method public android.support.v4.app.ShareCompat.IntentBuilder addEmailCc(java.lang.String);
-    method public android.support.v4.app.ShareCompat.IntentBuilder addEmailCc(java.lang.String[]);
-    method public android.support.v4.app.ShareCompat.IntentBuilder addEmailTo(java.lang.String);
-    method public android.support.v4.app.ShareCompat.IntentBuilder addEmailTo(java.lang.String[]);
-    method public android.support.v4.app.ShareCompat.IntentBuilder addStream(android.net.Uri);
-    method public android.content.Intent createChooserIntent();
-    method public static android.support.v4.app.ShareCompat.IntentBuilder from(android.app.Activity);
-    method public android.content.Intent getIntent();
-    method public android.support.v4.app.ShareCompat.IntentBuilder setChooserTitle(java.lang.CharSequence);
-    method public android.support.v4.app.ShareCompat.IntentBuilder setChooserTitle(int);
-    method public android.support.v4.app.ShareCompat.IntentBuilder setEmailBcc(java.lang.String[]);
-    method public android.support.v4.app.ShareCompat.IntentBuilder setEmailCc(java.lang.String[]);
-    method public android.support.v4.app.ShareCompat.IntentBuilder setEmailTo(java.lang.String[]);
-    method public android.support.v4.app.ShareCompat.IntentBuilder setHtmlText(java.lang.String);
-    method public android.support.v4.app.ShareCompat.IntentBuilder setStream(android.net.Uri);
-    method public android.support.v4.app.ShareCompat.IntentBuilder setSubject(java.lang.String);
-    method public android.support.v4.app.ShareCompat.IntentBuilder setText(java.lang.CharSequence);
-    method public android.support.v4.app.ShareCompat.IntentBuilder setType(java.lang.String);
-    method public void startChooser();
-  }
-
-  public static class ShareCompat.IntentReader {
-    method public static android.support.v4.app.ShareCompat.IntentReader from(android.app.Activity);
-    method public android.content.ComponentName getCallingActivity();
-    method public android.graphics.drawable.Drawable getCallingActivityIcon();
-    method public android.graphics.drawable.Drawable getCallingApplicationIcon();
-    method public java.lang.CharSequence getCallingApplicationLabel();
-    method public java.lang.String getCallingPackage();
-    method public java.lang.String[] getEmailBcc();
-    method public java.lang.String[] getEmailCc();
-    method public java.lang.String[] getEmailTo();
-    method public java.lang.String getHtmlText();
-    method public android.net.Uri getStream();
-    method public android.net.Uri getStream(int);
-    method public int getStreamCount();
-    method public java.lang.String getSubject();
-    method public java.lang.CharSequence getText();
-    method public java.lang.String getType();
-    method public boolean isMultipleShare();
-    method public boolean isShareIntent();
-    method public boolean isSingleShare();
-  }
-
-  public abstract class SharedElementCallback {
-    ctor public SharedElementCallback();
-    method public android.os.Parcelable onCaptureSharedElementSnapshot(android.view.View, android.graphics.Matrix, android.graphics.RectF);
-    method public android.view.View onCreateSnapshotView(android.content.Context, android.os.Parcelable);
-    method public void onMapSharedElements(java.util.List<java.lang.String>, java.util.Map<java.lang.String, android.view.View>);
-    method public void onRejectSharedElements(java.util.List<android.view.View>);
-    method public void onSharedElementEnd(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
-    method public void onSharedElementStart(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
-    method public void onSharedElementsArrived(java.util.List<java.lang.String>, java.util.List<android.view.View>, android.support.v4.app.SharedElementCallback.OnSharedElementsReadyListener);
-  }
-
-  public static abstract interface SharedElementCallback.OnSharedElementsReadyListener {
-    method public abstract void onSharedElementsReady();
-  }
-
-  public final class TaskStackBuilder implements java.lang.Iterable {
-    method public android.support.v4.app.TaskStackBuilder addNextIntent(android.content.Intent);
-    method public android.support.v4.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
-    method public android.support.v4.app.TaskStackBuilder addParentStack(android.app.Activity);
-    method public android.support.v4.app.TaskStackBuilder addParentStack(java.lang.Class<?>);
-    method public android.support.v4.app.TaskStackBuilder addParentStack(android.content.ComponentName);
-    method public static android.support.v4.app.TaskStackBuilder create(android.content.Context);
-    method public android.content.Intent editIntentAt(int);
-    method public static deprecated android.support.v4.app.TaskStackBuilder from(android.content.Context);
-    method public deprecated android.content.Intent getIntent(int);
-    method public int getIntentCount();
-    method public android.content.Intent[] getIntents();
-    method public android.app.PendingIntent getPendingIntent(int, int);
-    method public android.app.PendingIntent getPendingIntent(int, int, android.os.Bundle);
-    method public deprecated java.util.Iterator<android.content.Intent> iterator();
-    method public void startActivities();
-    method public void startActivities(android.os.Bundle);
-  }
-
-  public static abstract interface TaskStackBuilder.SupportParentable {
-    method public abstract android.content.Intent getSupportParentActivityIntent();
-  }
-
-}
-
-package android.support.v4.content {
-
-  public abstract class AsyncTaskLoader<D> extends android.support.v4.content.Loader {
-    ctor public AsyncTaskLoader(android.content.Context);
-    method public void cancelLoadInBackground();
-    method public boolean isLoadInBackgroundCanceled();
-    method public abstract D loadInBackground();
-    method public void onCanceled(D);
-    method protected D onLoadInBackground();
-    method public void setUpdateThrottle(long);
-  }
-
-  public final class ContentResolverCompat {
-    method public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.support.v4.os.CancellationSignal);
-  }
-
-  public class ContextCompat {
-    ctor protected ContextCompat();
-    method public static int checkSelfPermission(android.content.Context, java.lang.String);
-    method public static android.content.Context createDeviceProtectedStorageContext(android.content.Context);
-    method public static java.io.File getCodeCacheDir(android.content.Context);
-    method public static final int getColor(android.content.Context, int);
-    method public static final android.content.res.ColorStateList getColorStateList(android.content.Context, int);
-    method public static java.io.File getDataDir(android.content.Context);
-    method public static final android.graphics.drawable.Drawable getDrawable(android.content.Context, int);
-    method public static java.io.File[] getExternalCacheDirs(android.content.Context);
-    method public static java.io.File[] getExternalFilesDirs(android.content.Context, java.lang.String);
-    method public static final java.io.File getNoBackupFilesDir(android.content.Context);
-    method public static java.io.File[] getObbDirs(android.content.Context);
-    method public static boolean isDeviceProtectedStorage(android.content.Context);
-    method public static boolean startActivities(android.content.Context, android.content.Intent[]);
-    method public static boolean startActivities(android.content.Context, android.content.Intent[], android.os.Bundle);
-    method public static void startActivity(android.content.Context, android.content.Intent, android.os.Bundle);
-  }
-
-  public class CursorLoader extends android.support.v4.content.AsyncTaskLoader {
-    ctor public CursorLoader(android.content.Context);
-    ctor public CursorLoader(android.content.Context, android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
-    method public void deliverResult(android.database.Cursor);
-    method public java.lang.String[] getProjection();
-    method public java.lang.String getSelection();
-    method public java.lang.String[] getSelectionArgs();
-    method public java.lang.String getSortOrder();
-    method public android.net.Uri getUri();
-    method public android.database.Cursor loadInBackground();
-    method public void onCanceled(android.database.Cursor);
-    method public void setProjection(java.lang.String[]);
-    method public void setSelection(java.lang.String);
-    method public void setSelectionArgs(java.lang.String[]);
-    method public void setSortOrder(java.lang.String);
-    method public void setUri(android.net.Uri);
-  }
-
-  public class FileProvider extends android.content.ContentProvider {
-    ctor public FileProvider();
-    method public int delete(android.net.Uri, java.lang.String, java.lang.String[]);
-    method public java.lang.String getType(android.net.Uri);
-    method public static android.net.Uri getUriForFile(android.content.Context, java.lang.String, java.io.File);
-    method public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    method public boolean onCreate();
-    method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
-    method public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
-  }
-
-  public final class IntentCompat {
-    method public static android.content.Intent makeMainActivity(android.content.ComponentName);
-    method public static android.content.Intent makeMainSelectorActivity(java.lang.String, java.lang.String);
-    method public static android.content.Intent makeRestartActivityTask(android.content.ComponentName);
-    field public static final java.lang.String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE";
-    field public static final java.lang.String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE";
-    field public static final java.lang.String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
-    field public static final java.lang.String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list";
-    field public static final java.lang.String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list";
-    field public static final java.lang.String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
-    field public static final java.lang.String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
-    field public static final int FLAG_ACTIVITY_CLEAR_TASK = 32768; // 0x8000
-    field public static final int FLAG_ACTIVITY_TASK_ON_HOME = 16384; // 0x4000
-  }
-
-  public class Loader<D> {
-    ctor public Loader(android.content.Context);
-    method public void abandon();
-    method public boolean cancelLoad();
-    method public void commitContentChanged();
-    method public java.lang.String dataToString(D);
-    method public void deliverCancellation();
-    method public void deliverResult(D);
-    method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    method public void forceLoad();
-    method public android.content.Context getContext();
-    method public int getId();
-    method public boolean isAbandoned();
-    method public boolean isReset();
-    method public boolean isStarted();
-    method protected void onAbandon();
-    method protected boolean onCancelLoad();
-    method public void onContentChanged();
-    method protected void onForceLoad();
-    method protected void onReset();
-    method protected void onStartLoading();
-    method protected void onStopLoading();
-    method public void registerListener(int, android.support.v4.content.Loader.OnLoadCompleteListener<D>);
-    method public void registerOnLoadCanceledListener(android.support.v4.content.Loader.OnLoadCanceledListener<D>);
-    method public void reset();
-    method public void rollbackContentChanged();
-    method public final void startLoading();
-    method public void stopLoading();
-    method public boolean takeContentChanged();
-    method public void unregisterListener(android.support.v4.content.Loader.OnLoadCompleteListener<D>);
-    method public void unregisterOnLoadCanceledListener(android.support.v4.content.Loader.OnLoadCanceledListener<D>);
-  }
-
-  public final class Loader.ForceLoadContentObserver extends android.database.ContentObserver {
-    ctor public Loader.ForceLoadContentObserver();
-  }
-
-  public static abstract interface Loader.OnLoadCanceledListener<D> {
-    method public abstract void onLoadCanceled(android.support.v4.content.Loader<D>);
-  }
-
-  public static abstract interface Loader.OnLoadCompleteListener<D> {
-    method public abstract void onLoadComplete(android.support.v4.content.Loader<D>, D);
-  }
-
-  public final class LocalBroadcastManager {
-    method public static android.support.v4.content.LocalBroadcastManager getInstance(android.content.Context);
-    method public void registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
-    method public boolean sendBroadcast(android.content.Intent);
-    method public void sendBroadcastSync(android.content.Intent);
-    method public void unregisterReceiver(android.content.BroadcastReceiver);
-  }
-
-  public final class ParallelExecutorCompat {
-    method public static java.util.concurrent.Executor getParallelExecutor();
-  }
-
-  public final class PermissionChecker {
-    method public static int checkCallingOrSelfPermission(android.content.Context, java.lang.String);
-    method public static int checkCallingPermission(android.content.Context, java.lang.String, java.lang.String);
-    method public static int checkPermission(android.content.Context, java.lang.String, int, int, java.lang.String);
-    method public static int checkSelfPermission(android.content.Context, java.lang.String);
-    field public static final int PERMISSION_DENIED = -1; // 0xffffffff
-    field public static final int PERMISSION_DENIED_APP_OP = -2; // 0xfffffffe
-    field public static final int PERMISSION_GRANTED = 0; // 0x0
-  }
-
-  public static abstract class PermissionChecker.PermissionResult implements java.lang.annotation.Annotation {
-  }
-
-  public final class SharedPreferencesCompat {
-  }
-
-  public static final class SharedPreferencesCompat.EditorCompat {
-    method public void apply(android.content.SharedPreferences.Editor);
-    method public static android.support.v4.content.SharedPreferencesCompat.EditorCompat getInstance();
-  }
-
-  public abstract class WakefulBroadcastReceiver extends android.content.BroadcastReceiver {
-    ctor public WakefulBroadcastReceiver();
-    method public static boolean completeWakefulIntent(android.content.Intent);
-    method public static android.content.ComponentName startWakefulService(android.content.Context, android.content.Intent);
-  }
-
-}
-
-package android.support.v4.content.pm {
-
-  public final class ActivityInfoCompat {
-    field public static final int CONFIG_UI_MODE = 512; // 0x200
-  }
-
-}
-
-package android.support.v4.content.res {
-
-  public final class ConfigurationHelper {
-    method public static int getDensityDpi(android.content.res.Resources);
-    method public static int getScreenHeightDp(android.content.res.Resources);
-    method public static int getScreenWidthDp(android.content.res.Resources);
-    method public static int getSmallestScreenWidthDp(android.content.res.Resources);
-  }
-
-  public final class ResourcesCompat {
-    method public static int getColor(android.content.res.Resources, int, android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-    method public static android.content.res.ColorStateList getColorStateList(android.content.res.Resources, int, android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-    method public static android.graphics.drawable.Drawable getDrawable(android.content.res.Resources, int, android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-    method public static android.graphics.drawable.Drawable getDrawableForDensity(android.content.res.Resources, int, int, android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-  }
-
-}
-
-package android.support.v4.database {
-
-  public final class DatabaseUtilsCompat {
-    method public static java.lang.String[] appendSelectionArgs(java.lang.String[], java.lang.String[]);
-    method public static java.lang.String concatenateWhere(java.lang.String, java.lang.String);
-  }
-
-}
-
-package android.support.v4.graphics {
-
-  public final class BitmapCompat {
-    method public static int getAllocationByteCount(android.graphics.Bitmap);
-    method public static boolean hasMipMap(android.graphics.Bitmap);
-    method public static void setHasMipMap(android.graphics.Bitmap, boolean);
-  }
-
-  public final class ColorUtils {
-    method public static int HSLToColor(float[]);
-    method public static int LABToColor(double, double, double);
-    method public static void LABToXYZ(double, double, double, double[]);
-    method public static void RGBToHSL(int, int, int, float[]);
-    method public static void RGBToLAB(int, int, int, double[]);
-    method public static void RGBToXYZ(int, int, int, double[]);
-    method public static int XYZToColor(double, double, double);
-    method public static void XYZToLAB(double, double, double, double[]);
-    method public static int blendARGB(int, int, float);
-    method public static void blendHSL(float[], float[], float, float[]);
-    method public static void blendLAB(double[], double[], double, double[]);
-    method public static double calculateContrast(int, int);
-    method public static double calculateLuminance(int);
-    method public static int calculateMinimumAlpha(int, int, float);
-    method public static void colorToHSL(int, float[]);
-    method public static void colorToLAB(int, double[]);
-    method public static void colorToXYZ(int, double[]);
-    method public static int compositeColors(int, int);
-    method public static double distanceEuclidean(double[], double[]);
-    method public static int setAlphaComponent(int, int);
-  }
-
-  public final class PaintCompat {
-    method public static boolean hasGlyph(android.graphics.Paint, java.lang.String);
-  }
-
-}
-
-package android.support.v4.graphics.drawable {
-
-  public final class DrawableCompat {
-    method public static void applyTheme(android.graphics.drawable.Drawable, android.content.res.Resources.Theme);
-    method public static boolean canApplyTheme(android.graphics.drawable.Drawable);
-    method public static void clearColorFilter(android.graphics.drawable.Drawable);
-    method public static int getAlpha(android.graphics.drawable.Drawable);
-    method public static android.graphics.ColorFilter getColorFilter(android.graphics.drawable.Drawable);
-    method public static int getLayoutDirection(android.graphics.drawable.Drawable);
-    method public static void inflate(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public static boolean isAutoMirrored(android.graphics.drawable.Drawable);
-    method public static void jumpToCurrentState(android.graphics.drawable.Drawable);
-    method public static void setAutoMirrored(android.graphics.drawable.Drawable, boolean);
-    method public static void setHotspot(android.graphics.drawable.Drawable, float, float);
-    method public static void setHotspotBounds(android.graphics.drawable.Drawable, int, int, int, int);
-    method public static boolean setLayoutDirection(android.graphics.drawable.Drawable, int);
-    method public static void setTint(android.graphics.drawable.Drawable, int);
-    method public static void setTintList(android.graphics.drawable.Drawable, android.content.res.ColorStateList);
-    method public static void setTintMode(android.graphics.drawable.Drawable, android.graphics.PorterDuff.Mode);
-    method public static <T extends android.graphics.drawable.Drawable> T unwrap(android.graphics.drawable.Drawable);
-    method public static android.graphics.drawable.Drawable wrap(android.graphics.drawable.Drawable);
-  }
-
-  public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
-    method public void draw(android.graphics.Canvas);
-    method public final android.graphics.Bitmap getBitmap();
-    method public float getCornerRadius();
-    method public int getGravity();
-    method public int getOpacity();
-    method public final android.graphics.Paint getPaint();
-    method public boolean hasAntiAlias();
-    method public boolean hasMipMap();
-    method public boolean isCircular();
-    method public void setAlpha(int);
-    method public void setAntiAlias(boolean);
-    method public void setCircular(boolean);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setCornerRadius(float);
-    method public void setGravity(int);
-    method public void setMipMap(boolean);
-    method public void setTargetDensity(android.graphics.Canvas);
-    method public void setTargetDensity(android.util.DisplayMetrics);
-    method public void setTargetDensity(int);
-  }
-
-  public final class RoundedBitmapDrawableFactory {
-    method public static android.support.v4.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, android.graphics.Bitmap);
-    method public static android.support.v4.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, java.lang.String);
-    method public static android.support.v4.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, java.io.InputStream);
-  }
-
-}
-
-package android.support.v4.hardware.display {
-
-  public abstract class DisplayManagerCompat {
-    method public abstract android.view.Display getDisplay(int);
-    method public abstract android.view.Display[] getDisplays();
-    method public abstract android.view.Display[] getDisplays(java.lang.String);
-    method public static android.support.v4.hardware.display.DisplayManagerCompat getInstance(android.content.Context);
-    field public static final java.lang.String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
-  }
-
-}
-
-package android.support.v4.hardware.fingerprint {
-
-  public final class FingerprintManagerCompat {
-    method public void authenticate(android.support.v4.hardware.fingerprint.FingerprintManagerCompat.CryptoObject, int, android.support.v4.os.CancellationSignal, android.support.v4.hardware.fingerprint.FingerprintManagerCompat.AuthenticationCallback, android.os.Handler);
-    method public static android.support.v4.hardware.fingerprint.FingerprintManagerCompat from(android.content.Context);
-    method public boolean hasEnrolledFingerprints();
-    method public boolean isHardwareDetected();
-  }
-
-  public static abstract class FingerprintManagerCompat.AuthenticationCallback {
-    ctor public FingerprintManagerCompat.AuthenticationCallback();
-    method public void onAuthenticationError(int, java.lang.CharSequence);
-    method public void onAuthenticationFailed();
-    method public void onAuthenticationHelp(int, java.lang.CharSequence);
-    method public void onAuthenticationSucceeded(android.support.v4.hardware.fingerprint.FingerprintManagerCompat.AuthenticationResult);
-  }
-
-  public static final class FingerprintManagerCompat.AuthenticationResult {
-    ctor public FingerprintManagerCompat.AuthenticationResult(android.support.v4.hardware.fingerprint.FingerprintManagerCompat.CryptoObject);
-    method public android.support.v4.hardware.fingerprint.FingerprintManagerCompat.CryptoObject getCryptoObject();
-  }
-
-  public static class FingerprintManagerCompat.CryptoObject {
-    ctor public FingerprintManagerCompat.CryptoObject(java.security.Signature);
-    ctor public FingerprintManagerCompat.CryptoObject(javax.crypto.Cipher);
-    ctor public FingerprintManagerCompat.CryptoObject(javax.crypto.Mac);
-    method public javax.crypto.Cipher getCipher();
-    method public javax.crypto.Mac getMac();
-    method public java.security.Signature getSignature();
-  }
-
-}
-
-package android.support.v4.media {
-
-  public final class MediaBrowserCompat {
-    ctor public MediaBrowserCompat(android.content.Context, android.content.ComponentName, android.support.v4.media.MediaBrowserCompat.ConnectionCallback, android.os.Bundle);
-    method public void connect();
-    method public void disconnect();
-    method public android.os.Bundle getExtras();
-    method public void getItem(java.lang.String, android.support.v4.media.MediaBrowserCompat.ItemCallback);
-    method public java.lang.String getRoot();
-    method public android.content.ComponentName getServiceComponent();
-    method public android.support.v4.media.session.MediaSessionCompat.Token getSessionToken();
-    method public boolean isConnected();
-    method public void search(java.lang.String, android.os.Bundle, android.support.v4.media.MediaBrowserCompat.SearchCallback);
-    method public void sendCustomAction(java.lang.String, android.os.Bundle, android.support.v4.media.MediaBrowserCompat.CustomActionCallback);
-    method public void subscribe(java.lang.String, android.support.v4.media.MediaBrowserCompat.SubscriptionCallback);
-    method public void subscribe(java.lang.String, android.os.Bundle, android.support.v4.media.MediaBrowserCompat.SubscriptionCallback);
-    method public void unsubscribe(java.lang.String);
-    method public void unsubscribe(java.lang.String, android.support.v4.media.MediaBrowserCompat.SubscriptionCallback);
-    field public static final java.lang.String EXTRA_PAGE = "android.media.browse.extra.PAGE";
-    field public static final java.lang.String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
-  }
-
-  public static class MediaBrowserCompat.ConnectionCallback {
-    ctor public MediaBrowserCompat.ConnectionCallback();
-    method public void onConnected();
-    method public void onConnectionFailed();
-    method public void onConnectionSuspended();
-  }
-
-  public static abstract class MediaBrowserCompat.CustomActionCallback {
-    ctor public MediaBrowserCompat.CustomActionCallback();
-    method public void onError(java.lang.String, android.os.Bundle, android.os.Bundle);
-    method public void onProgressUpdate(java.lang.String, android.os.Bundle, android.os.Bundle);
-    method public void onResult(java.lang.String, android.os.Bundle, android.os.Bundle);
-  }
-
-  public static abstract class MediaBrowserCompat.ItemCallback {
-    ctor public MediaBrowserCompat.ItemCallback();
-    method public void onError(java.lang.String);
-    method public void onItemLoaded(android.support.v4.media.MediaBrowserCompat.MediaItem);
-  }
-
-  public static class MediaBrowserCompat.MediaItem implements android.os.Parcelable {
-    ctor public MediaBrowserCompat.MediaItem(android.support.v4.media.MediaDescriptionCompat, int);
-    method public int describeContents();
-    method public static android.support.v4.media.MediaBrowserCompat.MediaItem fromMediaItem(java.lang.Object);
-    method public static java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem> fromMediaItemList(java.util.List<?>);
-    method public android.support.v4.media.MediaDescriptionCompat getDescription();
-    method public int getFlags();
-    method public java.lang.String getMediaId();
-    method public boolean isBrowsable();
-    method public boolean isPlayable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.media.MediaBrowserCompat.MediaItem> CREATOR;
-    field public static final int FLAG_BROWSABLE = 1; // 0x1
-    field public static final int FLAG_PLAYABLE = 2; // 0x2
-  }
-
-  public static abstract class MediaBrowserCompat.SearchCallback {
-    ctor public MediaBrowserCompat.SearchCallback();
-    method public void onError(java.lang.String, android.os.Bundle);
-    method public void onSearchResult(java.lang.String, android.os.Bundle, java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>);
-  }
-
-  public static abstract class MediaBrowserCompat.SubscriptionCallback {
-    ctor public MediaBrowserCompat.SubscriptionCallback();
-    method public void onChildrenLoaded(java.lang.String, java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>);
-    method public void onChildrenLoaded(java.lang.String, java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>, android.os.Bundle);
-    method public void onError(java.lang.String);
-    method public void onError(java.lang.String, android.os.Bundle);
-  }
-
-  public abstract class MediaBrowserServiceCompat extends android.app.Service {
-    ctor public MediaBrowserServiceCompat();
-    method public void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    method public final android.os.Bundle getBrowserRootHints();
-    method public android.support.v4.media.session.MediaSessionCompat.Token getSessionToken();
-    method public void notifyChildrenChanged(java.lang.String);
-    method public void notifyChildrenChanged(java.lang.String, android.os.Bundle);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onCustomAction(java.lang.String, android.os.Bundle, android.support.v4.media.MediaBrowserServiceCompat.Result<android.os.Bundle>);
-    method public abstract android.support.v4.media.MediaBrowserServiceCompat.BrowserRoot onGetRoot(java.lang.String, int, android.os.Bundle);
-    method public abstract void onLoadChildren(java.lang.String, android.support.v4.media.MediaBrowserServiceCompat.Result<java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>>);
-    method public void onLoadChildren(java.lang.String, android.support.v4.media.MediaBrowserServiceCompat.Result<java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>>, android.os.Bundle);
-    method public void onLoadItem(java.lang.String, android.support.v4.media.MediaBrowserServiceCompat.Result<android.support.v4.media.MediaBrowserCompat.MediaItem>);
-    method public void onSearch(java.lang.String, android.os.Bundle, android.support.v4.media.MediaBrowserServiceCompat.Result<java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>>);
-    method public void setSessionToken(android.support.v4.media.session.MediaSessionCompat.Token);
-    field public static final java.lang.String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
-  }
-
-  public static final class MediaBrowserServiceCompat.BrowserRoot {
-    ctor public MediaBrowserServiceCompat.BrowserRoot(java.lang.String, android.os.Bundle);
-    method public android.os.Bundle getExtras();
-    method public java.lang.String getRootId();
-    field public static final java.lang.String EXTRA_OFFLINE = "android.service.media.extra.OFFLINE";
-    field public static final java.lang.String EXTRA_RECENT = "android.service.media.extra.RECENT";
-    field public static final java.lang.String EXTRA_SUGGESTED = "android.service.media.extra.SUGGESTED";
-    field public static final deprecated java.lang.String EXTRA_SUGGESTION_KEYWORDS = "android.service.media.extra.SUGGESTION_KEYWORDS";
-  }
-
-  public static class MediaBrowserServiceCompat.Result<T> {
-    method public void detach();
-    method public void sendError(android.os.Bundle);
-    method public void sendProgressUpdate(android.os.Bundle);
-    method public void sendResult(T);
-  }
-
-  public final class MediaDescriptionCompat implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.support.v4.media.MediaDescriptionCompat fromMediaDescription(java.lang.Object);
-    method public java.lang.CharSequence getDescription();
-    method public android.os.Bundle getExtras();
-    method public android.graphics.Bitmap getIconBitmap();
-    method public android.net.Uri getIconUri();
-    method public java.lang.Object getMediaDescription();
-    method public java.lang.String getMediaId();
-    method public android.net.Uri getMediaUri();
-    method public java.lang.CharSequence getSubtitle();
-    method public java.lang.CharSequence getTitle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
-    field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
-    field public static final long BT_FOLDER_TYPE_GENRES = 4L; // 0x4L
-    field public static final long BT_FOLDER_TYPE_MIXED = 0L; // 0x0L
-    field public static final long BT_FOLDER_TYPE_PLAYLISTS = 5L; // 0x5L
-    field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
-    field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
-    field public static final android.os.Parcelable.Creator<android.support.v4.media.MediaDescriptionCompat> CREATOR;
-    field public static final java.lang.String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
-  }
-
-  public static final class MediaDescriptionCompat.Builder {
-    ctor public MediaDescriptionCompat.Builder();
-    method public android.support.v4.media.MediaDescriptionCompat build();
-    method public android.support.v4.media.MediaDescriptionCompat.Builder setDescription(java.lang.CharSequence);
-    method public android.support.v4.media.MediaDescriptionCompat.Builder setExtras(android.os.Bundle);
-    method public android.support.v4.media.MediaDescriptionCompat.Builder setIconBitmap(android.graphics.Bitmap);
-    method public android.support.v4.media.MediaDescriptionCompat.Builder setIconUri(android.net.Uri);
-    method public android.support.v4.media.MediaDescriptionCompat.Builder setMediaId(java.lang.String);
-    method public android.support.v4.media.MediaDescriptionCompat.Builder setMediaUri(android.net.Uri);
-    method public android.support.v4.media.MediaDescriptionCompat.Builder setSubtitle(java.lang.CharSequence);
-    method public android.support.v4.media.MediaDescriptionCompat.Builder setTitle(java.lang.CharSequence);
-  }
-
-  public final class MediaMetadataCompat implements android.os.Parcelable {
-    method public boolean containsKey(java.lang.String);
-    method public int describeContents();
-    method public static android.support.v4.media.MediaMetadataCompat fromMediaMetadata(java.lang.Object);
-    method public android.graphics.Bitmap getBitmap(java.lang.String);
-    method public android.os.Bundle getBundle();
-    method public android.support.v4.media.MediaDescriptionCompat getDescription();
-    method public long getLong(java.lang.String);
-    method public java.lang.Object getMediaMetadata();
-    method public android.support.v4.media.RatingCompat getRating(java.lang.String);
-    method public java.lang.String getString(java.lang.String);
-    method public java.lang.CharSequence getText(java.lang.String);
-    method public java.util.Set<java.lang.String> keySet();
-    method public int size();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.media.MediaMetadataCompat> CREATOR;
-    field public static final java.lang.String METADATA_KEY_ADVERTISEMENT = "android.media.metadata.ADVERTISEMENT";
-    field public static final java.lang.String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
-    field public static final java.lang.String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
-    field public static final java.lang.String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
-    field public static final java.lang.String METADATA_KEY_ALBUM_ART_URI = "android.media.metadata.ALBUM_ART_URI";
-    field public static final java.lang.String METADATA_KEY_ART = "android.media.metadata.ART";
-    field public static final java.lang.String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
-    field public static final java.lang.String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
-    field public static final java.lang.String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
-    field public static final java.lang.String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
-    field public static final java.lang.String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
-    field public static final java.lang.String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
-    field public static final java.lang.String METADATA_KEY_DATE = "android.media.metadata.DATE";
-    field public static final java.lang.String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
-    field public static final java.lang.String METADATA_KEY_DISPLAY_DESCRIPTION = "android.media.metadata.DISPLAY_DESCRIPTION";
-    field public static final java.lang.String METADATA_KEY_DISPLAY_ICON = "android.media.metadata.DISPLAY_ICON";
-    field public static final java.lang.String METADATA_KEY_DISPLAY_ICON_URI = "android.media.metadata.DISPLAY_ICON_URI";
-    field public static final java.lang.String METADATA_KEY_DISPLAY_SUBTITLE = "android.media.metadata.DISPLAY_SUBTITLE";
-    field public static final java.lang.String METADATA_KEY_DISPLAY_TITLE = "android.media.metadata.DISPLAY_TITLE";
-    field public static final java.lang.String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
-    field public static final java.lang.String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
-    field public static final java.lang.String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
-    field public static final java.lang.String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI";
-    field public static final java.lang.String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
-    field public static final java.lang.String METADATA_KEY_RATING = "android.media.metadata.RATING";
-    field public static final java.lang.String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
-    field public static final java.lang.String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
-    field public static final java.lang.String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
-    field public static final java.lang.String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
-    field public static final java.lang.String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
-  }
-
-  public static final class MediaMetadataCompat.Builder {
-    ctor public MediaMetadataCompat.Builder();
-    ctor public MediaMetadataCompat.Builder(android.support.v4.media.MediaMetadataCompat);
-    method public android.support.v4.media.MediaMetadataCompat build();
-    method public android.support.v4.media.MediaMetadataCompat.Builder putBitmap(java.lang.String, android.graphics.Bitmap);
-    method public android.support.v4.media.MediaMetadataCompat.Builder putLong(java.lang.String, long);
-    method public android.support.v4.media.MediaMetadataCompat.Builder putRating(java.lang.String, android.support.v4.media.RatingCompat);
-    method public android.support.v4.media.MediaMetadataCompat.Builder putString(java.lang.String, java.lang.String);
-    method public android.support.v4.media.MediaMetadataCompat.Builder putText(java.lang.String, java.lang.CharSequence);
-  }
-
-  public final class RatingCompat implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.support.v4.media.RatingCompat fromRating(java.lang.Object);
-    method public float getPercentRating();
-    method public java.lang.Object getRating();
-    method public int getRatingStyle();
-    method public float getStarRating();
-    method public boolean hasHeart();
-    method public boolean isRated();
-    method public boolean isThumbUp();
-    method public static android.support.v4.media.RatingCompat newHeartRating(boolean);
-    method public static android.support.v4.media.RatingCompat newPercentageRating(float);
-    method public static android.support.v4.media.RatingCompat newStarRating(int, float);
-    method public static android.support.v4.media.RatingCompat newThumbRating(boolean);
-    method public static android.support.v4.media.RatingCompat newUnratedRating(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.media.RatingCompat> CREATOR;
-    field public static final int RATING_3_STARS = 3; // 0x3
-    field public static final int RATING_4_STARS = 4; // 0x4
-    field public static final int RATING_5_STARS = 5; // 0x5
-    field public static final int RATING_HEART = 1; // 0x1
-    field public static final int RATING_NONE = 0; // 0x0
-    field public static final int RATING_PERCENTAGE = 6; // 0x6
-    field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
-  }
-
-  public abstract deprecated class TransportController {
-    ctor public deprecated TransportController();
-    method public abstract deprecated int getBufferPercentage();
-    method public abstract deprecated long getCurrentPosition();
-    method public abstract deprecated long getDuration();
-    method public abstract deprecated int getTransportControlFlags();
-    method public abstract deprecated boolean isPlaying();
-    method public abstract deprecated void pausePlaying();
-    method public abstract deprecated void registerStateListener(android.support.v4.media.TransportStateListener);
-    method public abstract deprecated void seekTo(long);
-    method public abstract deprecated void startPlaying();
-    method public abstract deprecated void stopPlaying();
-    method public abstract deprecated void unregisterStateListener(android.support.v4.media.TransportStateListener);
-  }
-
-  public deprecated class TransportMediator extends android.support.v4.media.TransportController {
-    ctor public deprecated TransportMediator(android.app.Activity, android.support.v4.media.TransportPerformer);
-    ctor public deprecated TransportMediator(android.view.View, android.support.v4.media.TransportPerformer);
-    method public deprecated void destroy();
-    method public deprecated boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public deprecated int getBufferPercentage();
-    method public deprecated long getCurrentPosition();
-    method public deprecated long getDuration();
-    method public deprecated java.lang.Object getRemoteControlClient();
-    method public deprecated int getTransportControlFlags();
-    method public deprecated boolean isPlaying();
-    method public deprecated void pausePlaying();
-    method public deprecated void refreshState();
-    method public deprecated void registerStateListener(android.support.v4.media.TransportStateListener);
-    method public deprecated void seekTo(long);
-    method public deprecated void startPlaying();
-    method public deprecated void stopPlaying();
-    method public deprecated void unregisterStateListener(android.support.v4.media.TransportStateListener);
-    field public static final deprecated int FLAG_KEY_MEDIA_FAST_FORWARD = 64; // 0x40
-    field public static final deprecated int FLAG_KEY_MEDIA_NEXT = 128; // 0x80
-    field public static final deprecated int FLAG_KEY_MEDIA_PAUSE = 16; // 0x10
-    field public static final deprecated int FLAG_KEY_MEDIA_PLAY = 4; // 0x4
-    field public static final deprecated int FLAG_KEY_MEDIA_PLAY_PAUSE = 8; // 0x8
-    field public static final deprecated int FLAG_KEY_MEDIA_PREVIOUS = 1; // 0x1
-    field public static final deprecated int FLAG_KEY_MEDIA_REWIND = 2; // 0x2
-    field public static final deprecated int FLAG_KEY_MEDIA_STOP = 32; // 0x20
-    field public static final deprecated int KEYCODE_MEDIA_PAUSE = 127; // 0x7f
-    field public static final deprecated int KEYCODE_MEDIA_PLAY = 126; // 0x7e
-    field public static final deprecated int KEYCODE_MEDIA_RECORD = 130; // 0x82
-  }
-
-  public abstract deprecated class TransportPerformer {
-    ctor public deprecated TransportPerformer();
-    method public deprecated void onAudioFocusChange(int);
-    method public deprecated int onGetBufferPercentage();
-    method public abstract deprecated long onGetCurrentPosition();
-    method public abstract deprecated long onGetDuration();
-    method public deprecated int onGetTransportControlFlags();
-    method public abstract deprecated boolean onIsPlaying();
-    method public deprecated boolean onMediaButtonDown(int, android.view.KeyEvent);
-    method public deprecated boolean onMediaButtonUp(int, android.view.KeyEvent);
-    method public abstract deprecated void onPause();
-    method public abstract deprecated void onSeekTo(long);
-    method public abstract deprecated void onStart();
-    method public abstract deprecated void onStop();
-  }
-
-  public deprecated class TransportStateListener {
-    ctor public deprecated TransportStateListener();
-    method public deprecated void onPlayingChanged(android.support.v4.media.TransportController);
-    method public deprecated void onTransportControlsChanged(android.support.v4.media.TransportController);
-  }
-
-  public abstract class VolumeProviderCompat {
-    ctor public VolumeProviderCompat(int, int, int);
-    method public final int getCurrentVolume();
-    method public final int getMaxVolume();
-    method public final int getVolumeControl();
-    method public java.lang.Object getVolumeProvider();
-    method public void onAdjustVolume(int);
-    method public void onSetVolumeTo(int);
-    method public void setCallback(android.support.v4.media.VolumeProviderCompat.Callback);
-    method public final void setCurrentVolume(int);
-    field public static final int VOLUME_CONTROL_ABSOLUTE = 2; // 0x2
-    field public static final int VOLUME_CONTROL_FIXED = 0; // 0x0
-    field public static final int VOLUME_CONTROL_RELATIVE = 1; // 0x1
-  }
-
-  public static abstract class VolumeProviderCompat.Callback {
-    ctor public VolumeProviderCompat.Callback();
-    method public abstract void onVolumeChanged(android.support.v4.media.VolumeProviderCompat);
-  }
-
-}
-
-package android.support.v4.media.session {
-
-  public class MediaButtonReceiver extends android.content.BroadcastReceiver {
-    ctor public MediaButtonReceiver();
-    method public static android.app.PendingIntent buildMediaButtonPendingIntent(android.content.Context, long);
-    method public static android.app.PendingIntent buildMediaButtonPendingIntent(android.content.Context, android.content.ComponentName, long);
-    method public static android.view.KeyEvent handleIntent(android.support.v4.media.session.MediaSessionCompat, android.content.Intent);
-    method public void onReceive(android.content.Context, android.content.Intent);
-  }
-
-  public final class MediaControllerCompat {
-    ctor public MediaControllerCompat(android.content.Context, android.support.v4.media.session.MediaSessionCompat);
-    ctor public MediaControllerCompat(android.content.Context, android.support.v4.media.session.MediaSessionCompat.Token) throws android.os.RemoteException;
-    method public void addQueueItem(android.support.v4.media.MediaDescriptionCompat);
-    method public void addQueueItem(android.support.v4.media.MediaDescriptionCompat, int);
-    method public void adjustVolume(int, int);
-    method public boolean dispatchMediaButtonEvent(android.view.KeyEvent);
-    method public android.os.Bundle getExtras();
-    method public long getFlags();
-    method public static android.support.v4.media.session.MediaControllerCompat getMediaController(android.app.Activity);
-    method public java.lang.Object getMediaController();
-    method public android.support.v4.media.MediaMetadataCompat getMetadata();
-    method public java.lang.String getPackageName();
-    method public android.support.v4.media.session.MediaControllerCompat.PlaybackInfo getPlaybackInfo();
-    method public android.support.v4.media.session.PlaybackStateCompat getPlaybackState();
-    method public java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem> getQueue();
-    method public java.lang.CharSequence getQueueTitle();
-    method public int getRatingType();
-    method public int getRepeatMode();
-    method public android.app.PendingIntent getSessionActivity();
-    method public android.support.v4.media.session.MediaSessionCompat.Token getSessionToken();
-    method public android.support.v4.media.session.MediaControllerCompat.TransportControls getTransportControls();
-    method public boolean isCaptioningEnabled();
-    method public boolean isShuffleModeEnabled();
-    method public void registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback);
-    method public void registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback, android.os.Handler);
-    method public void removeQueueItem(android.support.v4.media.MediaDescriptionCompat);
-    method public void removeQueueItemAt(int);
-    method public void sendCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
-    method public static void setMediaController(android.app.Activity, android.support.v4.media.session.MediaControllerCompat);
-    method public void setVolumeTo(int, int);
-    method public void unregisterCallback(android.support.v4.media.session.MediaControllerCompat.Callback);
-  }
-
-  public static abstract class MediaControllerCompat.Callback implements android.os.IBinder.DeathRecipient {
-    ctor public MediaControllerCompat.Callback();
-    method public void binderDied();
-    method public void onAudioInfoChanged(android.support.v4.media.session.MediaControllerCompat.PlaybackInfo);
-    method public void onCaptioningEnabledChanged(boolean);
-    method public void onExtrasChanged(android.os.Bundle);
-    method public void onMetadataChanged(android.support.v4.media.MediaMetadataCompat);
-    method public void onPlaybackStateChanged(android.support.v4.media.session.PlaybackStateCompat);
-    method public void onQueueChanged(java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem>);
-    method public void onQueueTitleChanged(java.lang.CharSequence);
-    method public void onRepeatModeChanged(int);
-    method public void onSessionDestroyed();
-    method public void onSessionEvent(java.lang.String, android.os.Bundle);
-    method public void onShuffleModeChanged(boolean);
-  }
-
-  public static final class MediaControllerCompat.PlaybackInfo {
-    method public int getAudioStream();
-    method public int getCurrentVolume();
-    method public int getMaxVolume();
-    method public int getPlaybackType();
-    method public int getVolumeControl();
-    field public static final int PLAYBACK_TYPE_LOCAL = 1; // 0x1
-    field public static final int PLAYBACK_TYPE_REMOTE = 2; // 0x2
-  }
-
-  public static abstract class MediaControllerCompat.TransportControls {
-    method public abstract void fastForward();
-    method public abstract void pause();
-    method public abstract void play();
-    method public abstract void playFromMediaId(java.lang.String, android.os.Bundle);
-    method public abstract void playFromSearch(java.lang.String, android.os.Bundle);
-    method public abstract void playFromUri(android.net.Uri, android.os.Bundle);
-    method public abstract void prepare();
-    method public abstract void prepareFromMediaId(java.lang.String, android.os.Bundle);
-    method public abstract void prepareFromSearch(java.lang.String, android.os.Bundle);
-    method public abstract void prepareFromUri(android.net.Uri, android.os.Bundle);
-    method public abstract void rewind();
-    method public abstract void seekTo(long);
-    method public abstract void sendCustomAction(android.support.v4.media.session.PlaybackStateCompat.CustomAction, android.os.Bundle);
-    method public abstract void sendCustomAction(java.lang.String, android.os.Bundle);
-    method public abstract void setCaptioningEnabled(boolean);
-    method public abstract void setRating(android.support.v4.media.RatingCompat);
-    method public abstract void setRepeatMode(int);
-    method public abstract void setShuffleModeEnabled(boolean);
-    method public abstract void skipToNext();
-    method public abstract void skipToPrevious();
-    method public abstract void skipToQueueItem(long);
-    method public abstract void stop();
-  }
-
-  public class MediaSessionCompat {
-    ctor public MediaSessionCompat(android.content.Context, java.lang.String);
-    ctor public MediaSessionCompat(android.content.Context, java.lang.String, android.content.ComponentName, android.app.PendingIntent);
-    method public void addOnActiveChangeListener(android.support.v4.media.session.MediaSessionCompat.OnActiveChangeListener);
-    method public static android.support.v4.media.session.MediaSessionCompat fromMediaSession(android.content.Context, java.lang.Object);
-    method public android.support.v4.media.session.MediaControllerCompat getController();
-    method public java.lang.Object getMediaSession();
-    method public java.lang.Object getRemoteControlClient();
-    method public android.support.v4.media.session.MediaSessionCompat.Token getSessionToken();
-    method public boolean isActive();
-    method public static deprecated android.support.v4.media.session.MediaSessionCompat obtain(android.content.Context, java.lang.Object);
-    method public void release();
-    method public void removeOnActiveChangeListener(android.support.v4.media.session.MediaSessionCompat.OnActiveChangeListener);
-    method public void sendSessionEvent(java.lang.String, android.os.Bundle);
-    method public void setActive(boolean);
-    method public void setCallback(android.support.v4.media.session.MediaSessionCompat.Callback);
-    method public void setCallback(android.support.v4.media.session.MediaSessionCompat.Callback, android.os.Handler);
-    method public void setCaptioningEnabled(boolean);
-    method public void setExtras(android.os.Bundle);
-    method public void setFlags(int);
-    method public void setMediaButtonReceiver(android.app.PendingIntent);
-    method public void setMetadata(android.support.v4.media.MediaMetadataCompat);
-    method public void setPlaybackState(android.support.v4.media.session.PlaybackStateCompat);
-    method public void setPlaybackToLocal(int);
-    method public void setPlaybackToRemote(android.support.v4.media.VolumeProviderCompat);
-    method public void setQueue(java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem>);
-    method public void setQueueTitle(java.lang.CharSequence);
-    method public void setRatingType(int);
-    method public void setRepeatMode(int);
-    method public void setSessionActivity(android.app.PendingIntent);
-    method public void setShuffleModeEnabled(boolean);
-    field public static final java.lang.String ACTION_FLAG_AS_INAPPROPRIATE = "android.support.v4.media.session.action.FLAG_AS_INAPPROPRIATE";
-    field public static final java.lang.String ACTION_SKIP_AD = "android.support.v4.media.session.action.SKIP_AD";
-    field public static final int FLAG_HANDLES_MEDIA_BUTTONS = 1; // 0x1
-    field public static final int FLAG_HANDLES_QUEUE_COMMANDS = 4; // 0x4
-    field public static final int FLAG_HANDLES_TRANSPORT_CONTROLS = 2; // 0x2
-  }
-
-  public static abstract class MediaSessionCompat.Callback {
-    ctor public MediaSessionCompat.Callback();
-    method public void onAddQueueItem(android.support.v4.media.MediaDescriptionCompat);
-    method public void onAddQueueItem(android.support.v4.media.MediaDescriptionCompat, int);
-    method public void onCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
-    method public void onCustomAction(java.lang.String, android.os.Bundle);
-    method public void onFastForward();
-    method public boolean onMediaButtonEvent(android.content.Intent);
-    method public void onPause();
-    method public void onPlay();
-    method public void onPlayFromMediaId(java.lang.String, android.os.Bundle);
-    method public void onPlayFromSearch(java.lang.String, android.os.Bundle);
-    method public void onPlayFromUri(android.net.Uri, android.os.Bundle);
-    method public void onPrepare();
-    method public void onPrepareFromMediaId(java.lang.String, android.os.Bundle);
-    method public void onPrepareFromSearch(java.lang.String, android.os.Bundle);
-    method public void onPrepareFromUri(android.net.Uri, android.os.Bundle);
-    method public void onRemoveQueueItem(android.support.v4.media.MediaDescriptionCompat);
-    method public void onRemoveQueueItemAt(int);
-    method public void onRewind();
-    method public void onSeekTo(long);
-    method public void onSetCaptioningEnabled(boolean);
-    method public void onSetRating(android.support.v4.media.RatingCompat);
-    method public void onSetRepeatMode(int);
-    method public void onSetShuffleModeEnabled(boolean);
-    method public void onSkipToNext();
-    method public void onSkipToPrevious();
-    method public void onSkipToQueueItem(long);
-    method public void onStop();
-  }
-
-  public static abstract interface MediaSessionCompat.OnActiveChangeListener {
-    method public abstract void onActiveChanged();
-  }
-
-  public static final class MediaSessionCompat.QueueItem implements android.os.Parcelable {
-    ctor public MediaSessionCompat.QueueItem(android.support.v4.media.MediaDescriptionCompat, long);
-    method public int describeContents();
-    method public static android.support.v4.media.session.MediaSessionCompat.QueueItem fromQueueItem(java.lang.Object);
-    method public static java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem> fromQueueItemList(java.util.List<?>);
-    method public android.support.v4.media.MediaDescriptionCompat getDescription();
-    method public long getQueueId();
-    method public java.lang.Object getQueueItem();
-    method public static deprecated android.support.v4.media.session.MediaSessionCompat.QueueItem obtain(java.lang.Object);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.MediaSessionCompat.QueueItem> CREATOR;
-    field public static final int UNKNOWN_ID = -1; // 0xffffffff
-  }
-
-  public static final class MediaSessionCompat.Token implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.support.v4.media.session.MediaSessionCompat.Token fromToken(java.lang.Object);
-    method public java.lang.Object getToken();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.MediaSessionCompat.Token> CREATOR;
-  }
-
-  public class ParcelableVolumeInfo implements android.os.Parcelable {
-    ctor public ParcelableVolumeInfo(int, int, int, int, int);
-    ctor public ParcelableVolumeInfo(android.os.Parcel);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.ParcelableVolumeInfo> CREATOR;
-    field public int audioStream;
-    field public int controlType;
-    field public int currentVolume;
-    field public int maxVolume;
-    field public int volumeType;
-  }
-
-  public final class PlaybackStateCompat implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.support.v4.media.session.PlaybackStateCompat fromPlaybackState(java.lang.Object);
-    method public long getActions();
-    method public long getActiveQueueItemId();
-    method public long getBufferedPosition();
-    method public java.util.List<android.support.v4.media.session.PlaybackStateCompat.CustomAction> getCustomActions();
-    method public int getErrorCode();
-    method public java.lang.CharSequence getErrorMessage();
-    method public android.os.Bundle getExtras();
-    method public long getLastPositionUpdateTime();
-    method public float getPlaybackSpeed();
-    method public java.lang.Object getPlaybackState();
-    method public long getPosition();
-    method public int getState();
-    method public static int toKeyCode(long);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L
-    field public static final long ACTION_PAUSE = 2L; // 0x2L
-    field public static final long ACTION_PLAY = 4L; // 0x4L
-    field public static final long ACTION_PLAY_FROM_MEDIA_ID = 1024L; // 0x400L
-    field public static final long ACTION_PLAY_FROM_SEARCH = 2048L; // 0x800L
-    field public static final long ACTION_PLAY_FROM_URI = 8192L; // 0x2000L
-    field public static final long ACTION_PLAY_PAUSE = 512L; // 0x200L
-    field public static final long ACTION_PREPARE = 16384L; // 0x4000L
-    field public static final long ACTION_PREPARE_FROM_MEDIA_ID = 32768L; // 0x8000L
-    field public static final long ACTION_PREPARE_FROM_SEARCH = 65536L; // 0x10000L
-    field public static final long ACTION_PREPARE_FROM_URI = 131072L; // 0x20000L
-    field public static final long ACTION_REWIND = 8L; // 0x8L
-    field public static final long ACTION_SEEK_TO = 256L; // 0x100L
-    field public static final long ACTION_SET_CAPTIONING_ENABLED = 1048576L; // 0x100000L
-    field public static final long ACTION_SET_RATING = 128L; // 0x80L
-    field public static final long ACTION_SET_REPEAT_MODE = 262144L; // 0x40000L
-    field public static final long ACTION_SET_SHUFFLE_MODE_ENABLED = 524288L; // 0x80000L
-    field public static final long ACTION_SKIP_TO_NEXT = 32L; // 0x20L
-    field public static final long ACTION_SKIP_TO_PREVIOUS = 16L; // 0x10L
-    field public static final long ACTION_SKIP_TO_QUEUE_ITEM = 4096L; // 0x1000L
-    field public static final long ACTION_STOP = 1L; // 0x1L
-    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.PlaybackStateCompat> CREATOR;
-    field public static final int ERROR_CODE_ACTION_ABORTED = 10; // 0xa
-    field public static final int ERROR_CODE_APP_ERROR = 1; // 0x1
-    field public static final int ERROR_CODE_AUTHENTICATION_EXPIRED = 3; // 0x3
-    field public static final int ERROR_CODE_CONCURRENT_STREAM_LIMIT = 5; // 0x5
-    field public static final int ERROR_CODE_CONTENT_ALREADY_PLAYING = 8; // 0x8
-    field public static final int ERROR_CODE_END_OF_QUEUE = 11; // 0xb
-    field public static final int ERROR_CODE_NOT_AVAILABLE_IN_REGION = 7; // 0x7
-    field public static final int ERROR_CODE_NOT_SUPPORTED = 2; // 0x2
-    field public static final int ERROR_CODE_PARENTAL_CONTROL_RESTRICTED = 6; // 0x6
-    field public static final int ERROR_CODE_PREMIUM_ACCOUNT_REQUIRED = 4; // 0x4
-    field public static final int ERROR_CODE_SKIP_LIMIT_REACHED = 9; // 0x9
-    field public static final int ERROR_CODE_UNKNOWN_ERROR = 0; // 0x0
-    field public static final long PLAYBACK_POSITION_UNKNOWN = -1L; // 0xffffffffffffffffL
-    field public static final int REPEAT_MODE_ALL = 2; // 0x2
-    field public static final int REPEAT_MODE_NONE = 0; // 0x0
-    field public static final int REPEAT_MODE_ONE = 1; // 0x1
-    field public static final int STATE_BUFFERING = 6; // 0x6
-    field public static final int STATE_CONNECTING = 8; // 0x8
-    field public static final int STATE_ERROR = 7; // 0x7
-    field public static final int STATE_FAST_FORWARDING = 4; // 0x4
-    field public static final int STATE_NONE = 0; // 0x0
-    field public static final int STATE_PAUSED = 2; // 0x2
-    field public static final int STATE_PLAYING = 3; // 0x3
-    field public static final int STATE_REWINDING = 5; // 0x5
-    field public static final int STATE_SKIPPING_TO_NEXT = 10; // 0xa
-    field public static final int STATE_SKIPPING_TO_PREVIOUS = 9; // 0x9
-    field public static final int STATE_SKIPPING_TO_QUEUE_ITEM = 11; // 0xb
-    field public static final int STATE_STOPPED = 1; // 0x1
-  }
-
-  public static final class PlaybackStateCompat.Builder {
-    ctor public PlaybackStateCompat.Builder();
-    ctor public PlaybackStateCompat.Builder(android.support.v4.media.session.PlaybackStateCompat);
-    method public android.support.v4.media.session.PlaybackStateCompat.Builder addCustomAction(java.lang.String, java.lang.String, int);
-    method public android.support.v4.media.session.PlaybackStateCompat.Builder addCustomAction(android.support.v4.media.session.PlaybackStateCompat.CustomAction);
-    method public android.support.v4.media.session.PlaybackStateCompat build();
-    method public android.support.v4.media.session.PlaybackStateCompat.Builder setActions(long);
-    method public android.support.v4.media.session.PlaybackStateCompat.Builder setActiveQueueItemId(long);
-    method public android.support.v4.media.session.PlaybackStateCompat.Builder setBufferedPosition(long);
-    method public deprecated android.support.v4.media.session.PlaybackStateCompat.Builder setErrorMessage(java.lang.CharSequence);
-    method public android.support.v4.media.session.PlaybackStateCompat.Builder setErrorMessage(int, java.lang.CharSequence);
-    method public android.support.v4.media.session.PlaybackStateCompat.Builder setExtras(android.os.Bundle);
-    method public android.support.v4.media.session.PlaybackStateCompat.Builder setState(int, long, float);
-    method public android.support.v4.media.session.PlaybackStateCompat.Builder setState(int, long, float, long);
-  }
-
-  public static final class PlaybackStateCompat.CustomAction implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.support.v4.media.session.PlaybackStateCompat.CustomAction fromCustomAction(java.lang.Object);
-    method public java.lang.String getAction();
-    method public java.lang.Object getCustomAction();
-    method public android.os.Bundle getExtras();
-    method public int getIcon();
-    method public java.lang.CharSequence getName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.PlaybackStateCompat.CustomAction> CREATOR;
-  }
-
-  public static final class PlaybackStateCompat.CustomAction.Builder {
-    ctor public PlaybackStateCompat.CustomAction.Builder(java.lang.String, java.lang.CharSequence, int);
-    method public android.support.v4.media.session.PlaybackStateCompat.CustomAction build();
-    method public android.support.v4.media.session.PlaybackStateCompat.CustomAction.Builder setExtras(android.os.Bundle);
-  }
-
-}
-
-package android.support.v4.net {
-
-  public final class ConnectivityManagerCompat {
-    method public static android.net.NetworkInfo getNetworkInfoFromBroadcast(android.net.ConnectivityManager, android.content.Intent);
-    method public static int getRestrictBackgroundStatus(android.net.ConnectivityManager);
-    method public static boolean isActiveNetworkMetered(android.net.ConnectivityManager);
-    field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
-    field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
-    field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
-  }
-
-  public final class TrafficStatsCompat {
-    method public static void clearThreadStatsTag();
-    method public static int getThreadStatsTag();
-    method public static void incrementOperationCount(int);
-    method public static void incrementOperationCount(int, int);
-    method public static void setThreadStatsTag(int);
-    method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method public static void tagSocket(java.net.Socket) throws java.net.SocketException;
-    method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method public static void untagSocket(java.net.Socket) throws java.net.SocketException;
-  }
-
-}
-
-package android.support.v4.os {
-
-  public final class AsyncTaskCompat {
-    method public static <Params, Progress, Result> android.os.AsyncTask<Params, Progress, Result> executeParallel(android.os.AsyncTask<Params, Progress, Result>, Params...);
-  }
-
-  public class BuildCompat {
-    method public static boolean isAtLeastN();
-    method public static boolean isAtLeastNMR1();
-    method public static boolean isAtLeastO();
-  }
-
-  public final class CancellationSignal {
-    ctor public CancellationSignal();
-    method public void cancel();
-    method public java.lang.Object getCancellationSignalObject();
-    method public boolean isCanceled();
-    method public void setOnCancelListener(android.support.v4.os.CancellationSignal.OnCancelListener);
-    method public void throwIfCanceled();
-  }
-
-  public static abstract interface CancellationSignal.OnCancelListener {
-    method public abstract void onCancel();
-  }
-
-  public final class EnvironmentCompat {
-    method public static java.lang.String getStorageState(java.io.File);
-    field public static final java.lang.String MEDIA_UNKNOWN = "unknown";
-  }
-
-  public class OperationCanceledException extends java.lang.RuntimeException {
-    ctor public OperationCanceledException();
-    ctor public OperationCanceledException(java.lang.String);
-  }
-
-  public final class ParcelableCompat {
-    method public static <T> android.os.Parcelable.Creator<T> newCreator(android.support.v4.os.ParcelableCompatCreatorCallbacks<T>);
-  }
-
-  public abstract interface ParcelableCompatCreatorCallbacks<T> {
-    method public abstract T createFromParcel(android.os.Parcel, java.lang.ClassLoader);
-    method public abstract T[] newArray(int);
-  }
-
-  public final class TraceCompat {
-    method public static void beginSection(java.lang.String);
-    method public static void endSection();
-  }
-
-  public class UserManagerCompat {
-    method public static boolean isUserUnlocked(android.content.Context);
-  }
-
-}
-
-package android.support.v4.print {
-
-  public final class PrintHelper {
-    ctor public PrintHelper(android.content.Context);
-    method public int getColorMode();
-    method public int getOrientation();
-    method public int getScaleMode();
-    method public void printBitmap(java.lang.String, android.graphics.Bitmap);
-    method public void printBitmap(java.lang.String, android.graphics.Bitmap, android.support.v4.print.PrintHelper.OnPrintFinishCallback);
-    method public void printBitmap(java.lang.String, android.net.Uri) throws java.io.FileNotFoundException;
-    method public void printBitmap(java.lang.String, android.net.Uri, android.support.v4.print.PrintHelper.OnPrintFinishCallback) throws java.io.FileNotFoundException;
-    method public void setColorMode(int);
-    method public void setOrientation(int);
-    method public void setScaleMode(int);
-    method public static boolean systemSupportsPrint();
-    field public static final int COLOR_MODE_COLOR = 2; // 0x2
-    field public static final int COLOR_MODE_MONOCHROME = 1; // 0x1
-    field public static final int ORIENTATION_LANDSCAPE = 1; // 0x1
-    field public static final int ORIENTATION_PORTRAIT = 2; // 0x2
-    field public static final int SCALE_MODE_FILL = 2; // 0x2
-    field public static final int SCALE_MODE_FIT = 1; // 0x1
-  }
-
-  public static abstract interface PrintHelper.OnPrintFinishCallback {
-    method public abstract void onFinish();
-  }
-
-}
-
-package android.support.v4.provider {
-
-  public abstract class DocumentFile {
-    method public abstract boolean canRead();
-    method public abstract boolean canWrite();
-    method public abstract android.support.v4.provider.DocumentFile createDirectory(java.lang.String);
-    method public abstract android.support.v4.provider.DocumentFile createFile(java.lang.String, java.lang.String);
-    method public abstract boolean delete();
-    method public abstract boolean exists();
-    method public android.support.v4.provider.DocumentFile findFile(java.lang.String);
-    method public static android.support.v4.provider.DocumentFile fromFile(java.io.File);
-    method public static android.support.v4.provider.DocumentFile fromSingleUri(android.content.Context, android.net.Uri);
-    method public static android.support.v4.provider.DocumentFile fromTreeUri(android.content.Context, android.net.Uri);
-    method public abstract java.lang.String getName();
-    method public android.support.v4.provider.DocumentFile getParentFile();
-    method public abstract java.lang.String getType();
-    method public abstract android.net.Uri getUri();
-    method public abstract boolean isDirectory();
-    method public static boolean isDocumentUri(android.content.Context, android.net.Uri);
-    method public abstract boolean isFile();
-    method public abstract boolean isVirtual();
-    method public abstract long lastModified();
-    method public abstract long length();
-    method public abstract android.support.v4.provider.DocumentFile[] listFiles();
-    method public abstract boolean renameTo(java.lang.String);
-  }
-
-}
-
-package android.support.v4.text {
-
-  public final class BidiFormatter {
-    method public static android.support.v4.text.BidiFormatter getInstance();
-    method public static android.support.v4.text.BidiFormatter getInstance(boolean);
-    method public static android.support.v4.text.BidiFormatter getInstance(java.util.Locale);
-    method public boolean getStereoReset();
-    method public boolean isRtl(java.lang.String);
-    method public boolean isRtl(java.lang.CharSequence);
-    method public boolean isRtlContext();
-    method public java.lang.String unicodeWrap(java.lang.String, android.support.v4.text.TextDirectionHeuristicCompat, boolean);
-    method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.support.v4.text.TextDirectionHeuristicCompat, boolean);
-    method public java.lang.String unicodeWrap(java.lang.String, android.support.v4.text.TextDirectionHeuristicCompat);
-    method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.support.v4.text.TextDirectionHeuristicCompat);
-    method public java.lang.String unicodeWrap(java.lang.String, boolean);
-    method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, boolean);
-    method public java.lang.String unicodeWrap(java.lang.String);
-    method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence);
-  }
-
-  public static final class BidiFormatter.Builder {
-    ctor public BidiFormatter.Builder();
-    ctor public BidiFormatter.Builder(boolean);
-    ctor public BidiFormatter.Builder(java.util.Locale);
-    method public android.support.v4.text.BidiFormatter build();
-    method public android.support.v4.text.BidiFormatter.Builder setTextDirectionHeuristic(android.support.v4.text.TextDirectionHeuristicCompat);
-    method public android.support.v4.text.BidiFormatter.Builder stereoReset(boolean);
-  }
-
-  public final class ICUCompat {
-    method public static java.lang.String maximizeAndGetScript(java.util.Locale);
-  }
-
-  public abstract interface TextDirectionHeuristicCompat {
-    method public abstract boolean isRtl(char[], int, int);
-    method public abstract boolean isRtl(java.lang.CharSequence, int, int);
-  }
-
-  public final class TextDirectionHeuristicsCompat {
-    field public static final android.support.v4.text.TextDirectionHeuristicCompat ANYRTL_LTR;
-    field public static final android.support.v4.text.TextDirectionHeuristicCompat FIRSTSTRONG_LTR;
-    field public static final android.support.v4.text.TextDirectionHeuristicCompat FIRSTSTRONG_RTL;
-    field public static final android.support.v4.text.TextDirectionHeuristicCompat LOCALE;
-    field public static final android.support.v4.text.TextDirectionHeuristicCompat LTR;
-    field public static final android.support.v4.text.TextDirectionHeuristicCompat RTL;
-  }
-
-  public final class TextUtilsCompat {
-    method public static int getLayoutDirectionFromLocale(java.util.Locale);
-    method public static java.lang.String htmlEncode(java.lang.String);
-    field public static final java.util.Locale ROOT;
-  }
-
-}
-
-package android.support.v4.text.util {
-
-  public final class LinkifyCompat {
-    method public static final boolean addLinks(android.text.Spannable, int);
-    method public static final boolean addLinks(android.widget.TextView, int);
-    method public static final void addLinks(android.widget.TextView, java.util.regex.Pattern, java.lang.String);
-    method public static final void addLinks(android.widget.TextView, java.util.regex.Pattern, java.lang.String, android.text.util.Linkify.MatchFilter, android.text.util.Linkify.TransformFilter);
-    method public static final void addLinks(android.widget.TextView, java.util.regex.Pattern, java.lang.String, java.lang.String[], android.text.util.Linkify.MatchFilter, android.text.util.Linkify.TransformFilter);
-    method public static final boolean addLinks(android.text.Spannable, java.util.regex.Pattern, java.lang.String);
-    method public static final boolean addLinks(android.text.Spannable, java.util.regex.Pattern, java.lang.String, android.text.util.Linkify.MatchFilter, android.text.util.Linkify.TransformFilter);
-    method public static final boolean addLinks(android.text.Spannable, java.util.regex.Pattern, java.lang.String, java.lang.String[], android.text.util.Linkify.MatchFilter, android.text.util.Linkify.TransformFilter);
-  }
-
-  public static abstract class LinkifyCompat.LinkifyMask implements java.lang.annotation.Annotation {
-  }
-
-}
-
-package android.support.v4.util {
-
-  public class ArrayMap<K, V> extends android.support.v4.util.SimpleArrayMap implements java.util.Map {
-    ctor public ArrayMap();
-    ctor public ArrayMap(int);
-    ctor public ArrayMap(android.support.v4.util.SimpleArrayMap);
-    method public boolean containsAll(java.util.Collection<?>);
-    method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
-    method public java.util.Set<K> keySet();
-    method public void putAll(java.util.Map<? extends K, ? extends V>);
-    method public boolean removeAll(java.util.Collection<?>);
-    method public boolean retainAll(java.util.Collection<?>);
-    method public java.util.Collection<V> values();
-  }
-
-  public final class ArraySet<E> implements java.util.Collection java.util.Set {
-    ctor public ArraySet();
-    ctor public ArraySet(int);
-    ctor public ArraySet(android.support.v4.util.ArraySet<E>);
-    method public boolean add(E);
-    method public void addAll(android.support.v4.util.ArraySet<? extends E>);
-    method public boolean addAll(java.util.Collection<? extends E>);
-    method public void clear();
-    method public boolean contains(java.lang.Object);
-    method public boolean containsAll(java.util.Collection<?>);
-    method public void ensureCapacity(int);
-    method public int indexOf(java.lang.Object);
-    method public boolean isEmpty();
-    method public java.util.Iterator<E> iterator();
-    method public boolean remove(java.lang.Object);
-    method public boolean removeAll(android.support.v4.util.ArraySet<? extends E>);
-    method public boolean removeAll(java.util.Collection<?>);
-    method public E removeAt(int);
-    method public boolean retainAll(java.util.Collection<?>);
-    method public int size();
-    method public java.lang.Object[] toArray();
-    method public <T> T[] toArray(T[]);
-    method public E valueAt(int);
-  }
-
-  public class AtomicFile {
-    ctor public AtomicFile(java.io.File);
-    method public void delete();
-    method public void failWrite(java.io.FileOutputStream);
-    method public void finishWrite(java.io.FileOutputStream);
-    method public java.io.File getBaseFile();
-    method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
-    method public byte[] readFully() throws java.io.IOException;
-    method public java.io.FileOutputStream startWrite() throws java.io.IOException;
-  }
-
-  public final class CircularArray<E> {
-    ctor public CircularArray();
-    ctor public CircularArray(int);
-    method public void addFirst(E);
-    method public void addLast(E);
-    method public void clear();
-    method public E get(int);
-    method public E getFirst();
-    method public E getLast();
-    method public boolean isEmpty();
-    method public E popFirst();
-    method public E popLast();
-    method public void removeFromEnd(int);
-    method public void removeFromStart(int);
-    method public int size();
-  }
-
-  public final class CircularIntArray {
-    ctor public CircularIntArray();
-    ctor public CircularIntArray(int);
-    method public void addFirst(int);
-    method public void addLast(int);
-    method public void clear();
-    method public int get(int);
-    method public int getFirst();
-    method public int getLast();
-    method public boolean isEmpty();
-    method public int popFirst();
-    method public int popLast();
-    method public void removeFromEnd(int);
-    method public void removeFromStart(int);
-    method public int size();
-  }
-
-  public class LongSparseArray<E> {
-    ctor public LongSparseArray();
-    ctor public LongSparseArray(int);
-    method public void append(long, E);
-    method public void clear();
-    method public android.support.v4.util.LongSparseArray<E> clone();
-    method public void delete(long);
-    method public E get(long);
-    method public E get(long, E);
-    method public int indexOfKey(long);
-    method public int indexOfValue(E);
-    method public long keyAt(int);
-    method public void put(long, E);
-    method public void remove(long);
-    method public void removeAt(int);
-    method public void setValueAt(int, E);
-    method public int size();
-    method public E valueAt(int);
-  }
-
-  public class LruCache<K, V> {
-    ctor public LruCache(int);
-    method protected V create(K);
-    method public final synchronized int createCount();
-    method protected void entryRemoved(boolean, K, V, V);
-    method public final void evictAll();
-    method public final synchronized int evictionCount();
-    method public final V get(K);
-    method public final synchronized int hitCount();
-    method public final synchronized int maxSize();
-    method public final synchronized int missCount();
-    method public final V put(K, V);
-    method public final synchronized int putCount();
-    method public final V remove(K);
-    method public void resize(int);
-    method public final synchronized int size();
-    method protected int sizeOf(K, V);
-    method public final synchronized java.util.Map<K, V> snapshot();
-    method public final synchronized java.lang.String toString();
-    method public void trimToSize(int);
-  }
-
-  public class Pair<F, S> {
-    ctor public Pair(F, S);
-    method public static <A, B> android.support.v4.util.Pair<A, B> create(A, B);
-    field public final F first;
-    field public final S second;
-  }
-
-  public final class PatternsCompat {
-    field public static final java.util.regex.Pattern DOMAIN_NAME;
-    field public static final java.util.regex.Pattern EMAIL_ADDRESS;
-    field public static final java.util.regex.Pattern IP_ADDRESS;
-    field public static final java.util.regex.Pattern WEB_URL;
-  }
-
-  public final class Pools {
-  }
-
-  public static abstract interface Pools.Pool<T> {
-    method public abstract T acquire();
-    method public abstract boolean release(T);
-  }
-
-  public static class Pools.SimplePool<T> implements android.support.v4.util.Pools.Pool {
-    ctor public Pools.SimplePool(int);
-    method public T acquire();
-    method public boolean release(T);
-  }
-
-  public static class Pools.SynchronizedPool<T> extends android.support.v4.util.Pools.SimplePool {
-    ctor public Pools.SynchronizedPool(int);
-  }
-
-  public class SimpleArrayMap<K, V> {
-    ctor public SimpleArrayMap();
-    ctor public SimpleArrayMap(int);
-    ctor public SimpleArrayMap(android.support.v4.util.SimpleArrayMap);
-    method public void clear();
-    method public boolean containsKey(java.lang.Object);
-    method public boolean containsValue(java.lang.Object);
-    method public void ensureCapacity(int);
-    method public V get(java.lang.Object);
-    method public int indexOfKey(java.lang.Object);
-    method public boolean isEmpty();
-    method public K keyAt(int);
-    method public V put(K, V);
-    method public void putAll(android.support.v4.util.SimpleArrayMap<? extends K, ? extends V>);
-    method public V remove(java.lang.Object);
-    method public V removeAt(int);
-    method public V setValueAt(int, V);
-    method public int size();
-    method public V valueAt(int);
-  }
-
-  public class SparseArrayCompat<E> {
-    ctor public SparseArrayCompat();
-    ctor public SparseArrayCompat(int);
-    method public void append(int, E);
-    method public void clear();
-    method public android.support.v4.util.SparseArrayCompat<E> clone();
-    method public void delete(int);
-    method public E get(int);
-    method public E get(int, E);
-    method public int indexOfKey(int);
-    method public int indexOfValue(E);
-    method public int keyAt(int);
-    method public void put(int, E);
-    method public void remove(int);
-    method public void removeAt(int);
-    method public void removeAtRange(int, int);
-    method public void setValueAt(int, E);
-    method public int size();
-    method public E valueAt(int);
-  }
-
-}
-
-package android.support.v4.view {
-
-  public abstract class AbsSavedState implements android.os.Parcelable {
-    ctor protected AbsSavedState(android.os.Parcelable);
-    ctor protected AbsSavedState(android.os.Parcel);
-    ctor protected AbsSavedState(android.os.Parcel, java.lang.ClassLoader);
-    method public int describeContents();
-    method public final android.os.Parcelable getSuperState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.view.AbsSavedState> CREATOR;
-    field public static final android.support.v4.view.AbsSavedState EMPTY_STATE;
-  }
-
-  public class AccessibilityDelegateCompat {
-    ctor public AccessibilityDelegateCompat();
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public android.support.v4.view.accessibility.AccessibilityNodeProviderCompat getAccessibilityNodeProvider(android.view.View);
-    method public void onInitializeAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public void onInitializeAccessibilityNodeInfo(android.view.View, android.support.v4.view.accessibility.AccessibilityNodeInfoCompat);
-    method public void onPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup, android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public boolean performAccessibilityAction(android.view.View, int, android.os.Bundle);
-    method public void sendAccessibilityEvent(android.view.View, int);
-    method public void sendAccessibilityEventUnchecked(android.view.View, android.view.accessibility.AccessibilityEvent);
-  }
-
-  public abstract class ActionProvider {
-    ctor public ActionProvider(android.content.Context);
-    method public android.content.Context getContext();
-    method public boolean hasSubMenu();
-    method public boolean isVisible();
-    method public abstract android.view.View onCreateActionView();
-    method public android.view.View onCreateActionView(android.view.MenuItem);
-    method public boolean onPerformDefaultAction();
-    method public void onPrepareSubMenu(android.view.SubMenu);
-    method public boolean overridesItemVisibility();
-    method public void refreshVisibility();
-    method public void setVisibilityListener(android.support.v4.view.ActionProvider.VisibilityListener);
-  }
-
-  public static abstract interface ActionProvider.VisibilityListener {
-    method public abstract void onActionProviderVisibilityChanged(boolean);
-  }
-
-  public final class AsyncLayoutInflater {
-    ctor public AsyncLayoutInflater(android.content.Context);
-    method public void inflate(int, android.view.ViewGroup, android.support.v4.view.AsyncLayoutInflater.OnInflateFinishedListener);
-  }
-
-  public static abstract interface AsyncLayoutInflater.OnInflateFinishedListener {
-    method public abstract void onInflateFinished(android.view.View, int, android.view.ViewGroup);
-  }
-
-  public final class GestureDetectorCompat {
-    ctor public GestureDetectorCompat(android.content.Context, android.view.GestureDetector.OnGestureListener);
-    ctor public GestureDetectorCompat(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler);
-    method public boolean isLongpressEnabled();
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public void setIsLongpressEnabled(boolean);
-    method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener);
-  }
-
-  public final class GravityCompat {
-    method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect, int);
-    method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect, int);
-    method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect, int);
-    method public static int getAbsoluteGravity(int, int);
-    field public static final int END = 8388613; // 0x800005
-    field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
-    field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
-    field public static final int START = 8388611; // 0x800003
-  }
-
-  public final class InputDeviceCompat {
-    field public static final int SOURCE_ANY = -256; // 0xffffff00
-    field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
-    field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
-    field public static final int SOURCE_CLASS_MASK = 255; // 0xff
-    field public static final int SOURCE_CLASS_NONE = 0; // 0x0
-    field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
-    field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
-    field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
-    field public static final int SOURCE_DPAD = 513; // 0x201
-    field public static final int SOURCE_GAMEPAD = 1025; // 0x401
-    field public static final int SOURCE_HDMI = 33554433; // 0x2000001
-    field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
-    field public static final int SOURCE_KEYBOARD = 257; // 0x101
-    field public static final int SOURCE_MOUSE = 8194; // 0x2002
-    field public static final int SOURCE_STYLUS = 16386; // 0x4002
-    field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
-    field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
-    field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
-    field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
-    field public static final int SOURCE_UNKNOWN = 0; // 0x0
-  }
-
-  public final class KeyEventCompat {
-    method public static deprecated boolean dispatch(android.view.KeyEvent, android.view.KeyEvent.Callback, java.lang.Object, java.lang.Object);
-    method public static deprecated java.lang.Object getKeyDispatcherState(android.view.View);
-    method public static boolean hasModifiers(android.view.KeyEvent, int);
-    method public static boolean hasNoModifiers(android.view.KeyEvent);
-    method public static boolean isCtrlPressed(android.view.KeyEvent);
-    method public static deprecated boolean isTracking(android.view.KeyEvent);
-    method public static boolean metaStateHasModifiers(int, int);
-    method public static boolean metaStateHasNoModifiers(int);
-    method public static int normalizeMetaState(int);
-    method public static deprecated void startTracking(android.view.KeyEvent);
-  }
-
-  public final class LayoutInflaterCompat {
-    method public static android.support.v4.view.LayoutInflaterFactory getFactory(android.view.LayoutInflater);
-    method public static void setFactory(android.view.LayoutInflater, android.support.v4.view.LayoutInflaterFactory);
-  }
-
-  public abstract interface LayoutInflaterFactory {
-    method public abstract android.view.View onCreateView(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet);
-  }
-
-  public final class MarginLayoutParamsCompat {
-    method public static int getLayoutDirection(android.view.ViewGroup.MarginLayoutParams);
-    method public static int getMarginEnd(android.view.ViewGroup.MarginLayoutParams);
-    method public static int getMarginStart(android.view.ViewGroup.MarginLayoutParams);
-    method public static boolean isMarginRelative(android.view.ViewGroup.MarginLayoutParams);
-    method public static void resolveLayoutDirection(android.view.ViewGroup.MarginLayoutParams, int);
-    method public static void setLayoutDirection(android.view.ViewGroup.MarginLayoutParams, int);
-    method public static void setMarginEnd(android.view.ViewGroup.MarginLayoutParams, int);
-    method public static void setMarginStart(android.view.ViewGroup.MarginLayoutParams, int);
-  }
-
-  public final class MenuCompat {
-    method public static deprecated void setShowAsAction(android.view.MenuItem, int);
-  }
-
-  public final class MenuItemCompat {
-    method public static boolean collapseActionView(android.view.MenuItem);
-    method public static boolean expandActionView(android.view.MenuItem);
-    method public static android.support.v4.view.ActionProvider getActionProvider(android.view.MenuItem);
-    method public static android.view.View getActionView(android.view.MenuItem);
-    method public static boolean isActionViewExpanded(android.view.MenuItem);
-    method public static android.view.MenuItem setActionProvider(android.view.MenuItem, android.support.v4.view.ActionProvider);
-    method public static android.view.MenuItem setActionView(android.view.MenuItem, android.view.View);
-    method public static android.view.MenuItem setActionView(android.view.MenuItem, int);
-    method public static android.view.MenuItem setOnActionExpandListener(android.view.MenuItem, android.support.v4.view.MenuItemCompat.OnActionExpandListener);
-    method public static void setShowAsAction(android.view.MenuItem, int);
-    field public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
-    field public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
-    field public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
-    field public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
-    field public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
-  }
-
-  public static abstract interface MenuItemCompat.OnActionExpandListener {
-    method public abstract boolean onMenuItemActionCollapse(android.view.MenuItem);
-    method public abstract boolean onMenuItemActionExpand(android.view.MenuItem);
-  }
-
-  public final class MotionEventCompat {
-    method public static deprecated int findPointerIndex(android.view.MotionEvent, int);
-    method public static int getActionIndex(android.view.MotionEvent);
-    method public static int getActionMasked(android.view.MotionEvent);
-    method public static float getAxisValue(android.view.MotionEvent, int);
-    method public static float getAxisValue(android.view.MotionEvent, int, int);
-    method public static int getButtonState(android.view.MotionEvent);
-    method public static deprecated int getPointerCount(android.view.MotionEvent);
-    method public static deprecated int getPointerId(android.view.MotionEvent, int);
-    method public static deprecated int getSource(android.view.MotionEvent);
-    method public static deprecated float getX(android.view.MotionEvent, int);
-    method public static deprecated float getY(android.view.MotionEvent, int);
-    method public static boolean isFromSource(android.view.MotionEvent, int);
-    field public static final int ACTION_HOVER_ENTER = 9; // 0x9
-    field public static final int ACTION_HOVER_EXIT = 10; // 0xa
-    field public static final int ACTION_HOVER_MOVE = 7; // 0x7
-    field public static final int ACTION_MASK = 255; // 0xff
-    field public static final int ACTION_POINTER_DOWN = 5; // 0x5
-    field public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
-    field public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
-    field public static final int ACTION_POINTER_UP = 6; // 0x6
-    field public static final int ACTION_SCROLL = 8; // 0x8
-    field public static final int AXIS_BRAKE = 23; // 0x17
-    field public static final int AXIS_DISTANCE = 24; // 0x18
-    field public static final int AXIS_GAS = 22; // 0x16
-    field public static final int AXIS_GENERIC_1 = 32; // 0x20
-    field public static final int AXIS_GENERIC_10 = 41; // 0x29
-    field public static final int AXIS_GENERIC_11 = 42; // 0x2a
-    field public static final int AXIS_GENERIC_12 = 43; // 0x2b
-    field public static final int AXIS_GENERIC_13 = 44; // 0x2c
-    field public static final int AXIS_GENERIC_14 = 45; // 0x2d
-    field public static final int AXIS_GENERIC_15 = 46; // 0x2e
-    field public static final int AXIS_GENERIC_16 = 47; // 0x2f
-    field public static final int AXIS_GENERIC_2 = 33; // 0x21
-    field public static final int AXIS_GENERIC_3 = 34; // 0x22
-    field public static final int AXIS_GENERIC_4 = 35; // 0x23
-    field public static final int AXIS_GENERIC_5 = 36; // 0x24
-    field public static final int AXIS_GENERIC_6 = 37; // 0x25
-    field public static final int AXIS_GENERIC_7 = 38; // 0x26
-    field public static final int AXIS_GENERIC_8 = 39; // 0x27
-    field public static final int AXIS_GENERIC_9 = 40; // 0x28
-    field public static final int AXIS_HAT_X = 15; // 0xf
-    field public static final int AXIS_HAT_Y = 16; // 0x10
-    field public static final int AXIS_HSCROLL = 10; // 0xa
-    field public static final int AXIS_LTRIGGER = 17; // 0x11
-    field public static final int AXIS_ORIENTATION = 8; // 0x8
-    field public static final int AXIS_PRESSURE = 2; // 0x2
-    field public static final int AXIS_RELATIVE_X = 27; // 0x1b
-    field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
-    field public static final int AXIS_RTRIGGER = 18; // 0x12
-    field public static final int AXIS_RUDDER = 20; // 0x14
-    field public static final int AXIS_RX = 12; // 0xc
-    field public static final int AXIS_RY = 13; // 0xd
-    field public static final int AXIS_RZ = 14; // 0xe
-    field public static final int AXIS_SIZE = 3; // 0x3
-    field public static final int AXIS_THROTTLE = 19; // 0x13
-    field public static final int AXIS_TILT = 25; // 0x19
-    field public static final int AXIS_TOOL_MAJOR = 6; // 0x6
-    field public static final int AXIS_TOOL_MINOR = 7; // 0x7
-    field public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
-    field public static final int AXIS_TOUCH_MINOR = 5; // 0x5
-    field public static final int AXIS_VSCROLL = 9; // 0x9
-    field public static final int AXIS_WHEEL = 21; // 0x15
-    field public static final int AXIS_X = 0; // 0x0
-    field public static final int AXIS_Y = 1; // 0x1
-    field public static final int AXIS_Z = 11; // 0xb
-    field public static final int BUTTON_PRIMARY = 1; // 0x1
-  }
-
-  public abstract interface NestedScrollingChild {
-    method public abstract boolean dispatchNestedFling(float, float, boolean);
-    method public abstract boolean dispatchNestedPreFling(float, float);
-    method public abstract boolean dispatchNestedPreScroll(int, int, int[], int[]);
-    method public abstract boolean dispatchNestedScroll(int, int, int, int, int[]);
-    method public abstract boolean hasNestedScrollingParent();
-    method public abstract boolean isNestedScrollingEnabled();
-    method public abstract void setNestedScrollingEnabled(boolean);
-    method public abstract boolean startNestedScroll(int);
-    method public abstract void stopNestedScroll();
-  }
-
-  public class NestedScrollingChildHelper {
-    ctor public NestedScrollingChildHelper(android.view.View);
-    method public boolean dispatchNestedFling(float, float, boolean);
-    method public boolean dispatchNestedPreFling(float, float);
-    method public boolean dispatchNestedPreScroll(int, int, int[], int[]);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]);
-    method public boolean hasNestedScrollingParent();
-    method public boolean isNestedScrollingEnabled();
-    method public void onDetachedFromWindow();
-    method public void onStopNestedScroll(android.view.View);
-    method public void setNestedScrollingEnabled(boolean);
-    method public boolean startNestedScroll(int);
-    method public void stopNestedScroll();
-  }
-
-  public abstract interface NestedScrollingParent {
-    method public abstract int getNestedScrollAxes();
-    method public abstract boolean onNestedFling(android.view.View, float, float, boolean);
-    method public abstract boolean onNestedPreFling(android.view.View, float, float);
-    method public abstract void onNestedPreScroll(android.view.View, int, int, int[]);
-    method public abstract void onNestedScroll(android.view.View, int, int, int, int);
-    method public abstract void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method public abstract boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    method public abstract void onStopNestedScroll(android.view.View);
-  }
-
-  public class NestedScrollingParentHelper {
-    ctor public NestedScrollingParentHelper(android.view.ViewGroup);
-    method public int getNestedScrollAxes();
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method public void onStopNestedScroll(android.view.View);
-  }
-
-  public abstract interface OnApplyWindowInsetsListener {
-    method public abstract android.support.v4.view.WindowInsetsCompat onApplyWindowInsets(android.view.View, android.support.v4.view.WindowInsetsCompat);
-  }
-
-  public abstract class PagerAdapter {
-    ctor public PagerAdapter();
-    method public void destroyItem(android.view.ViewGroup, int, java.lang.Object);
-    method public deprecated void destroyItem(android.view.View, int, java.lang.Object);
-    method public void finishUpdate(android.view.ViewGroup);
-    method public deprecated void finishUpdate(android.view.View);
-    method public abstract int getCount();
-    method public int getItemPosition(java.lang.Object);
-    method public java.lang.CharSequence getPageTitle(int);
-    method public float getPageWidth(int);
-    method public java.lang.Object instantiateItem(android.view.ViewGroup, int);
-    method public deprecated java.lang.Object instantiateItem(android.view.View, int);
-    method public abstract boolean isViewFromObject(android.view.View, java.lang.Object);
-    method public void notifyDataSetChanged();
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public void restoreState(android.os.Parcelable, java.lang.ClassLoader);
-    method public android.os.Parcelable saveState();
-    method public void setPrimaryItem(android.view.ViewGroup, int, java.lang.Object);
-    method public deprecated void setPrimaryItem(android.view.View, int, java.lang.Object);
-    method public void startUpdate(android.view.ViewGroup);
-    method public deprecated void startUpdate(android.view.View);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-    field public static final int POSITION_NONE = -2; // 0xfffffffe
-    field public static final int POSITION_UNCHANGED = -1; // 0xffffffff
-  }
-
-  public class PagerTabStrip extends android.support.v4.view.PagerTitleStrip {
-    ctor public PagerTabStrip(android.content.Context);
-    ctor public PagerTabStrip(android.content.Context, android.util.AttributeSet);
-    method public boolean getDrawFullUnderline();
-    method public int getTabIndicatorColor();
-    method public void setDrawFullUnderline(boolean);
-    method public void setTabIndicatorColor(int);
-    method public void setTabIndicatorColorResource(int);
-  }
-
-  public class PagerTitleStrip extends android.view.ViewGroup {
-    ctor public PagerTitleStrip(android.content.Context);
-    ctor public PagerTitleStrip(android.content.Context, android.util.AttributeSet);
-    method public int getTextSpacing();
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void setGravity(int);
-    method public void setNonPrimaryAlpha(float);
-    method public void setTextColor(int);
-    method public void setTextSize(int, float);
-    method public void setTextSpacing(int);
-  }
-
-  public final class PointerIconCompat {
-    method public static android.support.v4.view.PointerIconCompat create(android.graphics.Bitmap, float, float);
-    method public static android.support.v4.view.PointerIconCompat getSystemIcon(android.content.Context, int);
-    method public static android.support.v4.view.PointerIconCompat load(android.content.res.Resources, int);
-    field public static final int TYPE_ALIAS = 1010; // 0x3f2
-    field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
-    field public static final int TYPE_ARROW = 1000; // 0x3e8
-    field public static final int TYPE_CELL = 1006; // 0x3ee
-    field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
-    field public static final int TYPE_COPY = 1011; // 0x3f3
-    field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
-    field public static final int TYPE_DEFAULT = 1000; // 0x3e8
-    field public static final int TYPE_GRAB = 1020; // 0x3fc
-    field public static final int TYPE_GRABBING = 1021; // 0x3fd
-    field public static final int TYPE_HAND = 1002; // 0x3ea
-    field public static final int TYPE_HELP = 1003; // 0x3eb
-    field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
-    field public static final int TYPE_NO_DROP = 1012; // 0x3f4
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_TEXT = 1008; // 0x3f0
-    field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
-    field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
-    field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
-    field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
-    field public static final int TYPE_WAIT = 1004; // 0x3ec
-    field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
-    field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
-  }
-
-  public final class ScaleGestureDetectorCompat {
-    method public static boolean isQuickScaleEnabled(java.lang.Object);
-    method public static void setQuickScaleEnabled(java.lang.Object, boolean);
-  }
-
-  public abstract interface ScrollingView {
-    method public abstract int computeHorizontalScrollExtent();
-    method public abstract int computeHorizontalScrollOffset();
-    method public abstract int computeHorizontalScrollRange();
-    method public abstract int computeVerticalScrollExtent();
-    method public abstract int computeVerticalScrollOffset();
-    method public abstract int computeVerticalScrollRange();
-  }
-
-  public abstract interface TintableBackgroundView {
-    method public abstract android.content.res.ColorStateList getSupportBackgroundTintList();
-    method public abstract android.graphics.PorterDuff.Mode getSupportBackgroundTintMode();
-    method public abstract void setSupportBackgroundTintList(android.content.res.ColorStateList);
-    method public abstract void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode);
-  }
-
-  public final class VelocityTrackerCompat {
-    method public static float getXVelocity(android.view.VelocityTracker, int);
-    method public static float getYVelocity(android.view.VelocityTracker, int);
-  }
-
-  public class ViewCompat {
-    ctor protected ViewCompat();
-    method public static android.support.v4.view.ViewPropertyAnimatorCompat animate(android.view.View);
-    method public static boolean canScrollHorizontally(android.view.View, int);
-    method public static boolean canScrollVertically(android.view.View, int);
-    method public static int combineMeasuredStates(int, int);
-    method public static android.support.v4.view.WindowInsetsCompat dispatchApplyWindowInsets(android.view.View, android.support.v4.view.WindowInsetsCompat);
-    method public static void dispatchFinishTemporaryDetach(android.view.View);
-    method public static boolean dispatchNestedFling(android.view.View, float, float, boolean);
-    method public static boolean dispatchNestedPreFling(android.view.View, float, float);
-    method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[], int[]);
-    method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]);
-    method public static void dispatchStartTemporaryDetach(android.view.View);
-    method public static int getAccessibilityLiveRegion(android.view.View);
-    method public static android.support.v4.view.accessibility.AccessibilityNodeProviderCompat getAccessibilityNodeProvider(android.view.View);
-    method public static float getAlpha(android.view.View);
-    method public static android.content.res.ColorStateList getBackgroundTintList(android.view.View);
-    method public static android.graphics.PorterDuff.Mode getBackgroundTintMode(android.view.View);
-    method public static android.graphics.Rect getClipBounds(android.view.View);
-    method public static android.view.Display getDisplay(android.view.View);
-    method public static float getElevation(android.view.View);
-    method public static boolean getFitsSystemWindows(android.view.View);
-    method public static int getImportantForAccessibility(android.view.View);
-    method public static int getLabelFor(android.view.View);
-    method public static int getLayerType(android.view.View);
-    method public static int getLayoutDirection(android.view.View);
-    method public static android.graphics.Matrix getMatrix(android.view.View);
-    method public static int getMeasuredHeightAndState(android.view.View);
-    method public static int getMeasuredState(android.view.View);
-    method public static int getMeasuredWidthAndState(android.view.View);
-    method public static int getMinimumHeight(android.view.View);
-    method public static int getMinimumWidth(android.view.View);
-    method public static deprecated int getOverScrollMode(android.view.View);
-    method public static int getPaddingEnd(android.view.View);
-    method public static int getPaddingStart(android.view.View);
-    method public static android.view.ViewParent getParentForAccessibility(android.view.View);
-    method public static float getPivotX(android.view.View);
-    method public static float getPivotY(android.view.View);
-    method public static float getRotation(android.view.View);
-    method public static float getRotationX(android.view.View);
-    method public static float getRotationY(android.view.View);
-    method public static float getScaleX(android.view.View);
-    method public static float getScaleY(android.view.View);
-    method public static int getScrollIndicators(android.view.View);
-    method public static java.lang.String getTransitionName(android.view.View);
-    method public static float getTranslationX(android.view.View);
-    method public static float getTranslationY(android.view.View);
-    method public static float getTranslationZ(android.view.View);
-    method public static int getWindowSystemUiVisibility(android.view.View);
-    method public static float getX(android.view.View);
-    method public static float getY(android.view.View);
-    method public static float getZ(android.view.View);
-    method public static boolean hasAccessibilityDelegate(android.view.View);
-    method public static boolean hasNestedScrollingParent(android.view.View);
-    method public static boolean hasOnClickListeners(android.view.View);
-    method public static boolean hasOverlappingRendering(android.view.View);
-    method public static boolean hasTransientState(android.view.View);
-    method public static boolean isAttachedToWindow(android.view.View);
-    method public static boolean isImportantForAccessibility(android.view.View);
-    method public static boolean isInLayout(android.view.View);
-    method public static boolean isLaidOut(android.view.View);
-    method public static boolean isLayoutDirectionResolved(android.view.View);
-    method public static boolean isNestedScrollingEnabled(android.view.View);
-    method public static deprecated boolean isOpaque(android.view.View);
-    method public static boolean isPaddingRelative(android.view.View);
-    method public static void jumpDrawablesToCurrentState(android.view.View);
-    method public static void offsetLeftAndRight(android.view.View, int);
-    method public static void offsetTopAndBottom(android.view.View, int);
-    method public static android.support.v4.view.WindowInsetsCompat onApplyWindowInsets(android.view.View, android.support.v4.view.WindowInsetsCompat);
-    method public static void onInitializeAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public static void onInitializeAccessibilityNodeInfo(android.view.View, android.support.v4.view.accessibility.AccessibilityNodeInfoCompat);
-    method public static void onPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle);
-    method public static void postInvalidateOnAnimation(android.view.View);
-    method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
-    method public static void postOnAnimation(android.view.View, java.lang.Runnable);
-    method public static void postOnAnimationDelayed(android.view.View, java.lang.Runnable, long);
-    method public static void requestApplyInsets(android.view.View);
-    method public static int resolveSizeAndState(int, int, int);
-    method public static void setAccessibilityDelegate(android.view.View, android.support.v4.view.AccessibilityDelegateCompat);
-    method public static void setAccessibilityLiveRegion(android.view.View, int);
-    method public static void setActivated(android.view.View, boolean);
-    method public static void setAlpha(android.view.View, float);
-    method public static void setBackground(android.view.View, android.graphics.drawable.Drawable);
-    method public static void setBackgroundTintList(android.view.View, android.content.res.ColorStateList);
-    method public static void setBackgroundTintMode(android.view.View, android.graphics.PorterDuff.Mode);
-    method public static void setChildrenDrawingOrderEnabled(android.view.ViewGroup, boolean);
-    method public static void setClipBounds(android.view.View, android.graphics.Rect);
-    method public static void setElevation(android.view.View, float);
-    method public static void setFitsSystemWindows(android.view.View, boolean);
-    method public static void setHasTransientState(android.view.View, boolean);
-    method public static void setImportantForAccessibility(android.view.View, int);
-    method public static void setLabelFor(android.view.View, int);
-    method public static void setLayerPaint(android.view.View, android.graphics.Paint);
-    method public static void setLayerType(android.view.View, int, android.graphics.Paint);
-    method public static void setLayoutDirection(android.view.View, int);
-    method public static void setNestedScrollingEnabled(android.view.View, boolean);
-    method public static void setOnApplyWindowInsetsListener(android.view.View, android.support.v4.view.OnApplyWindowInsetsListener);
-    method public static deprecated void setOverScrollMode(android.view.View, int);
-    method public static void setPaddingRelative(android.view.View, int, int, int, int);
-    method public static void setPivotX(android.view.View, float);
-    method public static void setPivotY(android.view.View, float);
-    method public static void setPointerIcon(android.view.View, android.support.v4.view.PointerIconCompat);
-    method public static void setRotation(android.view.View, float);
-    method public static void setRotationX(android.view.View, float);
-    method public static void setRotationY(android.view.View, float);
-    method public static void setSaveFromParentEnabled(android.view.View, boolean);
-    method public static void setScaleX(android.view.View, float);
-    method public static void setScaleY(android.view.View, float);
-    method public static void setScrollIndicators(android.view.View, int);
-    method public static void setScrollIndicators(android.view.View, int, int);
-    method public static void setTransitionName(android.view.View, java.lang.String);
-    method public static void setTranslationX(android.view.View, float);
-    method public static void setTranslationY(android.view.View, float);
-    method public static void setTranslationZ(android.view.View, float);
-    method public static void setX(android.view.View, float);
-    method public static void setY(android.view.View, float);
-    method public static void setZ(android.view.View, float);
-    method public static boolean startNestedScroll(android.view.View, int);
-    method public static void stopNestedScroll(android.view.View);
-    field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
-    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
-    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
-    field public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
-    field public static final int LAYER_TYPE_NONE = 0; // 0x0
-    field public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
-    field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
-    field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
-    field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
-    field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
-    field public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
-    field public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
-    field public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
-    field public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
-    field public static final deprecated int OVER_SCROLL_ALWAYS = 0; // 0x0
-    field public static final deprecated int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
-    field public static final deprecated int OVER_SCROLL_NEVER = 2; // 0x2
-    field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
-    field public static final int SCROLL_AXIS_NONE = 0; // 0x0
-    field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_END = 32; // 0x20
-    field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
-    field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
-    field public static final int SCROLL_INDICATOR_START = 16; // 0x10
-    field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
-  }
-
-  public final class ViewConfigurationCompat {
-    method public static deprecated int getScaledPagingTouchSlop(android.view.ViewConfiguration);
-    method public static boolean hasPermanentMenuKey(android.view.ViewConfiguration);
-  }
-
-  public final class ViewGroupCompat {
-    method public static int getLayoutMode(android.view.ViewGroup);
-    method public static int getNestedScrollAxes(android.view.ViewGroup);
-    method public static boolean isTransitionGroup(android.view.ViewGroup);
-    method public static boolean onRequestSendAccessibilityEvent(android.view.ViewGroup, android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public static void setLayoutMode(android.view.ViewGroup, int);
-    method public static void setMotionEventSplittingEnabled(android.view.ViewGroup, boolean);
-    method public static void setTransitionGroup(android.view.ViewGroup, boolean);
-    field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
-    field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
-  }
-
-  public class ViewPager extends android.view.ViewGroup {
-    ctor public ViewPager(android.content.Context);
-    ctor public ViewPager(android.content.Context, android.util.AttributeSet);
-    method public void addOnAdapterChangeListener(android.support.v4.view.ViewPager.OnAdapterChangeListener);
-    method public void addOnPageChangeListener(android.support.v4.view.ViewPager.OnPageChangeListener);
-    method public boolean arrowScroll(int);
-    method public boolean beginFakeDrag();
-    method protected boolean canScroll(android.view.View, boolean, int, int, int);
-    method public void clearOnPageChangeListeners();
-    method public void endFakeDrag();
-    method public boolean executeKeyEvent(android.view.KeyEvent);
-    method public void fakeDragBy(float);
-    method public android.support.v4.view.PagerAdapter getAdapter();
-    method public int getCurrentItem();
-    method public int getOffscreenPageLimit();
-    method public int getPageMargin();
-    method public boolean isFakeDragging();
-    method protected void onLayout(boolean, int, int, int, int);
-    method protected void onPageScrolled(int, float, int);
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public void removeOnAdapterChangeListener(android.support.v4.view.ViewPager.OnAdapterChangeListener);
-    method public void removeOnPageChangeListener(android.support.v4.view.ViewPager.OnPageChangeListener);
-    method public void setAdapter(android.support.v4.view.PagerAdapter);
-    method public void setCurrentItem(int);
-    method public void setCurrentItem(int, boolean);
-    method public void setOffscreenPageLimit(int);
-    method public deprecated void setOnPageChangeListener(android.support.v4.view.ViewPager.OnPageChangeListener);
-    method public void setPageMargin(int);
-    method public void setPageMarginDrawable(android.graphics.drawable.Drawable);
-    method public void setPageMarginDrawable(int);
-    method public void setPageTransformer(boolean, android.support.v4.view.ViewPager.PageTransformer);
-    method public void setPageTransformer(boolean, android.support.v4.view.ViewPager.PageTransformer, int);
-    field public static final int SCROLL_STATE_DRAGGING = 1; // 0x1
-    field public static final int SCROLL_STATE_IDLE = 0; // 0x0
-    field public static final int SCROLL_STATE_SETTLING = 2; // 0x2
-  }
-
-  public static abstract class ViewPager.DecorView implements java.lang.annotation.Annotation {
-  }
-
-  public static class ViewPager.LayoutParams extends android.view.ViewGroup.LayoutParams {
-    ctor public ViewPager.LayoutParams();
-    ctor public ViewPager.LayoutParams(android.content.Context, android.util.AttributeSet);
-    field public int gravity;
-    field public boolean isDecor;
-  }
-
-  public static abstract interface ViewPager.OnAdapterChangeListener {
-    method public abstract void onAdapterChanged(android.support.v4.view.ViewPager, android.support.v4.view.PagerAdapter, android.support.v4.view.PagerAdapter);
-  }
-
-  public static abstract interface ViewPager.OnPageChangeListener {
-    method public abstract void onPageScrollStateChanged(int);
-    method public abstract void onPageScrolled(int, float, int);
-    method public abstract void onPageSelected(int);
-  }
-
-  public static abstract interface ViewPager.PageTransformer {
-    method public abstract void transformPage(android.view.View, float);
-  }
-
-  public static class ViewPager.SavedState extends android.support.v4.view.AbsSavedState {
-    ctor public ViewPager.SavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<android.support.v4.view.ViewPager.SavedState> CREATOR;
-  }
-
-  public static class ViewPager.SimpleOnPageChangeListener implements android.support.v4.view.ViewPager.OnPageChangeListener {
-    ctor public ViewPager.SimpleOnPageChangeListener();
-    method public void onPageScrollStateChanged(int);
-    method public void onPageScrolled(int, float, int);
-    method public void onPageSelected(int);
-  }
-
-  public final class ViewParentCompat {
-    method public static void notifySubtreeAccessibilityStateChanged(android.view.ViewParent, android.view.View, android.view.View, int);
-    method public static boolean onNestedFling(android.view.ViewParent, android.view.View, float, float, boolean);
-    method public static boolean onNestedPreFling(android.view.ViewParent, android.view.View, float, float);
-    method public static void onNestedPreScroll(android.view.ViewParent, android.view.View, int, int, int[]);
-    method public static void onNestedScroll(android.view.ViewParent, android.view.View, int, int, int, int);
-    method public static void onNestedScrollAccepted(android.view.ViewParent, android.view.View, android.view.View, int);
-    method public static boolean onStartNestedScroll(android.view.ViewParent, android.view.View, android.view.View, int);
-    method public static void onStopNestedScroll(android.view.ViewParent, android.view.View);
-    method public static boolean requestSendAccessibilityEvent(android.view.ViewParent, android.view.View, android.view.accessibility.AccessibilityEvent);
-  }
-
-  public final class ViewPropertyAnimatorCompat {
-    method public android.support.v4.view.ViewPropertyAnimatorCompat alpha(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat alphaBy(float);
-    method public void cancel();
-    method public long getDuration();
-    method public android.view.animation.Interpolator getInterpolator();
-    method public long getStartDelay();
-    method public android.support.v4.view.ViewPropertyAnimatorCompat rotation(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat rotationBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat rotationX(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat rotationXBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat rotationY(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat rotationYBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat scaleX(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat scaleXBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat scaleY(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat scaleYBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat setDuration(long);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat setInterpolator(android.view.animation.Interpolator);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat setListener(android.support.v4.view.ViewPropertyAnimatorListener);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat setStartDelay(long);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat setUpdateListener(android.support.v4.view.ViewPropertyAnimatorUpdateListener);
-    method public void start();
-    method public android.support.v4.view.ViewPropertyAnimatorCompat translationX(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat translationXBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat translationY(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat translationYBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat translationZ(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat translationZBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat withEndAction(java.lang.Runnable);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat withLayer();
-    method public android.support.v4.view.ViewPropertyAnimatorCompat withStartAction(java.lang.Runnable);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat x(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat xBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat y(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat yBy(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat z(float);
-    method public android.support.v4.view.ViewPropertyAnimatorCompat zBy(float);
-  }
-
-  public abstract interface ViewPropertyAnimatorListener {
-    method public abstract void onAnimationCancel(android.view.View);
-    method public abstract void onAnimationEnd(android.view.View);
-    method public abstract void onAnimationStart(android.view.View);
-  }
-
-  public class ViewPropertyAnimatorListenerAdapter implements android.support.v4.view.ViewPropertyAnimatorListener {
-    ctor public ViewPropertyAnimatorListenerAdapter();
-    method public void onAnimationCancel(android.view.View);
-    method public void onAnimationEnd(android.view.View);
-    method public void onAnimationStart(android.view.View);
-  }
-
-  public abstract interface ViewPropertyAnimatorUpdateListener {
-    method public abstract void onAnimationUpdate(android.view.View);
-  }
-
-  public final class WindowCompat {
-    field public static final int FEATURE_ACTION_BAR = 8; // 0x8
-    field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-  }
-
-  public class WindowInsetsCompat {
-    ctor public WindowInsetsCompat(android.support.v4.view.WindowInsetsCompat);
-    method public android.support.v4.view.WindowInsetsCompat consumeStableInsets();
-    method public android.support.v4.view.WindowInsetsCompat consumeSystemWindowInsets();
-    method public int getStableInsetBottom();
-    method public int getStableInsetLeft();
-    method public int getStableInsetRight();
-    method public int getStableInsetTop();
-    method public int getSystemWindowInsetBottom();
-    method public int getSystemWindowInsetLeft();
-    method public int getSystemWindowInsetRight();
-    method public int getSystemWindowInsetTop();
-    method public boolean hasInsets();
-    method public boolean hasStableInsets();
-    method public boolean hasSystemWindowInsets();
-    method public boolean isConsumed();
-    method public boolean isRound();
-    method public android.support.v4.view.WindowInsetsCompat replaceSystemWindowInsets(int, int, int, int);
-    method public android.support.v4.view.WindowInsetsCompat replaceSystemWindowInsets(android.graphics.Rect);
-  }
-
-}
-
-package android.support.v4.view.accessibility {
-
-  public final class AccessibilityEventCompat {
-    method public static void appendRecord(android.view.accessibility.AccessibilityEvent, android.support.v4.view.accessibility.AccessibilityRecordCompat);
-    method public static android.support.v4.view.accessibility.AccessibilityRecordCompat asRecord(android.view.accessibility.AccessibilityEvent);
-    method public int getAction(android.view.accessibility.AccessibilityEvent);
-    method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent);
-    method public int getMovementGranularity(android.view.accessibility.AccessibilityEvent);
-    method public static android.support.v4.view.accessibility.AccessibilityRecordCompat getRecord(android.view.accessibility.AccessibilityEvent, int);
-    method public static int getRecordCount(android.view.accessibility.AccessibilityEvent);
-    method public void setAction(android.view.accessibility.AccessibilityEvent, int);
-    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent, int);
-    method public void setMovementGranularity(android.view.accessibility.AccessibilityEvent, int);
-    field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
-    field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
-    field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
-    field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
-    field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
-    field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
-    field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
-    field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
-    field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
-    field public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
-    field public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
-    field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
-    field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
-    field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
-    field public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
-    field public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
-    field public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
-    field public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
-    field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
-    field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
-    field public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
-  }
-
-  public final class AccessibilityManagerCompat {
-    method public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager, android.support.v4.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener);
-    method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager, android.support.v4.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener);
-    method public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getEnabledAccessibilityServiceList(android.view.accessibility.AccessibilityManager, int);
-    method public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getInstalledAccessibilityServiceList(android.view.accessibility.AccessibilityManager);
-    method public static boolean isTouchExplorationEnabled(android.view.accessibility.AccessibilityManager);
-    method public static boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager, android.support.v4.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener);
-    method public static boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager, android.support.v4.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener);
-  }
-
-  public static abstract interface AccessibilityManagerCompat.AccessibilityStateChangeListener {
-    method public abstract void onAccessibilityStateChanged(boolean);
-  }
-
-  public static abstract deprecated class AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat implements android.support.v4.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener {
-    ctor public AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat();
-  }
-
-  public static abstract interface AccessibilityManagerCompat.TouchExplorationStateChangeListener {
-    method public abstract void onTouchExplorationStateChanged(boolean);
-  }
-
-  public class AccessibilityNodeInfoCompat {
-    ctor public AccessibilityNodeInfoCompat(java.lang.Object);
-    method public void addAction(int);
-    method public void addAction(android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat);
-    method public void addChild(android.view.View);
-    method public void addChild(android.view.View, int);
-    method public boolean canOpenPopup();
-    method public java.util.List<android.support.v4.view.accessibility.AccessibilityNodeInfoCompat> findAccessibilityNodeInfosByText(java.lang.String);
-    method public java.util.List<android.support.v4.view.accessibility.AccessibilityNodeInfoCompat> findAccessibilityNodeInfosByViewId(java.lang.String);
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat findFocus(int);
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat focusSearch(int);
-    method public java.util.List<android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat> getActionList();
-    method public int getActions();
-    method public void getBoundsInParent(android.graphics.Rect);
-    method public void getBoundsInScreen(android.graphics.Rect);
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat getChild(int);
-    method public int getChildCount();
-    method public java.lang.CharSequence getClassName();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat getCollectionInfo();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat getCollectionItemInfo();
-    method public java.lang.CharSequence getContentDescription();
-    method public int getDrawingOrder();
-    method public java.lang.CharSequence getError();
-    method public android.os.Bundle getExtras();
-    method public java.lang.Object getInfo();
-    method public int getInputType();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat getLabelFor();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat getLabeledBy();
-    method public int getLiveRegion();
-    method public int getMaxTextLength();
-    method public int getMovementGranularities();
-    method public java.lang.CharSequence getPackageName();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat getParent();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat getRangeInfo();
-    method public java.lang.CharSequence getRoleDescription();
-    method public java.lang.CharSequence getText();
-    method public int getTextSelectionEnd();
-    method public int getTextSelectionStart();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat getTraversalAfter();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat getTraversalBefore();
-    method public java.lang.String getViewIdResourceName();
-    method public android.support.v4.view.accessibility.AccessibilityWindowInfoCompat getWindow();
-    method public int getWindowId();
-    method public boolean isAccessibilityFocused();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isClickable();
-    method public boolean isContentInvalid();
-    method public boolean isContextClickable();
-    method public boolean isDismissable();
-    method public boolean isEditable();
-    method public boolean isEnabled();
-    method public boolean isFocusable();
-    method public boolean isFocused();
-    method public boolean isImportantForAccessibility();
-    method public boolean isLongClickable();
-    method public boolean isMultiLine();
-    method public boolean isPassword();
-    method public boolean isScrollable();
-    method public boolean isSelected();
-    method public boolean isVisibleToUser();
-    method public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat obtain(android.view.View);
-    method public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat obtain(android.view.View, int);
-    method public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat obtain();
-    method public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat obtain(android.support.v4.view.accessibility.AccessibilityNodeInfoCompat);
-    method public boolean performAction(int);
-    method public boolean performAction(int, android.os.Bundle);
-    method public void recycle();
-    method public boolean refresh();
-    method public boolean removeAction(android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat);
-    method public boolean removeChild(android.view.View);
-    method public boolean removeChild(android.view.View, int);
-    method public void setAccessibilityFocused(boolean);
-    method public void setBoundsInParent(android.graphics.Rect);
-    method public void setBoundsInScreen(android.graphics.Rect);
-    method public void setCanOpenPopup(boolean);
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setClassName(java.lang.CharSequence);
-    method public void setClickable(boolean);
-    method public void setCollectionInfo(java.lang.Object);
-    method public void setCollectionItemInfo(java.lang.Object);
-    method public void setContentDescription(java.lang.CharSequence);
-    method public void setContentInvalid(boolean);
-    method public void setContextClickable(boolean);
-    method public void setDismissable(boolean);
-    method public void setDrawingOrder(int);
-    method public void setEditable(boolean);
-    method public void setEnabled(boolean);
-    method public void setError(java.lang.CharSequence);
-    method public void setFocusable(boolean);
-    method public void setFocused(boolean);
-    method public void setImportantForAccessibility(boolean);
-    method public void setInputType(int);
-    method public void setLabelFor(android.view.View);
-    method public void setLabelFor(android.view.View, int);
-    method public void setLabeledBy(android.view.View);
-    method public void setLabeledBy(android.view.View, int);
-    method public void setLiveRegion(int);
-    method public void setLongClickable(boolean);
-    method public void setMaxTextLength(int);
-    method public void setMovementGranularities(int);
-    method public void setMultiLine(boolean);
-    method public void setPackageName(java.lang.CharSequence);
-    method public void setParent(android.view.View);
-    method public void setParent(android.view.View, int);
-    method public void setPassword(boolean);
-    method public void setRangeInfo(android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat);
-    method public void setRoleDescription(java.lang.CharSequence);
-    method public void setScrollable(boolean);
-    method public void setSelected(boolean);
-    method public void setSource(android.view.View);
-    method public void setSource(android.view.View, int);
-    method public void setText(java.lang.CharSequence);
-    method public void setTextSelection(int, int);
-    method public void setTraversalAfter(android.view.View);
-    method public void setTraversalAfter(android.view.View, int);
-    method public void setTraversalBefore(android.view.View);
-    method public void setTraversalBefore(android.view.View, int);
-    method public void setViewIdResourceName(java.lang.String);
-    method public void setVisibleToUser(boolean);
-    field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
-    field public static final java.lang.String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
-    field public static final java.lang.String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
-    field public static final java.lang.String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
-    field public static final java.lang.String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
-    field public static final java.lang.String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
-    field public static final java.lang.String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
-    field public static final java.lang.String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
-    field public static final java.lang.String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
-    field public static final java.lang.String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
-    field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
-    field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
-    field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
-    field public static final int ACTION_CLICK = 16; // 0x10
-    field public static final int ACTION_COLLAPSE = 524288; // 0x80000
-    field public static final int ACTION_COPY = 16384; // 0x4000
-    field public static final int ACTION_CUT = 65536; // 0x10000
-    field public static final int ACTION_DISMISS = 1048576; // 0x100000
-    field public static final int ACTION_EXPAND = 262144; // 0x40000
-    field public static final int ACTION_FOCUS = 1; // 0x1
-    field public static final int ACTION_LONG_CLICK = 32; // 0x20
-    field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
-    field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
-    field public static final int ACTION_PASTE = 32768; // 0x8000
-    field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
-    field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
-    field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
-    field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
-    field public static final int ACTION_SELECT = 4; // 0x4
-    field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
-    field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
-    field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
-    field public static final int FOCUS_INPUT = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
-    field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
-    field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
-    field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
-  }
-
-  public static class AccessibilityNodeInfoCompat.AccessibilityActionCompat {
-    ctor public AccessibilityNodeInfoCompat.AccessibilityActionCompat(int, java.lang.CharSequence);
-    method public int getId();
-    method public java.lang.CharSequence getLabel();
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_ACCESSIBILITY_FOCUS;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_CLEAR_ACCESSIBILITY_FOCUS;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_CLEAR_FOCUS;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_CLEAR_SELECTION;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_CLICK;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_COLLAPSE;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_CONTEXT_CLICK;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_COPY;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_CUT;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_DISMISS;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_EXPAND;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_FOCUS;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_LONG_CLICK;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_NEXT_HTML_ELEMENT;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PASTE;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PREVIOUS_HTML_ELEMENT;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SCROLL_BACKWARD;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SCROLL_DOWN;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SCROLL_FORWARD;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SCROLL_LEFT;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SCROLL_RIGHT;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SCROLL_TO_POSITION;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SCROLL_UP;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SELECT;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SET_PROGRESS;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SET_SELECTION;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SET_TEXT;
-    field public static final android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_SHOW_ON_SCREEN;
-  }
-
-  public static class AccessibilityNodeInfoCompat.CollectionInfoCompat {
-    method public int getColumnCount();
-    method public int getRowCount();
-    method public int getSelectionMode();
-    method public boolean isHierarchical();
-    method public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat obtain(int, int, boolean, int);
-    method public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat obtain(int, int, boolean);
-    field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
-    field public static final int SELECTION_MODE_NONE = 0; // 0x0
-    field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
-  }
-
-  public static class AccessibilityNodeInfoCompat.CollectionItemInfoCompat {
-    method public int getColumnIndex();
-    method public int getColumnSpan();
-    method public int getRowIndex();
-    method public int getRowSpan();
-    method public boolean isHeading();
-    method public boolean isSelected();
-    method public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat obtain(int, int, int, int, boolean, boolean);
-    method public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat obtain(int, int, int, int, boolean);
-  }
-
-  public static class AccessibilityNodeInfoCompat.RangeInfoCompat {
-    method public float getCurrent();
-    method public float getMax();
-    method public float getMin();
-    method public int getType();
-    method public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat obtain(int, float, float, float);
-    field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
-    field public static final int RANGE_TYPE_INT = 0; // 0x0
-    field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
-  }
-
-  public class AccessibilityNodeProviderCompat {
-    ctor public AccessibilityNodeProviderCompat();
-    ctor public AccessibilityNodeProviderCompat(java.lang.Object);
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat createAccessibilityNodeInfo(int);
-    method public java.util.List<android.support.v4.view.accessibility.AccessibilityNodeInfoCompat> findAccessibilityNodeInfosByText(java.lang.String, int);
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat findFocus(int);
-    method public java.lang.Object getProvider();
-    method public boolean performAction(int, int, android.os.Bundle);
-    field public static final int HOST_VIEW_ID = -1; // 0xffffffff
-  }
-
-  public class AccessibilityRecordCompat {
-    ctor public deprecated AccessibilityRecordCompat(java.lang.Object);
-    method public int getAddedCount();
-    method public java.lang.CharSequence getBeforeText();
-    method public java.lang.CharSequence getClassName();
-    method public java.lang.CharSequence getContentDescription();
-    method public int getCurrentItemIndex();
-    method public int getFromIndex();
-    method public deprecated java.lang.Object getImpl();
-    method public int getItemCount();
-    method public int getMaxScrollX();
-    method public int getMaxScrollY();
-    method public android.os.Parcelable getParcelableData();
-    method public int getRemovedCount();
-    method public int getScrollX();
-    method public int getScrollY();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat getSource();
-    method public java.util.List<java.lang.CharSequence> getText();
-    method public int getToIndex();
-    method public int getWindowId();
-    method public boolean isChecked();
-    method public boolean isEnabled();
-    method public boolean isFullScreen();
-    method public boolean isPassword();
-    method public boolean isScrollable();
-    method public static android.support.v4.view.accessibility.AccessibilityRecordCompat obtain(android.support.v4.view.accessibility.AccessibilityRecordCompat);
-    method public static android.support.v4.view.accessibility.AccessibilityRecordCompat obtain();
-    method public void recycle();
-    method public void setAddedCount(int);
-    method public void setBeforeText(java.lang.CharSequence);
-    method public void setChecked(boolean);
-    method public void setClassName(java.lang.CharSequence);
-    method public void setContentDescription(java.lang.CharSequence);
-    method public void setCurrentItemIndex(int);
-    method public void setEnabled(boolean);
-    method public void setFromIndex(int);
-    method public void setFullScreen(boolean);
-    method public void setItemCount(int);
-    method public void setMaxScrollX(int);
-    method public void setMaxScrollY(int);
-    method public void setParcelableData(android.os.Parcelable);
-    method public void setPassword(boolean);
-    method public void setRemovedCount(int);
-    method public void setScrollX(int);
-    method public void setScrollY(int);
-    method public void setScrollable(boolean);
-    method public void setSource(android.view.View);
-    method public void setSource(android.view.View, int);
-    method public void setToIndex(int);
-  }
-
-  public class AccessibilityWindowInfoCompat {
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat getAnchor();
-    method public void getBoundsInScreen(android.graphics.Rect);
-    method public android.support.v4.view.accessibility.AccessibilityWindowInfoCompat getChild(int);
-    method public int getChildCount();
-    method public int getId();
-    method public int getLayer();
-    method public android.support.v4.view.accessibility.AccessibilityWindowInfoCompat getParent();
-    method public android.support.v4.view.accessibility.AccessibilityNodeInfoCompat getRoot();
-    method public java.lang.CharSequence getTitle();
-    method public int getType();
-    method public boolean isAccessibilityFocused();
-    method public boolean isActive();
-    method public boolean isFocused();
-    method public static android.support.v4.view.accessibility.AccessibilityWindowInfoCompat obtain();
-    method public static android.support.v4.view.accessibility.AccessibilityWindowInfoCompat obtain(android.support.v4.view.accessibility.AccessibilityWindowInfoCompat);
-    method public void recycle();
-    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
-    field public static final int TYPE_APPLICATION = 1; // 0x1
-    field public static final int TYPE_INPUT_METHOD = 2; // 0x2
-    field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
-    field public static final int TYPE_SYSTEM = 3; // 0x3
-  }
-
-}
-
-package android.support.v4.view.animation {
-
-  public class FastOutLinearInInterpolator extends android.support.v4.view.animation.LookupTableInterpolator {
-    ctor public FastOutLinearInInterpolator();
-  }
-
-  public class FastOutSlowInInterpolator extends android.support.v4.view.animation.LookupTableInterpolator {
-    ctor public FastOutSlowInInterpolator();
-  }
-
-  public class LinearOutSlowInInterpolator extends android.support.v4.view.animation.LookupTableInterpolator {
-    ctor public LinearOutSlowInInterpolator();
-  }
-
-   abstract class LookupTableInterpolator implements android.view.animation.Interpolator {
-    ctor public LookupTableInterpolator(float[]);
-    method public float getInterpolation(float);
-  }
-
-  public final class PathInterpolatorCompat {
-    method public static android.view.animation.Interpolator create(android.graphics.Path);
-    method public static android.view.animation.Interpolator create(float, float);
-    method public static android.view.animation.Interpolator create(float, float, float, float);
-  }
-
-}
-
-package android.support.v4.widget {
-
-  public abstract class AutoScrollHelper implements android.view.View.OnTouchListener {
-    ctor public AutoScrollHelper(android.view.View);
-    method public abstract boolean canTargetScrollHorizontally(int);
-    method public abstract boolean canTargetScrollVertically(int);
-    method public boolean isEnabled();
-    method public boolean isExclusive();
-    method public boolean onTouch(android.view.View, android.view.MotionEvent);
-    method public abstract void scrollTargetBy(int, int);
-    method public android.support.v4.widget.AutoScrollHelper setActivationDelay(int);
-    method public android.support.v4.widget.AutoScrollHelper setEdgeType(int);
-    method public android.support.v4.widget.AutoScrollHelper setEnabled(boolean);
-    method public android.support.v4.widget.AutoScrollHelper setExclusive(boolean);
-    method public android.support.v4.widget.AutoScrollHelper setMaximumEdges(float, float);
-    method public android.support.v4.widget.AutoScrollHelper setMaximumVelocity(float, float);
-    method public android.support.v4.widget.AutoScrollHelper setMinimumVelocity(float, float);
-    method public android.support.v4.widget.AutoScrollHelper setRampDownDuration(int);
-    method public android.support.v4.widget.AutoScrollHelper setRampUpDuration(int);
-    method public android.support.v4.widget.AutoScrollHelper setRelativeEdges(float, float);
-    method public android.support.v4.widget.AutoScrollHelper setRelativeVelocity(float, float);
-    field public static final int EDGE_TYPE_INSIDE = 0; // 0x0
-    field public static final int EDGE_TYPE_INSIDE_EXTEND = 1; // 0x1
-    field public static final int EDGE_TYPE_OUTSIDE = 2; // 0x2
-    field public static final float NO_MAX = 3.4028235E38f;
-    field public static final float NO_MIN = 0.0f;
-    field public static final float RELATIVE_UNSPECIFIED = 0.0f;
-  }
-
-  public final class CompoundButtonCompat {
-    method public static android.graphics.drawable.Drawable getButtonDrawable(android.widget.CompoundButton);
-    method public static android.content.res.ColorStateList getButtonTintList(android.widget.CompoundButton);
-    method public static android.graphics.PorterDuff.Mode getButtonTintMode(android.widget.CompoundButton);
-    method public static void setButtonTintList(android.widget.CompoundButton, android.content.res.ColorStateList);
-    method public static void setButtonTintMode(android.widget.CompoundButton, android.graphics.PorterDuff.Mode);
-  }
-
-  public class ContentLoadingProgressBar extends android.widget.ProgressBar {
-    ctor public ContentLoadingProgressBar(android.content.Context);
-    ctor public ContentLoadingProgressBar(android.content.Context, android.util.AttributeSet);
-    method public void hide();
-    method public void onAttachedToWindow();
-    method public void onDetachedFromWindow();
-    method public void show();
-  }
-
-  public abstract class CursorAdapter extends android.widget.BaseAdapter {
-    ctor public deprecated CursorAdapter(android.content.Context, android.database.Cursor);
-    ctor public CursorAdapter(android.content.Context, android.database.Cursor, boolean);
-    ctor public CursorAdapter(android.content.Context, android.database.Cursor, int);
-    method public abstract void bindView(android.view.View, android.content.Context, android.database.Cursor);
-    method public void changeCursor(android.database.Cursor);
-    method public java.lang.CharSequence convertToString(android.database.Cursor);
-    method public int getCount();
-    method public android.database.Cursor getCursor();
-    method public android.widget.Filter getFilter();
-    method public android.widget.FilterQueryProvider getFilterQueryProvider();
-    method public java.lang.Object getItem(int);
-    method public long getItemId(int);
-    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    method protected deprecated void init(android.content.Context, android.database.Cursor, boolean);
-    method public android.view.View newDropDownView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
-    method public abstract android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
-    method protected void onContentChanged();
-    method public android.database.Cursor runQueryOnBackgroundThread(java.lang.CharSequence);
-    method public void setFilterQueryProvider(android.widget.FilterQueryProvider);
-    method public android.database.Cursor swapCursor(android.database.Cursor);
-    field public static final deprecated int FLAG_AUTO_REQUERY = 1; // 0x1
-    field public static final int FLAG_REGISTER_CONTENT_OBSERVER = 2; // 0x2
-  }
-
-  public class DrawerLayout extends android.view.ViewGroup {
-    ctor public DrawerLayout(android.content.Context);
-    ctor public DrawerLayout(android.content.Context, android.util.AttributeSet);
-    ctor public DrawerLayout(android.content.Context, android.util.AttributeSet, int);
-    method public void addDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener);
-    method public void closeDrawer(android.view.View);
-    method public void closeDrawer(android.view.View, boolean);
-    method public void closeDrawer(int);
-    method public void closeDrawer(int, boolean);
-    method public void closeDrawers();
-    method public float getDrawerElevation();
-    method public int getDrawerLockMode(int);
-    method public int getDrawerLockMode(android.view.View);
-    method public java.lang.CharSequence getDrawerTitle(int);
-    method public android.graphics.drawable.Drawable getStatusBarBackgroundDrawable();
-    method public boolean isDrawerOpen(android.view.View);
-    method public boolean isDrawerOpen(int);
-    method public boolean isDrawerVisible(android.view.View);
-    method public boolean isDrawerVisible(int);
-    method public void onDraw(android.graphics.Canvas);
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void openDrawer(android.view.View);
-    method public void openDrawer(android.view.View, boolean);
-    method public void openDrawer(int);
-    method public void openDrawer(int, boolean);
-    method public void removeDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener);
-    method public void setDrawerElevation(float);
-    method public deprecated void setDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener);
-    method public void setDrawerLockMode(int);
-    method public void setDrawerLockMode(int, int);
-    method public void setDrawerLockMode(int, android.view.View);
-    method public void setDrawerShadow(android.graphics.drawable.Drawable, int);
-    method public void setDrawerShadow(int, int);
-    method public void setDrawerTitle(int, java.lang.CharSequence);
-    method public void setScrimColor(int);
-    method public void setStatusBarBackground(android.graphics.drawable.Drawable);
-    method public void setStatusBarBackground(int);
-    method public void setStatusBarBackgroundColor(int);
-    field public static final int LOCK_MODE_LOCKED_CLOSED = 1; // 0x1
-    field public static final int LOCK_MODE_LOCKED_OPEN = 2; // 0x2
-    field public static final int LOCK_MODE_UNDEFINED = 3; // 0x3
-    field public static final int LOCK_MODE_UNLOCKED = 0; // 0x0
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_IDLE = 0; // 0x0
-    field public static final int STATE_SETTLING = 2; // 0x2
-  }
-
-  public static abstract interface DrawerLayout.DrawerListener {
-    method public abstract void onDrawerClosed(android.view.View);
-    method public abstract void onDrawerOpened(android.view.View);
-    method public abstract void onDrawerSlide(android.view.View, float);
-    method public abstract void onDrawerStateChanged(int);
-  }
-
-  public static class DrawerLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public DrawerLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public DrawerLayout.LayoutParams(int, int);
-    ctor public DrawerLayout.LayoutParams(int, int, int);
-    ctor public DrawerLayout.LayoutParams(android.support.v4.widget.DrawerLayout.LayoutParams);
-    ctor public DrawerLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public DrawerLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    field public int gravity;
-  }
-
-  protected static class DrawerLayout.SavedState extends android.support.v4.view.AbsSavedState {
-    ctor public DrawerLayout.SavedState(android.os.Parcel, java.lang.ClassLoader);
-    ctor public DrawerLayout.SavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<android.support.v4.widget.DrawerLayout.SavedState> CREATOR;
-  }
-
-  public static abstract class DrawerLayout.SimpleDrawerListener implements android.support.v4.widget.DrawerLayout.DrawerListener {
-    ctor public DrawerLayout.SimpleDrawerListener();
-    method public void onDrawerClosed(android.view.View);
-    method public void onDrawerOpened(android.view.View);
-    method public void onDrawerSlide(android.view.View, float);
-    method public void onDrawerStateChanged(int);
-  }
-
-  public final class EdgeEffectCompat {
-    ctor public EdgeEffectCompat(android.content.Context);
-    method public boolean draw(android.graphics.Canvas);
-    method public void finish();
-    method public boolean isFinished();
-    method public boolean onAbsorb(int);
-    method public deprecated boolean onPull(float);
-    method public boolean onPull(float, float);
-    method public boolean onRelease();
-    method public void setSize(int, int);
-  }
-
-  public abstract class ExploreByTouchHelper extends android.support.v4.view.AccessibilityDelegateCompat {
-    ctor public ExploreByTouchHelper(android.view.View);
-    method public final boolean clearKeyboardFocusForVirtualView(int);
-    method public final boolean dispatchHoverEvent(android.view.MotionEvent);
-    method public final boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public final int getAccessibilityFocusedVirtualViewId();
-    method public deprecated int getFocusedVirtualView();
-    method public final int getKeyboardFocusedVirtualViewId();
-    method protected abstract int getVirtualViewAt(float, float);
-    method protected abstract void getVisibleVirtualViews(java.util.List<java.lang.Integer>);
-    method public final void invalidateRoot();
-    method public final void invalidateVirtualView(int);
-    method public final void invalidateVirtualView(int, int);
-    method public final void onFocusChanged(boolean, int, android.graphics.Rect);
-    method protected abstract boolean onPerformActionForVirtualView(int, int, android.os.Bundle);
-    method protected void onPopulateEventForHost(android.view.accessibility.AccessibilityEvent);
-    method protected void onPopulateEventForVirtualView(int, android.view.accessibility.AccessibilityEvent);
-    method protected void onPopulateNodeForHost(android.support.v4.view.accessibility.AccessibilityNodeInfoCompat);
-    method protected abstract void onPopulateNodeForVirtualView(int, android.support.v4.view.accessibility.AccessibilityNodeInfoCompat);
-    method protected void onVirtualViewKeyboardFocusChanged(int, boolean);
-    method public final boolean requestKeyboardFocusForVirtualView(int);
-    method public final boolean sendEventForVirtualView(int, int);
-    field public static final int HOST_ID = -1; // 0xffffffff
-    field public static final int INVALID_ID = -2147483648; // 0x80000000
-  }
-
-  public class ImageViewCompat {
-    method public static android.content.res.ColorStateList getImageTintList(android.widget.ImageView);
-    method public static android.graphics.PorterDuff.Mode getImageTintMode(android.widget.ImageView);
-    method public static void setImageTintList(android.widget.ImageView, android.content.res.ColorStateList);
-    method public static void setImageTintMode(android.widget.ImageView, android.graphics.PorterDuff.Mode);
-  }
-
-  public final class ListPopupWindowCompat {
-    method public static android.view.View.OnTouchListener createDragToOpenListener(java.lang.Object, android.view.View);
-  }
-
-  public class ListViewAutoScrollHelper extends android.support.v4.widget.AutoScrollHelper {
-    ctor public ListViewAutoScrollHelper(android.widget.ListView);
-    method public boolean canTargetScrollHorizontally(int);
-    method public boolean canTargetScrollVertically(int);
-    method public void scrollTargetBy(int, int);
-  }
-
-  public final class ListViewCompat {
-    method public static void scrollListBy(android.widget.ListView, int);
-  }
-
-  public class NestedScrollView extends android.widget.FrameLayout implements android.support.v4.view.NestedScrollingChild android.support.v4.view.NestedScrollingParent android.support.v4.view.ScrollingView {
-    ctor public NestedScrollView(android.content.Context);
-    ctor public NestedScrollView(android.content.Context, android.util.AttributeSet);
-    ctor public NestedScrollView(android.content.Context, android.util.AttributeSet, int);
-    method public boolean arrowScroll(int);
-    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect);
-    method public boolean executeKeyEvent(android.view.KeyEvent);
-    method public void fling(int);
-    method public boolean fullScroll(int);
-    method public int getMaxScrollAmount();
-    method public boolean isFillViewport();
-    method public boolean isSmoothScrollingEnabled();
-    method public void onAttachedToWindow();
-    method public boolean pageScroll(int);
-    method public void setFillViewport(boolean);
-    method public void setOnScrollChangeListener(android.support.v4.widget.NestedScrollView.OnScrollChangeListener);
-    method public void setSmoothScrollingEnabled(boolean);
-    method public final void smoothScrollBy(int, int);
-    method public final void smoothScrollTo(int, int);
-  }
-
-  public static abstract interface NestedScrollView.OnScrollChangeListener {
-    method public abstract void onScrollChange(android.support.v4.widget.NestedScrollView, int, int, int, int);
-  }
-
-  public final class PopupMenuCompat {
-    method public static android.view.View.OnTouchListener getDragToOpenListener(java.lang.Object);
-  }
-
-  public final class PopupWindowCompat {
-    method public static boolean getOverlapAnchor(android.widget.PopupWindow);
-    method public static int getWindowLayoutType(android.widget.PopupWindow);
-    method public static void setOverlapAnchor(android.widget.PopupWindow, boolean);
-    method public static void setWindowLayoutType(android.widget.PopupWindow, int);
-    method public static void showAsDropDown(android.widget.PopupWindow, android.view.View, int, int, int);
-  }
-
-  public abstract class ResourceCursorAdapter extends android.support.v4.widget.CursorAdapter {
-    ctor public deprecated ResourceCursorAdapter(android.content.Context, int, android.database.Cursor);
-    ctor public deprecated ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, boolean);
-    ctor public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, int);
-    method public android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
-    method public void setDropDownViewResource(int);
-    method public void setViewResource(int);
-  }
-
-  public final class ScrollerCompat {
-    method public void abortAnimation();
-    method public boolean computeScrollOffset();
-    method public static android.support.v4.widget.ScrollerCompat create(android.content.Context);
-    method public static android.support.v4.widget.ScrollerCompat create(android.content.Context, android.view.animation.Interpolator);
-    method public void fling(int, int, int, int, int, int, int, int);
-    method public void fling(int, int, int, int, int, int, int, int, int, int);
-    method public float getCurrVelocity();
-    method public int getCurrX();
-    method public int getCurrY();
-    method public int getFinalX();
-    method public int getFinalY();
-    method public boolean isFinished();
-    method public boolean isOverScrolled();
-    method public void notifyHorizontalEdgeReached(int, int, int);
-    method public void notifyVerticalEdgeReached(int, int, int);
-    method public boolean springBack(int, int, int, int, int, int);
-    method public void startScroll(int, int, int, int);
-    method public void startScroll(int, int, int, int, int);
-  }
-
-  public final class SearchViewCompat {
-    method public static java.lang.CharSequence getQuery(android.view.View);
-    method public static boolean isIconified(android.view.View);
-    method public static boolean isQueryRefinementEnabled(android.view.View);
-    method public static boolean isSubmitButtonEnabled(android.view.View);
-    method public static android.view.View newSearchView(android.content.Context);
-    method public static void setIconified(android.view.View, boolean);
-    method public static void setImeOptions(android.view.View, int);
-    method public static void setInputType(android.view.View, int);
-    method public static void setMaxWidth(android.view.View, int);
-    method public static void setOnCloseListener(android.view.View, android.support.v4.widget.SearchViewCompat.OnCloseListener);
-    method public static void setOnQueryTextListener(android.view.View, android.support.v4.widget.SearchViewCompat.OnQueryTextListener);
-    method public static void setQuery(android.view.View, java.lang.CharSequence, boolean);
-    method public static void setQueryHint(android.view.View, java.lang.CharSequence);
-    method public static void setQueryRefinementEnabled(android.view.View, boolean);
-    method public static void setSearchableInfo(android.view.View, android.content.ComponentName);
-    method public static void setSubmitButtonEnabled(android.view.View, boolean);
-  }
-
-  public static abstract interface SearchViewCompat.OnCloseListener {
-    method public abstract boolean onClose();
-  }
-
-  public static abstract deprecated class SearchViewCompat.OnCloseListenerCompat implements android.support.v4.widget.SearchViewCompat.OnCloseListener {
-    ctor public SearchViewCompat.OnCloseListenerCompat();
-    method public boolean onClose();
-  }
-
-  public static abstract interface SearchViewCompat.OnQueryTextListener {
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
-  }
-
-  public static abstract deprecated class SearchViewCompat.OnQueryTextListenerCompat implements android.support.v4.widget.SearchViewCompat.OnQueryTextListener {
-    ctor public SearchViewCompat.OnQueryTextListenerCompat();
-    method public boolean onQueryTextChange(java.lang.String);
-    method public boolean onQueryTextSubmit(java.lang.String);
-  }
-
-  public class SimpleCursorAdapter extends android.support.v4.widget.ResourceCursorAdapter {
-    ctor public deprecated SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, java.lang.String[], int[]);
-    ctor public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, java.lang.String[], int[], int);
-    method public void bindView(android.view.View, android.content.Context, android.database.Cursor);
-    method public void changeCursorAndColumns(android.database.Cursor, java.lang.String[], int[]);
-    method public android.support.v4.widget.SimpleCursorAdapter.CursorToStringConverter getCursorToStringConverter();
-    method public int getStringConversionColumn();
-    method public android.support.v4.widget.SimpleCursorAdapter.ViewBinder getViewBinder();
-    method public void setCursorToStringConverter(android.support.v4.widget.SimpleCursorAdapter.CursorToStringConverter);
-    method public void setStringConversionColumn(int);
-    method public void setViewBinder(android.support.v4.widget.SimpleCursorAdapter.ViewBinder);
-    method public void setViewImage(android.widget.ImageView, java.lang.String);
-    method public void setViewText(android.widget.TextView, java.lang.String);
-  }
-
-  public static abstract interface SimpleCursorAdapter.CursorToStringConverter {
-    method public abstract java.lang.CharSequence convertToString(android.database.Cursor);
-  }
-
-  public static abstract interface SimpleCursorAdapter.ViewBinder {
-    method public abstract boolean setViewValue(android.view.View, android.database.Cursor, int);
-  }
-
-  public class SlidingPaneLayout extends android.view.ViewGroup {
-    ctor public SlidingPaneLayout(android.content.Context);
-    ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet);
-    ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet, int);
-    method protected boolean canScroll(android.view.View, boolean, int, int, int);
-    method public deprecated boolean canSlide();
-    method public boolean closePane();
-    method public int getCoveredFadeColor();
-    method public int getParallaxDistance();
-    method public int getSliderFadeColor();
-    method public boolean isOpen();
-    method public boolean isSlideable();
-    method protected void onLayout(boolean, int, int, int, int);
-    method public boolean openPane();
-    method public void setCoveredFadeColor(int);
-    method public void setPanelSlideListener(android.support.v4.widget.SlidingPaneLayout.PanelSlideListener);
-    method public void setParallaxDistance(int);
-    method public deprecated void setShadowDrawable(android.graphics.drawable.Drawable);
-    method public void setShadowDrawableLeft(android.graphics.drawable.Drawable);
-    method public void setShadowDrawableRight(android.graphics.drawable.Drawable);
-    method public deprecated void setShadowResource(int);
-    method public void setShadowResourceLeft(int);
-    method public void setShadowResourceRight(int);
-    method public void setSliderFadeColor(int);
-    method public deprecated void smoothSlideClosed();
-    method public deprecated void smoothSlideOpen();
-  }
-
-  public static class SlidingPaneLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public SlidingPaneLayout.LayoutParams();
-    ctor public SlidingPaneLayout.LayoutParams(int, int);
-    ctor public SlidingPaneLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(android.support.v4.widget.SlidingPaneLayout.LayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    field public float weight;
-  }
-
-  public static abstract interface SlidingPaneLayout.PanelSlideListener {
-    method public abstract void onPanelClosed(android.view.View);
-    method public abstract void onPanelOpened(android.view.View);
-    method public abstract void onPanelSlide(android.view.View, float);
-  }
-
-  public static class SlidingPaneLayout.SimplePanelSlideListener implements android.support.v4.widget.SlidingPaneLayout.PanelSlideListener {
-    ctor public SlidingPaneLayout.SimplePanelSlideListener();
-    method public void onPanelClosed(android.view.View);
-    method public void onPanelOpened(android.view.View);
-    method public void onPanelSlide(android.view.View, float);
-  }
-
-  public class Space extends android.view.View {
-    ctor public Space(android.content.Context, android.util.AttributeSet, int);
-    ctor public Space(android.content.Context, android.util.AttributeSet);
-    ctor public Space(android.content.Context);
-  }
-
-  public class SwipeRefreshLayout extends android.view.ViewGroup implements android.support.v4.view.NestedScrollingChild android.support.v4.view.NestedScrollingParent {
-    ctor public SwipeRefreshLayout(android.content.Context);
-    ctor public SwipeRefreshLayout(android.content.Context, android.util.AttributeSet);
-    method public boolean canChildScrollUp();
-    method public int getProgressCircleDiameter();
-    method public int getProgressViewEndOffset();
-    method public int getProgressViewStartOffset();
-    method public boolean isRefreshing();
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void onMeasure(int, int);
-    method public deprecated void setColorScheme(int...);
-    method public void setColorSchemeColors(int...);
-    method public void setColorSchemeResources(int...);
-    method public void setDistanceToTriggerSync(int);
-    method public void setOnChildScrollUpCallback(android.support.v4.widget.SwipeRefreshLayout.OnChildScrollUpCallback);
-    method public void setOnRefreshListener(android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener);
-    method public deprecated void setProgressBackgroundColor(int);
-    method public void setProgressBackgroundColorSchemeColor(int);
-    method public void setProgressBackgroundColorSchemeResource(int);
-    method public void setProgressViewEndTarget(boolean, int);
-    method public void setProgressViewOffset(boolean, int, int);
-    method public void setRefreshing(boolean);
-    method public void setSize(int);
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int LARGE = 0; // 0x0
-    field protected int mFrom;
-    field protected int mOriginalOffsetTop;
-  }
-
-  public static abstract interface SwipeRefreshLayout.OnChildScrollUpCallback {
-    method public abstract boolean canChildScrollUp(android.support.v4.widget.SwipeRefreshLayout, android.view.View);
-  }
-
-  public static abstract interface SwipeRefreshLayout.OnRefreshListener {
-    method public abstract void onRefresh();
-  }
-
-  public final class TextViewCompat {
-    method public static android.graphics.drawable.Drawable[] getCompoundDrawablesRelative(android.widget.TextView);
-    method public static int getMaxLines(android.widget.TextView);
-    method public static int getMinLines(android.widget.TextView);
-    method public static void setCompoundDrawablesRelative(android.widget.TextView, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
-    method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
-    method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, int, int, int, int);
-    method public static void setTextAppearance(android.widget.TextView, int);
-  }
-
-  public abstract interface TintableCompoundButton {
-    method public abstract android.content.res.ColorStateList getSupportButtonTintList();
-    method public abstract android.graphics.PorterDuff.Mode getSupportButtonTintMode();
-    method public abstract void setSupportButtonTintList(android.content.res.ColorStateList);
-    method public abstract void setSupportButtonTintMode(android.graphics.PorterDuff.Mode);
-  }
-
-  public class ViewDragHelper {
-    method public void abort();
-    method protected boolean canScroll(android.view.View, boolean, int, int, int, int);
-    method public void cancel();
-    method public void captureChildView(android.view.View, int);
-    method public boolean checkTouchSlop(int);
-    method public boolean checkTouchSlop(int, int);
-    method public boolean continueSettling(boolean);
-    method public static android.support.v4.widget.ViewDragHelper create(android.view.ViewGroup, android.support.v4.widget.ViewDragHelper.Callback);
-    method public static android.support.v4.widget.ViewDragHelper create(android.view.ViewGroup, float, android.support.v4.widget.ViewDragHelper.Callback);
-    method public android.view.View findTopChildUnder(int, int);
-    method public void flingCapturedView(int, int, int, int);
-    method public int getActivePointerId();
-    method public android.view.View getCapturedView();
-    method public int getEdgeSize();
-    method public float getMinVelocity();
-    method public int getTouchSlop();
-    method public int getViewDragState();
-    method public boolean isCapturedViewUnder(int, int);
-    method public boolean isEdgeTouched(int);
-    method public boolean isEdgeTouched(int, int);
-    method public boolean isPointerDown(int);
-    method public boolean isViewUnder(android.view.View, int, int);
-    method public void processTouchEvent(android.view.MotionEvent);
-    method public void setEdgeTrackingEnabled(int);
-    method public void setMinVelocity(float);
-    method public boolean settleCapturedViewAt(int, int);
-    method public boolean shouldInterceptTouchEvent(android.view.MotionEvent);
-    method public boolean smoothSlideViewTo(android.view.View, int, int);
-    field public static final int DIRECTION_ALL = 3; // 0x3
-    field public static final int DIRECTION_HORIZONTAL = 1; // 0x1
-    field public static final int DIRECTION_VERTICAL = 2; // 0x2
-    field public static final int EDGE_ALL = 15; // 0xf
-    field public static final int EDGE_BOTTOM = 8; // 0x8
-    field public static final int EDGE_LEFT = 1; // 0x1
-    field public static final int EDGE_RIGHT = 2; // 0x2
-    field public static final int EDGE_TOP = 4; // 0x4
-    field public static final int INVALID_POINTER = -1; // 0xffffffff
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_IDLE = 0; // 0x0
-    field public static final int STATE_SETTLING = 2; // 0x2
-  }
-
-  public static abstract class ViewDragHelper.Callback {
-    ctor public ViewDragHelper.Callback();
-    method public int clampViewPositionHorizontal(android.view.View, int, int);
-    method public int clampViewPositionVertical(android.view.View, int, int);
-    method public int getOrderedChildIndex(int);
-    method public int getViewHorizontalDragRange(android.view.View);
-    method public int getViewVerticalDragRange(android.view.View);
-    method public void onEdgeDragStarted(int, int);
-    method public boolean onEdgeLock(int);
-    method public void onEdgeTouched(int, int);
-    method public void onViewCaptured(android.view.View, int);
-    method public void onViewDragStateChanged(int);
-    method public void onViewPositionChanged(android.view.View, int, int, int, int);
-    method public void onViewReleased(android.view.View, float, float);
-    method public abstract boolean tryCaptureView(android.view.View, int);
-  }
-
-}
-
-package android.support.v7.app {
-
-  public abstract class ActionBar {
-    ctor public ActionBar();
-    method public abstract void addOnMenuVisibilityListener(android.support.v7.app.ActionBar.OnMenuVisibilityListener);
-    method public abstract deprecated void addTab(android.support.v7.app.ActionBar.Tab);
-    method public abstract deprecated void addTab(android.support.v7.app.ActionBar.Tab, boolean);
-    method public abstract deprecated void addTab(android.support.v7.app.ActionBar.Tab, int);
-    method public abstract deprecated void addTab(android.support.v7.app.ActionBar.Tab, int, boolean);
-    method public abstract android.view.View getCustomView();
-    method public abstract int getDisplayOptions();
-    method public float getElevation();
-    method public abstract int getHeight();
-    method public int getHideOffset();
-    method public abstract deprecated int getNavigationItemCount();
-    method public abstract deprecated int getNavigationMode();
-    method public abstract deprecated int getSelectedNavigationIndex();
-    method public abstract deprecated android.support.v7.app.ActionBar.Tab getSelectedTab();
-    method public abstract java.lang.CharSequence getSubtitle();
-    method public abstract deprecated android.support.v7.app.ActionBar.Tab getTabAt(int);
-    method public abstract deprecated int getTabCount();
-    method public android.content.Context getThemedContext();
-    method public abstract java.lang.CharSequence getTitle();
-    method public abstract void hide();
-    method public boolean isHideOnContentScrollEnabled();
-    method public abstract boolean isShowing();
-    method public abstract deprecated android.support.v7.app.ActionBar.Tab newTab();
-    method public abstract deprecated void removeAllTabs();
-    method public abstract void removeOnMenuVisibilityListener(android.support.v7.app.ActionBar.OnMenuVisibilityListener);
-    method public abstract deprecated void removeTab(android.support.v7.app.ActionBar.Tab);
-    method public abstract deprecated void removeTabAt(int);
-    method public abstract deprecated void selectTab(android.support.v7.app.ActionBar.Tab);
-    method public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public abstract void setCustomView(android.view.View);
-    method public abstract void setCustomView(android.view.View, android.support.v7.app.ActionBar.LayoutParams);
-    method public abstract void setCustomView(int);
-    method public abstract void setDisplayHomeAsUpEnabled(boolean);
-    method public abstract void setDisplayOptions(int);
-    method public abstract void setDisplayOptions(int, int);
-    method public abstract void setDisplayShowCustomEnabled(boolean);
-    method public abstract void setDisplayShowHomeEnabled(boolean);
-    method public abstract void setDisplayShowTitleEnabled(boolean);
-    method public abstract void setDisplayUseLogoEnabled(boolean);
-    method public void setElevation(float);
-    method public void setHideOffset(int);
-    method public void setHideOnContentScrollEnabled(boolean);
-    method public void setHomeActionContentDescription(java.lang.CharSequence);
-    method public void setHomeActionContentDescription(int);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable);
-    method public void setHomeAsUpIndicator(int);
-    method public void setHomeButtonEnabled(boolean);
-    method public abstract void setIcon(int);
-    method public abstract void setIcon(android.graphics.drawable.Drawable);
-    method public abstract deprecated void setListNavigationCallbacks(android.widget.SpinnerAdapter, android.support.v7.app.ActionBar.OnNavigationListener);
-    method public abstract void setLogo(int);
-    method public abstract void setLogo(android.graphics.drawable.Drawable);
-    method public abstract deprecated void setNavigationMode(int);
-    method public abstract deprecated void setSelectedNavigationItem(int);
-    method public void setSplitBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setStackedBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public abstract void setSubtitle(java.lang.CharSequence);
-    method public abstract void setSubtitle(int);
-    method public abstract void setTitle(java.lang.CharSequence);
-    method public abstract void setTitle(int);
-    method public abstract void show();
-    field public static final int DISPLAY_HOME_AS_UP = 4; // 0x4
-    field public static final int DISPLAY_SHOW_CUSTOM = 16; // 0x10
-    field public static final int DISPLAY_SHOW_HOME = 2; // 0x2
-    field public static final int DISPLAY_SHOW_TITLE = 8; // 0x8
-    field public static final int DISPLAY_USE_LOGO = 1; // 0x1
-    field public static final deprecated int NAVIGATION_MODE_LIST = 1; // 0x1
-    field public static final deprecated int NAVIGATION_MODE_STANDARD = 0; // 0x0
-    field public static final deprecated int NAVIGATION_MODE_TABS = 2; // 0x2
-  }
-
-  public static class ActionBar.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public ActionBar.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public ActionBar.LayoutParams(int, int);
-    ctor public ActionBar.LayoutParams(int, int, int);
-    ctor public ActionBar.LayoutParams(int);
-    ctor public ActionBar.LayoutParams(android.support.v7.app.ActionBar.LayoutParams);
-    ctor public ActionBar.LayoutParams(android.view.ViewGroup.LayoutParams);
-    field public int gravity;
-  }
-
-  public static abstract interface ActionBar.OnMenuVisibilityListener {
-    method public abstract void onMenuVisibilityChanged(boolean);
-  }
-
-  public static abstract deprecated interface ActionBar.OnNavigationListener {
-    method public abstract boolean onNavigationItemSelected(int, long);
-  }
-
-  public static abstract deprecated class ActionBar.Tab {
-    ctor public ActionBar.Tab();
-    method public abstract java.lang.CharSequence getContentDescription();
-    method public abstract android.view.View getCustomView();
-    method public abstract android.graphics.drawable.Drawable getIcon();
-    method public abstract int getPosition();
-    method public abstract java.lang.Object getTag();
-    method public abstract java.lang.CharSequence getText();
-    method public abstract void select();
-    method public abstract android.support.v7.app.ActionBar.Tab setContentDescription(int);
-    method public abstract android.support.v7.app.ActionBar.Tab setContentDescription(java.lang.CharSequence);
-    method public abstract android.support.v7.app.ActionBar.Tab setCustomView(android.view.View);
-    method public abstract android.support.v7.app.ActionBar.Tab setCustomView(int);
-    method public abstract android.support.v7.app.ActionBar.Tab setIcon(android.graphics.drawable.Drawable);
-    method public abstract android.support.v7.app.ActionBar.Tab setIcon(int);
-    method public abstract android.support.v7.app.ActionBar.Tab setTabListener(android.support.v7.app.ActionBar.TabListener);
-    method public abstract android.support.v7.app.ActionBar.Tab setTag(java.lang.Object);
-    method public abstract android.support.v7.app.ActionBar.Tab setText(java.lang.CharSequence);
-    method public abstract android.support.v7.app.ActionBar.Tab setText(int);
-    field public static final int INVALID_POSITION = -1; // 0xffffffff
-  }
-
-  public static abstract deprecated interface ActionBar.TabListener {
-    method public abstract void onTabReselected(android.support.v7.app.ActionBar.Tab, android.support.v4.app.FragmentTransaction);
-    method public abstract void onTabSelected(android.support.v7.app.ActionBar.Tab, android.support.v4.app.FragmentTransaction);
-    method public abstract void onTabUnselected(android.support.v7.app.ActionBar.Tab, android.support.v4.app.FragmentTransaction);
-  }
-
-  public deprecated class ActionBarActivity extends android.support.v7.app.AppCompatActivity {
-    ctor public ActionBarActivity();
-  }
-
-  public class ActionBarDrawerToggle implements android.support.v4.widget.DrawerLayout.DrawerListener {
-    ctor public ActionBarDrawerToggle(android.app.Activity, android.support.v4.widget.DrawerLayout, int, int);
-    ctor public ActionBarDrawerToggle(android.app.Activity, android.support.v4.widget.DrawerLayout, android.support.v7.widget.Toolbar, int, int);
-    method public android.support.v7.graphics.drawable.DrawerArrowDrawable getDrawerArrowDrawable();
-    method public android.view.View.OnClickListener getToolbarNavigationClickListener();
-    method public boolean isDrawerIndicatorEnabled();
-    method public boolean isDrawerSlideAnimationEnabled();
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public void onDrawerClosed(android.view.View);
-    method public void onDrawerOpened(android.view.View);
-    method public void onDrawerSlide(android.view.View, float);
-    method public void onDrawerStateChanged(int);
-    method public boolean onOptionsItemSelected(android.view.MenuItem);
-    method public void setDrawerArrowDrawable(android.support.v7.graphics.drawable.DrawerArrowDrawable);
-    method public void setDrawerIndicatorEnabled(boolean);
-    method public void setDrawerSlideAnimationEnabled(boolean);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable);
-    method public void setHomeAsUpIndicator(int);
-    method public void setToolbarNavigationClickListener(android.view.View.OnClickListener);
-    method public void syncState();
-  }
-
-  public static abstract interface ActionBarDrawerToggle.Delegate {
-    method public abstract android.content.Context getActionBarThemedContext();
-    method public abstract android.graphics.drawable.Drawable getThemeUpIndicator();
-    method public abstract boolean isNavigationVisible();
-    method public abstract void setActionBarDescription(int);
-    method public abstract void setActionBarUpIndicator(android.graphics.drawable.Drawable, int);
-  }
-
-  public static abstract interface ActionBarDrawerToggle.DelegateProvider {
-    method public abstract android.support.v7.app.ActionBarDrawerToggle.Delegate getDrawerToggleDelegate();
-  }
-
-  public class AlertDialog extends android.support.v7.app.AppCompatDialog implements android.content.DialogInterface {
-    ctor protected AlertDialog(android.content.Context);
-    ctor protected AlertDialog(android.content.Context, int);
-    ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
-    method public android.widget.Button getButton(int);
-    method public android.widget.ListView getListView();
-    method public void setButton(int, java.lang.CharSequence, android.os.Message);
-    method public void setButton(int, java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
-    method public void setCustomTitle(android.view.View);
-    method public void setIcon(int);
-    method public void setIcon(android.graphics.drawable.Drawable);
-    method public void setIconAttribute(int);
-    method public void setMessage(java.lang.CharSequence);
-    method public void setView(android.view.View);
-    method public void setView(android.view.View, int, int, int, int);
-  }
-
-  public static class AlertDialog.Builder {
-    ctor public AlertDialog.Builder(android.content.Context);
-    ctor public AlertDialog.Builder(android.content.Context, int);
-    method public android.support.v7.app.AlertDialog create();
-    method public android.content.Context getContext();
-    method public android.support.v7.app.AlertDialog.Builder setAdapter(android.widget.ListAdapter, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setCancelable(boolean);
-    method public android.support.v7.app.AlertDialog.Builder setCursor(android.database.Cursor, android.content.DialogInterface.OnClickListener, java.lang.String);
-    method public android.support.v7.app.AlertDialog.Builder setCustomTitle(android.view.View);
-    method public android.support.v7.app.AlertDialog.Builder setIcon(int);
-    method public android.support.v7.app.AlertDialog.Builder setIcon(android.graphics.drawable.Drawable);
-    method public android.support.v7.app.AlertDialog.Builder setIconAttribute(int);
-    method public deprecated android.support.v7.app.AlertDialog.Builder setInverseBackgroundForced(boolean);
-    method public android.support.v7.app.AlertDialog.Builder setItems(int, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setItems(java.lang.CharSequence[], android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setMessage(int);
-    method public android.support.v7.app.AlertDialog.Builder setMessage(java.lang.CharSequence);
-    method public android.support.v7.app.AlertDialog.Builder setMultiChoiceItems(int, boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setMultiChoiceItems(java.lang.CharSequence[], boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setMultiChoiceItems(android.database.Cursor, java.lang.String, java.lang.String, android.content.DialogInterface.OnMultiChoiceClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setNegativeButton(int, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setNegativeButton(java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setNeutralButton(int, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setNeutralButton(java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener);
-    method public android.support.v7.app.AlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener);
-    method public android.support.v7.app.AlertDialog.Builder setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
-    method public android.support.v7.app.AlertDialog.Builder setOnKeyListener(android.content.DialogInterface.OnKeyListener);
-    method public android.support.v7.app.AlertDialog.Builder setPositiveButton(int, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setPositiveButton(java.lang.CharSequence, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setSingleChoiceItems(int, int, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setSingleChoiceItems(android.database.Cursor, int, java.lang.String, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setSingleChoiceItems(java.lang.CharSequence[], int, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setSingleChoiceItems(android.widget.ListAdapter, int, android.content.DialogInterface.OnClickListener);
-    method public android.support.v7.app.AlertDialog.Builder setTitle(int);
-    method public android.support.v7.app.AlertDialog.Builder setTitle(java.lang.CharSequence);
-    method public android.support.v7.app.AlertDialog.Builder setView(int);
-    method public android.support.v7.app.AlertDialog.Builder setView(android.view.View);
-    method public android.support.v7.app.AlertDialog show();
-  }
-
-  public class AppCompatActivity extends android.support.v4.app.FragmentActivity implements android.support.v7.app.ActionBarDrawerToggle.DelegateProvider android.support.v7.app.AppCompatCallback android.support.v4.app.TaskStackBuilder.SupportParentable {
-    ctor public AppCompatActivity();
-    method public android.support.v7.app.AppCompatDelegate getDelegate();
-    method public android.support.v7.app.ActionBarDrawerToggle.Delegate getDrawerToggleDelegate();
-    method public android.support.v7.app.ActionBar getSupportActionBar();
-    method public android.content.Intent getSupportParentActivityIntent();
-    method public void onCreateSupportNavigateUpTaskStack(android.support.v4.app.TaskStackBuilder);
-    method public final boolean onMenuItemSelected(int, android.view.MenuItem);
-    method public void onPrepareSupportNavigateUpTaskStack(android.support.v4.app.TaskStackBuilder);
-    method public void onSupportActionModeFinished(android.support.v7.view.ActionMode);
-    method public void onSupportActionModeStarted(android.support.v7.view.ActionMode);
-    method public deprecated void onSupportContentChanged();
-    method public boolean onSupportNavigateUp();
-    method public android.support.v7.view.ActionMode onWindowStartingSupportActionMode(android.support.v7.view.ActionMode.Callback);
-    method public void setSupportActionBar(android.support.v7.widget.Toolbar);
-    method public deprecated void setSupportProgress(int);
-    method public deprecated void setSupportProgressBarIndeterminate(boolean);
-    method public deprecated void setSupportProgressBarIndeterminateVisibility(boolean);
-    method public deprecated void setSupportProgressBarVisibility(boolean);
-    method public android.support.v7.view.ActionMode startSupportActionMode(android.support.v7.view.ActionMode.Callback);
-    method public void supportNavigateUpTo(android.content.Intent);
-    method public boolean supportRequestWindowFeature(int);
-    method public boolean supportShouldUpRecreateTask(android.content.Intent);
-  }
-
-  public abstract interface AppCompatCallback {
-    method public abstract void onSupportActionModeFinished(android.support.v7.view.ActionMode);
-    method public abstract void onSupportActionModeStarted(android.support.v7.view.ActionMode);
-    method public abstract android.support.v7.view.ActionMode onWindowStartingSupportActionMode(android.support.v7.view.ActionMode.Callback);
-  }
-
-  public abstract class AppCompatDelegate {
-    method public abstract void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public abstract boolean applyDayNight();
-    method public static android.support.v7.app.AppCompatDelegate create(android.app.Activity, android.support.v7.app.AppCompatCallback);
-    method public static android.support.v7.app.AppCompatDelegate create(android.app.Dialog, android.support.v7.app.AppCompatCallback);
-    method public abstract android.view.View createView(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet);
-    method public abstract android.view.View findViewById(int);
-    method public static int getDefaultNightMode();
-    method public abstract android.support.v7.app.ActionBarDrawerToggle.Delegate getDrawerToggleDelegate();
-    method public abstract android.view.MenuInflater getMenuInflater();
-    method public abstract android.support.v7.app.ActionBar getSupportActionBar();
-    method public abstract boolean hasWindowFeature(int);
-    method public abstract void installViewFactory();
-    method public abstract void invalidateOptionsMenu();
-    method public static boolean isCompatVectorFromResourcesEnabled();
-    method public abstract boolean isHandleNativeActionModesEnabled();
-    method public abstract void onConfigurationChanged(android.content.res.Configuration);
-    method public abstract void onCreate(android.os.Bundle);
-    method public abstract void onDestroy();
-    method public abstract void onPostCreate(android.os.Bundle);
-    method public abstract void onPostResume();
-    method public abstract void onSaveInstanceState(android.os.Bundle);
-    method public abstract void onStart();
-    method public abstract void onStop();
-    method public abstract boolean requestWindowFeature(int);
-    method public static void setCompatVectorFromResourcesEnabled(boolean);
-    method public abstract void setContentView(android.view.View);
-    method public abstract void setContentView(int);
-    method public abstract void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public static void setDefaultNightMode(int);
-    method public abstract void setHandleNativeActionModesEnabled(boolean);
-    method public abstract void setLocalNightMode(int);
-    method public abstract void setSupportActionBar(android.support.v7.widget.Toolbar);
-    method public abstract void setTitle(java.lang.CharSequence);
-    method public abstract android.support.v7.view.ActionMode startSupportActionMode(android.support.v7.view.ActionMode.Callback);
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-    field public static final int FEATURE_SUPPORT_ACTION_BAR = 108; // 0x6c
-    field public static final int FEATURE_SUPPORT_ACTION_BAR_OVERLAY = 109; // 0x6d
-    field public static final int MODE_NIGHT_AUTO = 0; // 0x0
-    field public static final int MODE_NIGHT_FOLLOW_SYSTEM = -1; // 0xffffffff
-    field public static final int MODE_NIGHT_NO = 1; // 0x1
-    field public static final int MODE_NIGHT_YES = 2; // 0x2
-  }
-
-  public class AppCompatDialog extends android.app.Dialog implements android.support.v7.app.AppCompatCallback {
-    ctor public AppCompatDialog(android.content.Context);
-    ctor public AppCompatDialog(android.content.Context, int);
-    ctor protected AppCompatDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
-    method public android.support.v7.app.AppCompatDelegate getDelegate();
-    method public android.support.v7.app.ActionBar getSupportActionBar();
-    method public void onSupportActionModeFinished(android.support.v7.view.ActionMode);
-    method public void onSupportActionModeStarted(android.support.v7.view.ActionMode);
-    method public android.support.v7.view.ActionMode onWindowStartingSupportActionMode(android.support.v7.view.ActionMode.Callback);
-    method public boolean supportRequestWindowFeature(int);
-  }
-
-  public class AppCompatDialogFragment extends android.support.v4.app.DialogFragment {
-    ctor public AppCompatDialogFragment();
-  }
-
-  public class MediaRouteActionProvider extends android.support.v4.view.ActionProvider {
-    ctor public MediaRouteActionProvider(android.content.Context);
-    method public android.support.v7.app.MediaRouteDialogFactory getDialogFactory();
-    method public android.support.v7.app.MediaRouteButton getMediaRouteButton();
-    method public android.support.v7.media.MediaRouteSelector getRouteSelector();
-    method public android.view.View onCreateActionView();
-    method public android.support.v7.app.MediaRouteButton onCreateMediaRouteButton();
-    method public void setDialogFactory(android.support.v7.app.MediaRouteDialogFactory);
-    method public void setRouteSelector(android.support.v7.media.MediaRouteSelector);
-  }
-
-  public class MediaRouteButton extends android.view.View {
-    ctor public MediaRouteButton(android.content.Context);
-    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
-    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
-    method public android.support.v7.app.MediaRouteDialogFactory getDialogFactory();
-    method public android.support.v7.media.MediaRouteSelector getRouteSelector();
-    method public void onAttachedToWindow();
-    method public void onDetachedFromWindow();
-    method public void setDialogFactory(android.support.v7.app.MediaRouteDialogFactory);
-    method public void setRemoteIndicatorDrawable(android.graphics.drawable.Drawable);
-    method public void setRouteSelector(android.support.v7.media.MediaRouteSelector);
-    method public boolean showDialog();
-  }
-
-  public class MediaRouteChooserDialog extends android.support.v7.app.AppCompatDialog {
-    ctor public MediaRouteChooserDialog(android.content.Context);
-    ctor public MediaRouteChooserDialog(android.content.Context, int);
-    method public android.support.v7.media.MediaRouteSelector getRouteSelector();
-    method public boolean onFilterRoute(android.support.v7.media.MediaRouter.RouteInfo);
-    method public void onFilterRoutes(java.util.List<android.support.v7.media.MediaRouter.RouteInfo>);
-    method public void refreshRoutes();
-    method public void setRouteSelector(android.support.v7.media.MediaRouteSelector);
-  }
-
-  public class MediaRouteChooserDialogFragment extends android.support.v4.app.DialogFragment {
-    ctor public MediaRouteChooserDialogFragment();
-    method public android.support.v7.media.MediaRouteSelector getRouteSelector();
-    method public android.support.v7.app.MediaRouteChooserDialog onCreateChooserDialog(android.content.Context, android.os.Bundle);
-    method public void setRouteSelector(android.support.v7.media.MediaRouteSelector);
-  }
-
-  public class MediaRouteControllerDialog extends android.support.v7.app.AlertDialog {
-    ctor public MediaRouteControllerDialog(android.content.Context);
-    ctor public MediaRouteControllerDialog(android.content.Context, int);
-    method public android.view.View getMediaControlView();
-    method public android.support.v4.media.session.MediaSessionCompat.Token getMediaSession();
-    method public android.support.v7.media.MediaRouter.RouteInfo getRoute();
-    method public boolean isVolumeControlEnabled();
-    method public android.view.View onCreateMediaControlView(android.os.Bundle);
-    method public void setVolumeControlEnabled(boolean);
-  }
-
-  public class MediaRouteControllerDialogFragment extends android.support.v4.app.DialogFragment {
-    ctor public MediaRouteControllerDialogFragment();
-    method public android.support.v7.app.MediaRouteControllerDialog onCreateControllerDialog(android.content.Context, android.os.Bundle);
-  }
-
-  public class MediaRouteDialogFactory {
-    ctor public MediaRouteDialogFactory();
-    method public static android.support.v7.app.MediaRouteDialogFactory getDefault();
-    method public android.support.v7.app.MediaRouteChooserDialogFragment onCreateChooserDialogFragment();
-    method public android.support.v7.app.MediaRouteControllerDialogFragment onCreateControllerDialogFragment();
-  }
-
-  public class MediaRouteDiscoveryFragment extends android.support.v4.app.Fragment {
-    ctor public MediaRouteDiscoveryFragment();
-    method public android.support.v7.media.MediaRouter getMediaRouter();
-    method public android.support.v7.media.MediaRouteSelector getRouteSelector();
-    method public android.support.v7.media.MediaRouter.Callback onCreateCallback();
-    method public int onPrepareCallbackFlags();
-    method public void setRouteSelector(android.support.v7.media.MediaRouteSelector);
-  }
-
-  public class NotificationCompat extends android.support.v4.app.NotificationCompat {
-    ctor public NotificationCompat();
-    method public static android.support.v4.media.session.MediaSessionCompat.Token getMediaSession(android.app.Notification);
-  }
-
-  public static class NotificationCompat.Builder extends android.support.v4.app.NotificationCompat.Builder {
-    ctor public NotificationCompat.Builder(android.content.Context);
-  }
-
-  public static class NotificationCompat.DecoratedCustomViewStyle extends android.support.v4.app.NotificationCompat.Style {
-    ctor public NotificationCompat.DecoratedCustomViewStyle();
-  }
-
-  public static class NotificationCompat.DecoratedMediaCustomViewStyle extends android.support.v7.app.NotificationCompat.MediaStyle {
-    ctor public NotificationCompat.DecoratedMediaCustomViewStyle();
-  }
-
-  public static class NotificationCompat.MediaStyle extends android.support.v4.app.NotificationCompat.Style {
-    ctor public NotificationCompat.MediaStyle();
-    ctor public NotificationCompat.MediaStyle(android.support.v4.app.NotificationCompat.Builder);
-    method public android.support.v7.app.NotificationCompat.MediaStyle setCancelButtonIntent(android.app.PendingIntent);
-    method public android.support.v7.app.NotificationCompat.MediaStyle setMediaSession(android.support.v4.media.session.MediaSessionCompat.Token);
-    method public android.support.v7.app.NotificationCompat.MediaStyle setShowActionsInCompactView(int...);
-    method public android.support.v7.app.NotificationCompat.MediaStyle setShowCancelButton(boolean);
-  }
-
-}
-
-package android.support.v7.content.res {
-
-  public final class AppCompatResources {
-    method public static android.content.res.ColorStateList getColorStateList(android.content.Context, int);
-    method public static android.graphics.drawable.Drawable getDrawable(android.content.Context, int);
-  }
-
-}
-
-package android.support.v7.graphics {
-
-  public final class Palette {
-    method public static android.support.v7.graphics.Palette.Builder from(android.graphics.Bitmap);
-    method public static android.support.v7.graphics.Palette from(java.util.List<android.support.v7.graphics.Palette.Swatch>);
-    method public static deprecated android.support.v7.graphics.Palette generate(android.graphics.Bitmap);
-    method public static deprecated android.support.v7.graphics.Palette generate(android.graphics.Bitmap, int);
-    method public static deprecated android.os.AsyncTask<android.graphics.Bitmap, java.lang.Void, android.support.v7.graphics.Palette> generateAsync(android.graphics.Bitmap, android.support.v7.graphics.Palette.PaletteAsyncListener);
-    method public static deprecated android.os.AsyncTask<android.graphics.Bitmap, java.lang.Void, android.support.v7.graphics.Palette> generateAsync(android.graphics.Bitmap, int, android.support.v7.graphics.Palette.PaletteAsyncListener);
-    method public int getColorForTarget(android.support.v7.graphics.Target, int);
-    method public int getDarkMutedColor(int);
-    method public android.support.v7.graphics.Palette.Swatch getDarkMutedSwatch();
-    method public int getDarkVibrantColor(int);
-    method public android.support.v7.graphics.Palette.Swatch getDarkVibrantSwatch();
-    method public int getDominantColor(int);
-    method public android.support.v7.graphics.Palette.Swatch getDominantSwatch();
-    method public int getLightMutedColor(int);
-    method public android.support.v7.graphics.Palette.Swatch getLightMutedSwatch();
-    method public int getLightVibrantColor(int);
-    method public android.support.v7.graphics.Palette.Swatch getLightVibrantSwatch();
-    method public int getMutedColor(int);
-    method public android.support.v7.graphics.Palette.Swatch getMutedSwatch();
-    method public android.support.v7.graphics.Palette.Swatch getSwatchForTarget(android.support.v7.graphics.Target);
-    method public java.util.List<android.support.v7.graphics.Palette.Swatch> getSwatches();
-    method public java.util.List<android.support.v7.graphics.Target> getTargets();
-    method public int getVibrantColor(int);
-    method public android.support.v7.graphics.Palette.Swatch getVibrantSwatch();
-  }
-
-  public static final class Palette.Builder {
-    ctor public Palette.Builder(android.graphics.Bitmap);
-    ctor public Palette.Builder(java.util.List<android.support.v7.graphics.Palette.Swatch>);
-    method public android.support.v7.graphics.Palette.Builder addFilter(android.support.v7.graphics.Palette.Filter);
-    method public android.support.v7.graphics.Palette.Builder addTarget(android.support.v7.graphics.Target);
-    method public android.support.v7.graphics.Palette.Builder clearFilters();
-    method public android.support.v7.graphics.Palette.Builder clearRegion();
-    method public android.support.v7.graphics.Palette.Builder clearTargets();
-    method public android.support.v7.graphics.Palette generate();
-    method public android.os.AsyncTask<android.graphics.Bitmap, java.lang.Void, android.support.v7.graphics.Palette> generate(android.support.v7.graphics.Palette.PaletteAsyncListener);
-    method public android.support.v7.graphics.Palette.Builder maximumColorCount(int);
-    method public android.support.v7.graphics.Palette.Builder resizeBitmapArea(int);
-    method public deprecated android.support.v7.graphics.Palette.Builder resizeBitmapSize(int);
-    method public android.support.v7.graphics.Palette.Builder setRegion(int, int, int, int);
-  }
-
-  public static abstract interface Palette.Filter {
-    method public abstract boolean isAllowed(int, float[]);
-  }
-
-  public static abstract interface Palette.PaletteAsyncListener {
-    method public abstract void onGenerated(android.support.v7.graphics.Palette);
-  }
-
-  public static final class Palette.Swatch {
-    ctor public Palette.Swatch(int, int);
-    method public int getBodyTextColor();
-    method public float[] getHsl();
-    method public int getPopulation();
-    method public int getRgb();
-    method public int getTitleTextColor();
-  }
-
-  public final class Target {
-    method public float getLightnessWeight();
-    method public float getMaximumLightness();
-    method public float getMaximumSaturation();
-    method public float getMinimumLightness();
-    method public float getMinimumSaturation();
-    method public float getPopulationWeight();
-    method public float getSaturationWeight();
-    method public float getTargetLightness();
-    method public float getTargetSaturation();
-    method public boolean isExclusive();
-    field public static final android.support.v7.graphics.Target DARK_MUTED;
-    field public static final android.support.v7.graphics.Target DARK_VIBRANT;
-    field public static final android.support.v7.graphics.Target LIGHT_MUTED;
-    field public static final android.support.v7.graphics.Target LIGHT_VIBRANT;
-    field public static final android.support.v7.graphics.Target MUTED;
-    field public static final android.support.v7.graphics.Target VIBRANT;
-  }
-
-  public static final class Target.Builder {
-    ctor public Target.Builder();
-    ctor public Target.Builder(android.support.v7.graphics.Target);
-    method public android.support.v7.graphics.Target build();
-    method public android.support.v7.graphics.Target.Builder setExclusive(boolean);
-    method public android.support.v7.graphics.Target.Builder setLightnessWeight(float);
-    method public android.support.v7.graphics.Target.Builder setMaximumLightness(float);
-    method public android.support.v7.graphics.Target.Builder setMaximumSaturation(float);
-    method public android.support.v7.graphics.Target.Builder setMinimumLightness(float);
-    method public android.support.v7.graphics.Target.Builder setMinimumSaturation(float);
-    method public android.support.v7.graphics.Target.Builder setPopulationWeight(float);
-    method public android.support.v7.graphics.Target.Builder setSaturationWeight(float);
-    method public android.support.v7.graphics.Target.Builder setTargetLightness(float);
-    method public android.support.v7.graphics.Target.Builder setTargetSaturation(float);
-  }
-
-}
-
-package android.support.v7.graphics.drawable {
-
-  public class DrawerArrowDrawable extends android.graphics.drawable.Drawable {
-    ctor public DrawerArrowDrawable(android.content.Context);
-    method public void draw(android.graphics.Canvas);
-    method public float getArrowHeadLength();
-    method public float getArrowShaftLength();
-    method public float getBarLength();
-    method public float getBarThickness();
-    method public int getColor();
-    method public int getDirection();
-    method public float getGapSize();
-    method public int getOpacity();
-    method public final android.graphics.Paint getPaint();
-    method public float getProgress();
-    method public boolean isSpinEnabled();
-    method public void setAlpha(int);
-    method public void setArrowHeadLength(float);
-    method public void setArrowShaftLength(float);
-    method public void setBarLength(float);
-    method public void setBarThickness(float);
-    method public void setColor(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setDirection(int);
-    method public void setGapSize(float);
-    method public void setProgress(float);
-    method public void setSpinEnabled(boolean);
-    method public void setVerticalMirror(boolean);
-    field public static final int ARROW_DIRECTION_END = 3; // 0x3
-    field public static final int ARROW_DIRECTION_LEFT = 0; // 0x0
-    field public static final int ARROW_DIRECTION_RIGHT = 1; // 0x1
-    field public static final int ARROW_DIRECTION_START = 2; // 0x2
-  }
-
-}
-
-package android.support.v7.media {
-
-  public final class MediaControlIntent {
-    field public static final java.lang.String ACTION_END_SESSION = "android.media.intent.action.END_SESSION";
-    field public static final java.lang.String ACTION_ENQUEUE = "android.media.intent.action.ENQUEUE";
-    field public static final java.lang.String ACTION_GET_SESSION_STATUS = "android.media.intent.action.GET_SESSION_STATUS";
-    field public static final java.lang.String ACTION_GET_STATUS = "android.media.intent.action.GET_STATUS";
-    field public static final java.lang.String ACTION_PAUSE = "android.media.intent.action.PAUSE";
-    field public static final java.lang.String ACTION_PLAY = "android.media.intent.action.PLAY";
-    field public static final java.lang.String ACTION_REMOVE = "android.media.intent.action.REMOVE";
-    field public static final java.lang.String ACTION_RESUME = "android.media.intent.action.RESUME";
-    field public static final java.lang.String ACTION_SEEK = "android.media.intent.action.SEEK";
-    field public static final java.lang.String ACTION_SEND_MESSAGE = "android.media.intent.action.SEND_MESSAGE";
-    field public static final java.lang.String ACTION_START_SESSION = "android.media.intent.action.START_SESSION";
-    field public static final java.lang.String ACTION_STOP = "android.media.intent.action.STOP";
-    field public static final java.lang.String CATEGORY_LIVE_AUDIO = "android.media.intent.category.LIVE_AUDIO";
-    field public static final java.lang.String CATEGORY_LIVE_VIDEO = "android.media.intent.category.LIVE_VIDEO";
-    field public static final java.lang.String CATEGORY_REMOTE_PLAYBACK = "android.media.intent.category.REMOTE_PLAYBACK";
-    field public static final int ERROR_INVALID_ITEM_ID = 3; // 0x3
-    field public static final int ERROR_INVALID_SESSION_ID = 2; // 0x2
-    field public static final int ERROR_UNKNOWN = 0; // 0x0
-    field public static final int ERROR_UNSUPPORTED_OPERATION = 1; // 0x1
-    field public static final java.lang.String EXTRA_ERROR_CODE = "android.media.intent.extra.ERROR_CODE";
-    field public static final java.lang.String EXTRA_ITEM_CONTENT_POSITION = "android.media.intent.extra.ITEM_POSITION";
-    field public static final java.lang.String EXTRA_ITEM_HTTP_HEADERS = "android.media.intent.extra.HTTP_HEADERS";
-    field public static final java.lang.String EXTRA_ITEM_ID = "android.media.intent.extra.ITEM_ID";
-    field public static final java.lang.String EXTRA_ITEM_METADATA = "android.media.intent.extra.ITEM_METADATA";
-    field public static final java.lang.String EXTRA_ITEM_STATUS = "android.media.intent.extra.ITEM_STATUS";
-    field public static final java.lang.String EXTRA_ITEM_STATUS_UPDATE_RECEIVER = "android.media.intent.extra.ITEM_STATUS_UPDATE_RECEIVER";
-    field public static final java.lang.String EXTRA_MESSAGE = "android.media.intent.extra.MESSAGE";
-    field public static final java.lang.String EXTRA_MESSAGE_RECEIVER = "android.media.intent.extra.MESSAGE_RECEIVER";
-    field public static final java.lang.String EXTRA_SESSION_ID = "android.media.intent.extra.SESSION_ID";
-    field public static final java.lang.String EXTRA_SESSION_STATUS = "android.media.intent.extra.SESSION_STATUS";
-    field public static final java.lang.String EXTRA_SESSION_STATUS_UPDATE_RECEIVER = "android.media.intent.extra.SESSION_STATUS_UPDATE_RECEIVER";
-  }
-
-  public final class MediaItemMetadata {
-    field public static final java.lang.String KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
-    field public static final java.lang.String KEY_ALBUM_TITLE = "android.media.metadata.ALBUM_TITLE";
-    field public static final java.lang.String KEY_ARTIST = "android.media.metadata.ARTIST";
-    field public static final java.lang.String KEY_ARTWORK_URI = "android.media.metadata.ARTWORK_URI";
-    field public static final java.lang.String KEY_AUTHOR = "android.media.metadata.AUTHOR";
-    field public static final java.lang.String KEY_COMPOSER = "android.media.metadata.COMPOSER";
-    field public static final java.lang.String KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
-    field public static final java.lang.String KEY_DURATION = "android.media.metadata.DURATION";
-    field public static final java.lang.String KEY_TITLE = "android.media.metadata.TITLE";
-    field public static final java.lang.String KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
-    field public static final java.lang.String KEY_YEAR = "android.media.metadata.YEAR";
-  }
-
-  public final class MediaItemStatus {
-    method public android.os.Bundle asBundle();
-    method public static android.support.v7.media.MediaItemStatus fromBundle(android.os.Bundle);
-    method public long getContentDuration();
-    method public long getContentPosition();
-    method public android.os.Bundle getExtras();
-    method public int getPlaybackState();
-    method public long getTimestamp();
-    field public static final java.lang.String EXTRA_HTTP_RESPONSE_HEADERS = "android.media.status.extra.HTTP_RESPONSE_HEADERS";
-    field public static final java.lang.String EXTRA_HTTP_STATUS_CODE = "android.media.status.extra.HTTP_STATUS_CODE";
-    field public static final int PLAYBACK_STATE_BUFFERING = 3; // 0x3
-    field public static final int PLAYBACK_STATE_CANCELED = 5; // 0x5
-    field public static final int PLAYBACK_STATE_ERROR = 7; // 0x7
-    field public static final int PLAYBACK_STATE_FINISHED = 4; // 0x4
-    field public static final int PLAYBACK_STATE_INVALIDATED = 6; // 0x6
-    field public static final int PLAYBACK_STATE_PAUSED = 2; // 0x2
-    field public static final int PLAYBACK_STATE_PENDING = 0; // 0x0
-    field public static final int PLAYBACK_STATE_PLAYING = 1; // 0x1
-  }
-
-  public static final class MediaItemStatus.Builder {
-    ctor public MediaItemStatus.Builder(int);
-    ctor public MediaItemStatus.Builder(android.support.v7.media.MediaItemStatus);
-    method public android.support.v7.media.MediaItemStatus build();
-    method public android.support.v7.media.MediaItemStatus.Builder setContentDuration(long);
-    method public android.support.v7.media.MediaItemStatus.Builder setContentPosition(long);
-    method public android.support.v7.media.MediaItemStatus.Builder setExtras(android.os.Bundle);
-    method public android.support.v7.media.MediaItemStatus.Builder setPlaybackState(int);
-    method public android.support.v7.media.MediaItemStatus.Builder setTimestamp(long);
-  }
-
-  public final class MediaRouteDescriptor {
-    method public android.os.Bundle asBundle();
-    method public boolean canDisconnectAndKeepPlaying();
-    method public static android.support.v7.media.MediaRouteDescriptor fromBundle(android.os.Bundle);
-    method public int getConnectionState();
-    method public java.util.List<android.content.IntentFilter> getControlFilters();
-    method public java.lang.String getDescription();
-    method public int getDeviceType();
-    method public android.os.Bundle getExtras();
-    method public android.net.Uri getIconUri();
-    method public java.lang.String getId();
-    method public java.lang.String getName();
-    method public int getPlaybackStream();
-    method public int getPlaybackType();
-    method public int getPresentationDisplayId();
-    method public android.content.IntentSender getSettingsActivity();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public deprecated boolean isConnecting();
-    method public boolean isEnabled();
-    method public boolean isValid();
-  }
-
-  public static final class MediaRouteDescriptor.Builder {
-    ctor public MediaRouteDescriptor.Builder(java.lang.String, java.lang.String);
-    ctor public MediaRouteDescriptor.Builder(android.support.v7.media.MediaRouteDescriptor);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder addControlFilter(android.content.IntentFilter);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder addControlFilters(java.util.Collection<android.content.IntentFilter>);
-    method public android.support.v7.media.MediaRouteDescriptor build();
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setCanDisconnect(boolean);
-    method public deprecated android.support.v7.media.MediaRouteDescriptor.Builder setConnecting(boolean);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setConnectionState(int);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setDescription(java.lang.String);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setDeviceType(int);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setEnabled(boolean);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setExtras(android.os.Bundle);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setIconUri(android.net.Uri);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setId(java.lang.String);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setName(java.lang.String);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setPlaybackStream(int);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setPlaybackType(int);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setPresentationDisplayId(int);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setSettingsActivity(android.content.IntentSender);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setVolume(int);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setVolumeHandling(int);
-    method public android.support.v7.media.MediaRouteDescriptor.Builder setVolumeMax(int);
-  }
-
-  public final class MediaRouteDiscoveryRequest {
-    ctor public MediaRouteDiscoveryRequest(android.support.v7.media.MediaRouteSelector, boolean);
-    method public android.os.Bundle asBundle();
-    method public static android.support.v7.media.MediaRouteDiscoveryRequest fromBundle(android.os.Bundle);
-    method public android.support.v7.media.MediaRouteSelector getSelector();
-    method public boolean isActiveScan();
-    method public boolean isValid();
-  }
-
-  public abstract class MediaRouteProvider {
-    ctor public MediaRouteProvider(android.content.Context);
-    method public final android.content.Context getContext();
-    method public final android.support.v7.media.MediaRouteProviderDescriptor getDescriptor();
-    method public final android.support.v7.media.MediaRouteDiscoveryRequest getDiscoveryRequest();
-    method public final android.os.Handler getHandler();
-    method public final android.support.v7.media.MediaRouteProvider.ProviderMetadata getMetadata();
-    method public android.support.v7.media.MediaRouteProvider.RouteController onCreateRouteController(java.lang.String);
-    method public void onDiscoveryRequestChanged(android.support.v7.media.MediaRouteDiscoveryRequest);
-    method public final void setCallback(android.support.v7.media.MediaRouteProvider.Callback);
-    method public final void setDescriptor(android.support.v7.media.MediaRouteProviderDescriptor);
-    method public final void setDiscoveryRequest(android.support.v7.media.MediaRouteDiscoveryRequest);
-  }
-
-  public static abstract class MediaRouteProvider.Callback {
-    ctor public MediaRouteProvider.Callback();
-    method public void onDescriptorChanged(android.support.v7.media.MediaRouteProvider, android.support.v7.media.MediaRouteProviderDescriptor);
-  }
-
-  public static final class MediaRouteProvider.ProviderMetadata {
-    method public android.content.ComponentName getComponentName();
-    method public java.lang.String getPackageName();
-  }
-
-  public static abstract class MediaRouteProvider.RouteController {
-    ctor public MediaRouteProvider.RouteController();
-    method public boolean onControlRequest(android.content.Intent, android.support.v7.media.MediaRouter.ControlRequestCallback);
-    method public void onRelease();
-    method public void onSelect();
-    method public void onSetVolume(int);
-    method public void onUnselect();
-    method public void onUnselect(int);
-    method public void onUpdateVolume(int);
-  }
-
-  public final class MediaRouteProviderDescriptor {
-    method public android.os.Bundle asBundle();
-    method public static android.support.v7.media.MediaRouteProviderDescriptor fromBundle(android.os.Bundle);
-    method public java.util.List<android.support.v7.media.MediaRouteDescriptor> getRoutes();
-    method public boolean isValid();
-  }
-
-  public static final class MediaRouteProviderDescriptor.Builder {
-    ctor public MediaRouteProviderDescriptor.Builder();
-    ctor public MediaRouteProviderDescriptor.Builder(android.support.v7.media.MediaRouteProviderDescriptor);
-    method public android.support.v7.media.MediaRouteProviderDescriptor.Builder addRoute(android.support.v7.media.MediaRouteDescriptor);
-    method public android.support.v7.media.MediaRouteProviderDescriptor.Builder addRoutes(java.util.Collection<android.support.v7.media.MediaRouteDescriptor>);
-    method public android.support.v7.media.MediaRouteProviderDescriptor build();
-  }
-
-  public abstract class MediaRouteProviderService extends android.app.Service {
-    ctor public MediaRouteProviderService();
-    method public android.support.v7.media.MediaRouteProvider getMediaRouteProvider();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.support.v7.media.MediaRouteProvider onCreateMediaRouteProvider();
-    field public static final java.lang.String SERVICE_INTERFACE = "android.media.MediaRouteProviderService";
-  }
-
-  public final class MediaRouteSelector {
-    method public android.os.Bundle asBundle();
-    method public boolean contains(android.support.v7.media.MediaRouteSelector);
-    method public static android.support.v7.media.MediaRouteSelector fromBundle(android.os.Bundle);
-    method public java.util.List<java.lang.String> getControlCategories();
-    method public boolean hasControlCategory(java.lang.String);
-    method public boolean isEmpty();
-    method public boolean isValid();
-    method public boolean matchesControlFilters(java.util.List<android.content.IntentFilter>);
-    field public static final android.support.v7.media.MediaRouteSelector EMPTY;
-  }
-
-  public static final class MediaRouteSelector.Builder {
-    ctor public MediaRouteSelector.Builder();
-    ctor public MediaRouteSelector.Builder(android.support.v7.media.MediaRouteSelector);
-    method public android.support.v7.media.MediaRouteSelector.Builder addControlCategories(java.util.Collection<java.lang.String>);
-    method public android.support.v7.media.MediaRouteSelector.Builder addControlCategory(java.lang.String);
-    method public android.support.v7.media.MediaRouteSelector.Builder addSelector(android.support.v7.media.MediaRouteSelector);
-    method public android.support.v7.media.MediaRouteSelector build();
-  }
-
-  public final class MediaRouter {
-    method public void addCallback(android.support.v7.media.MediaRouteSelector, android.support.v7.media.MediaRouter.Callback);
-    method public void addCallback(android.support.v7.media.MediaRouteSelector, android.support.v7.media.MediaRouter.Callback, int);
-    method public void addProvider(android.support.v7.media.MediaRouteProvider);
-    method public void addRemoteControlClient(java.lang.Object);
-    method public android.support.v7.media.MediaRouter.RouteInfo getBluetoothRoute();
-    method public android.support.v7.media.MediaRouter.RouteInfo getDefaultRoute();
-    method public static android.support.v7.media.MediaRouter getInstance(android.content.Context);
-    method public android.support.v4.media.session.MediaSessionCompat.Token getMediaSessionToken();
-    method public java.util.List<android.support.v7.media.MediaRouter.ProviderInfo> getProviders();
-    method public java.util.List<android.support.v7.media.MediaRouter.RouteInfo> getRoutes();
-    method public android.support.v7.media.MediaRouter.RouteInfo getSelectedRoute();
-    method public boolean isRouteAvailable(android.support.v7.media.MediaRouteSelector, int);
-    method public void removeCallback(android.support.v7.media.MediaRouter.Callback);
-    method public void removeProvider(android.support.v7.media.MediaRouteProvider);
-    method public void removeRemoteControlClient(java.lang.Object);
-    method public void selectRoute(android.support.v7.media.MediaRouter.RouteInfo);
-    method public void setMediaSession(java.lang.Object);
-    method public void setMediaSessionCompat(android.support.v4.media.session.MediaSessionCompat);
-    method public void unselect(int);
-    method public android.support.v7.media.MediaRouter.RouteInfo updateSelectedRoute(android.support.v7.media.MediaRouteSelector);
-    field public static final int AVAILABILITY_FLAG_IGNORE_DEFAULT_ROUTE = 1; // 0x1
-    field public static final int AVAILABILITY_FLAG_REQUIRE_MATCH = 2; // 0x2
-    field public static final int CALLBACK_FLAG_FORCE_DISCOVERY = 8; // 0x8
-    field public static final int CALLBACK_FLAG_PERFORM_ACTIVE_SCAN = 1; // 0x1
-    field public static final int CALLBACK_FLAG_REQUEST_DISCOVERY = 4; // 0x4
-    field public static final int CALLBACK_FLAG_UNFILTERED_EVENTS = 2; // 0x2
-    field public static final int UNSELECT_REASON_DISCONNECTED = 1; // 0x1
-    field public static final int UNSELECT_REASON_ROUTE_CHANGED = 3; // 0x3
-    field public static final int UNSELECT_REASON_STOPPED = 2; // 0x2
-    field public static final int UNSELECT_REASON_UNKNOWN = 0; // 0x0
-  }
-
-  public static abstract class MediaRouter.Callback {
-    ctor public MediaRouter.Callback();
-    method public void onProviderAdded(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.ProviderInfo);
-    method public void onProviderChanged(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.ProviderInfo);
-    method public void onProviderRemoved(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.ProviderInfo);
-    method public void onRouteAdded(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo);
-    method public void onRouteChanged(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo);
-    method public void onRoutePresentationDisplayChanged(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo);
-    method public void onRouteRemoved(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo);
-    method public void onRouteSelected(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo);
-    method public void onRouteUnselected(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo);
-    method public void onRouteUnselected(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo, int);
-    method public void onRouteVolumeChanged(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo);
-  }
-
-  public static abstract class MediaRouter.ControlRequestCallback {
-    ctor public MediaRouter.ControlRequestCallback();
-    method public void onError(java.lang.String, android.os.Bundle);
-    method public void onResult(android.os.Bundle);
-  }
-
-  public static final class MediaRouter.ProviderInfo {
-    method public android.content.ComponentName getComponentName();
-    method public java.lang.String getPackageName();
-    method public android.support.v7.media.MediaRouteProvider getProviderInstance();
-    method public java.util.List<android.support.v7.media.MediaRouter.RouteInfo> getRoutes();
-  }
-
-  public static class MediaRouter.RouteInfo {
-    method public boolean canDisconnect();
-    method public int getConnectionState();
-    method public java.util.List<android.content.IntentFilter> getControlFilters();
-    method public java.lang.String getDescription();
-    method public int getDeviceType();
-    method public android.os.Bundle getExtras();
-    method public android.net.Uri getIconUri();
-    method public java.lang.String getId();
-    method public java.lang.String getName();
-    method public int getPlaybackStream();
-    method public int getPlaybackType();
-    method public android.view.Display getPresentationDisplay();
-    method public android.support.v7.media.MediaRouter.ProviderInfo getProvider();
-    method public android.content.IntentSender getSettingsIntent();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public boolean isBluetooth();
-    method public boolean isConnecting();
-    method public boolean isDefault();
-    method public boolean isDeviceSpeaker();
-    method public boolean isEnabled();
-    method public boolean isSelected();
-    method public boolean matchesSelector(android.support.v7.media.MediaRouteSelector);
-    method public void requestSetVolume(int);
-    method public void requestUpdateVolume(int);
-    method public void select();
-    method public void sendControlRequest(android.content.Intent, android.support.v7.media.MediaRouter.ControlRequestCallback);
-    method public boolean supportsControlAction(java.lang.String, java.lang.String);
-    method public boolean supportsControlCategory(java.lang.String);
-    method public boolean supportsControlRequest(android.content.Intent);
-    field public static final int CONNECTION_STATE_CONNECTED = 2; // 0x2
-    field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1
-    field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0
-    field public static final int DEVICE_TYPE_SPEAKER = 2; // 0x2
-    field public static final int DEVICE_TYPE_TV = 1; // 0x1
-    field public static final int PLAYBACK_TYPE_LOCAL = 0; // 0x0
-    field public static final int PLAYBACK_TYPE_REMOTE = 1; // 0x1
-    field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
-    field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1
-  }
-
-  public final class MediaSessionStatus {
-    method public android.os.Bundle asBundle();
-    method public static android.support.v7.media.MediaSessionStatus fromBundle(android.os.Bundle);
-    method public android.os.Bundle getExtras();
-    method public int getSessionState();
-    method public long getTimestamp();
-    method public boolean isQueuePaused();
-    field public static final int SESSION_STATE_ACTIVE = 0; // 0x0
-    field public static final int SESSION_STATE_ENDED = 1; // 0x1
-    field public static final int SESSION_STATE_INVALIDATED = 2; // 0x2
-  }
-
-  public static final class MediaSessionStatus.Builder {
-    ctor public MediaSessionStatus.Builder(int);
-    ctor public MediaSessionStatus.Builder(android.support.v7.media.MediaSessionStatus);
-    method public android.support.v7.media.MediaSessionStatus build();
-    method public android.support.v7.media.MediaSessionStatus.Builder setExtras(android.os.Bundle);
-    method public android.support.v7.media.MediaSessionStatus.Builder setQueuePaused(boolean);
-    method public android.support.v7.media.MediaSessionStatus.Builder setSessionState(int);
-    method public android.support.v7.media.MediaSessionStatus.Builder setTimestamp(long);
-  }
-
-  public class RemotePlaybackClient {
-    ctor public RemotePlaybackClient(android.content.Context, android.support.v7.media.MediaRouter.RouteInfo);
-    method public void endSession(android.os.Bundle, android.support.v7.media.RemotePlaybackClient.SessionActionCallback);
-    method public void enqueue(android.net.Uri, java.lang.String, android.os.Bundle, long, android.os.Bundle, android.support.v7.media.RemotePlaybackClient.ItemActionCallback);
-    method public java.lang.String getSessionId();
-    method public void getSessionStatus(android.os.Bundle, android.support.v7.media.RemotePlaybackClient.SessionActionCallback);
-    method public void getStatus(java.lang.String, android.os.Bundle, android.support.v7.media.RemotePlaybackClient.ItemActionCallback);
-    method public boolean hasSession();
-    method public boolean isMessagingSupported();
-    method public boolean isQueuingSupported();
-    method public boolean isRemotePlaybackSupported();
-    method public boolean isSessionManagementSupported();
-    method public void pause(android.os.Bundle, android.support.v7.media.RemotePlaybackClient.SessionActionCallback);
-    method public void play(android.net.Uri, java.lang.String, android.os.Bundle, long, android.os.Bundle, android.support.v7.media.RemotePlaybackClient.ItemActionCallback);
-    method public void release();
-    method public void remove(java.lang.String, android.os.Bundle, android.support.v7.media.RemotePlaybackClient.ItemActionCallback);
-    method public void resume(android.os.Bundle, android.support.v7.media.RemotePlaybackClient.SessionActionCallback);
-    method public void seek(java.lang.String, long, android.os.Bundle, android.support.v7.media.RemotePlaybackClient.ItemActionCallback);
-    method public void sendMessage(android.os.Bundle, android.support.v7.media.RemotePlaybackClient.SessionActionCallback);
-    method public void setOnMessageReceivedListener(android.support.v7.media.RemotePlaybackClient.OnMessageReceivedListener);
-    method public void setSessionId(java.lang.String);
-    method public void setStatusCallback(android.support.v7.media.RemotePlaybackClient.StatusCallback);
-    method public void startSession(android.os.Bundle, android.support.v7.media.RemotePlaybackClient.SessionActionCallback);
-    method public void stop(android.os.Bundle, android.support.v7.media.RemotePlaybackClient.SessionActionCallback);
-  }
-
-  public static abstract class RemotePlaybackClient.ActionCallback {
-    ctor public RemotePlaybackClient.ActionCallback();
-    method public void onError(java.lang.String, int, android.os.Bundle);
-  }
-
-  public static abstract class RemotePlaybackClient.ItemActionCallback extends android.support.v7.media.RemotePlaybackClient.ActionCallback {
-    ctor public RemotePlaybackClient.ItemActionCallback();
-    method public void onResult(android.os.Bundle, java.lang.String, android.support.v7.media.MediaSessionStatus, java.lang.String, android.support.v7.media.MediaItemStatus);
-  }
-
-  public static abstract interface RemotePlaybackClient.OnMessageReceivedListener {
-    method public abstract void onMessageReceived(java.lang.String, android.os.Bundle);
-  }
-
-  public static abstract class RemotePlaybackClient.SessionActionCallback extends android.support.v7.media.RemotePlaybackClient.ActionCallback {
-    ctor public RemotePlaybackClient.SessionActionCallback();
-    method public void onResult(android.os.Bundle, java.lang.String, android.support.v7.media.MediaSessionStatus);
-  }
-
-  public static abstract class RemotePlaybackClient.StatusCallback {
-    ctor public RemotePlaybackClient.StatusCallback();
-    method public void onItemStatusChanged(android.os.Bundle, java.lang.String, android.support.v7.media.MediaSessionStatus, java.lang.String, android.support.v7.media.MediaItemStatus);
-    method public void onSessionChanged(java.lang.String);
-    method public void onSessionStatusChanged(android.os.Bundle, java.lang.String, android.support.v7.media.MediaSessionStatus);
-  }
-
-}
-
-package android.support.v7.preference {
-
-  public class CheckBoxPreference extends android.support.v7.preference.TwoStatePreference {
-    ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet);
-    ctor public CheckBoxPreference(android.content.Context);
-  }
-
-  public abstract class DialogPreference extends android.support.v7.preference.Preference {
-    ctor public DialogPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public DialogPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public DialogPreference(android.content.Context, android.util.AttributeSet);
-    ctor public DialogPreference(android.content.Context);
-    method public android.graphics.drawable.Drawable getDialogIcon();
-    method public int getDialogLayoutResource();
-    method public java.lang.CharSequence getDialogMessage();
-    method public java.lang.CharSequence getDialogTitle();
-    method public java.lang.CharSequence getNegativeButtonText();
-    method public java.lang.CharSequence getPositiveButtonText();
-    method public void setDialogIcon(android.graphics.drawable.Drawable);
-    method public void setDialogIcon(int);
-    method public void setDialogLayoutResource(int);
-    method public void setDialogMessage(java.lang.CharSequence);
-    method public void setDialogMessage(int);
-    method public void setDialogTitle(java.lang.CharSequence);
-    method public void setDialogTitle(int);
-    method public void setNegativeButtonText(java.lang.CharSequence);
-    method public void setNegativeButtonText(int);
-    method public void setPositiveButtonText(java.lang.CharSequence);
-    method public void setPositiveButtonText(int);
-  }
-
-  public static abstract interface DialogPreference.TargetFragment {
-    method public abstract android.support.v7.preference.Preference findPreference(java.lang.CharSequence);
-  }
-
-  public class DropDownPreference extends android.support.v7.preference.ListPreference {
-    ctor public DropDownPreference(android.content.Context);
-    ctor public DropDownPreference(android.content.Context, android.util.AttributeSet);
-    ctor public DropDownPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public DropDownPreference(android.content.Context, android.util.AttributeSet, int, int);
-    method protected android.widget.ArrayAdapter createAdapter();
-  }
-
-  public class EditTextPreference extends android.support.v7.preference.DialogPreference {
-    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet);
-    ctor public EditTextPreference(android.content.Context);
-    method public java.lang.String getText();
-    method public void setText(java.lang.String);
-  }
-
-  public class EditTextPreferenceDialogFragmentCompat extends android.support.v7.preference.PreferenceDialogFragmentCompat {
-    ctor public EditTextPreferenceDialogFragmentCompat();
-    method public static android.support.v7.preference.EditTextPreferenceDialogFragmentCompat newInstance(java.lang.String);
-    method public void onDialogClosed(boolean);
-  }
-
-  public class ListPreference extends android.support.v7.preference.DialogPreference {
-    ctor public ListPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public ListPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public ListPreference(android.content.Context, android.util.AttributeSet);
-    ctor public ListPreference(android.content.Context);
-    method public int findIndexOfValue(java.lang.String);
-    method public java.lang.CharSequence[] getEntries();
-    method public java.lang.CharSequence getEntry();
-    method public java.lang.CharSequence[] getEntryValues();
-    method public java.lang.String getValue();
-    method public void setEntries(java.lang.CharSequence[]);
-    method public void setEntries(int);
-    method public void setEntryValues(java.lang.CharSequence[]);
-    method public void setEntryValues(int);
-    method public void setValue(java.lang.String);
-    method public void setValueIndex(int);
-  }
-
-  public class ListPreferenceDialogFragmentCompat extends android.support.v7.preference.PreferenceDialogFragmentCompat {
-    ctor public ListPreferenceDialogFragmentCompat();
-    method public static android.support.v7.preference.ListPreferenceDialogFragmentCompat newInstance(java.lang.String);
-    method public void onDialogClosed(boolean);
-  }
-
-  public class MultiSelectListPreferenceDialogFragmentCompat extends android.support.v7.preference.PreferenceDialogFragmentCompat {
-    ctor public MultiSelectListPreferenceDialogFragmentCompat();
-    method public static android.support.v7.preference.MultiSelectListPreferenceDialogFragmentCompat newInstance(java.lang.String);
-    method public void onDialogClosed(boolean);
-  }
-
-  public class Preference implements java.lang.Comparable {
-    ctor public Preference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public Preference(android.content.Context, android.util.AttributeSet, int);
-    ctor public Preference(android.content.Context, android.util.AttributeSet);
-    ctor public Preference(android.content.Context);
-    method public boolean callChangeListener(java.lang.Object);
-    method public int compareTo(android.support.v7.preference.Preference);
-    method protected android.support.v7.preference.Preference findPreferenceInHierarchy(java.lang.String);
-    method public android.content.Context getContext();
-    method public java.lang.String getDependency();
-    method public android.os.Bundle getExtras();
-    method public java.lang.String getFragment();
-    method public android.graphics.drawable.Drawable getIcon();
-    method public android.content.Intent getIntent();
-    method public java.lang.String getKey();
-    method public final int getLayoutResource();
-    method public android.support.v7.preference.Preference.OnPreferenceChangeListener getOnPreferenceChangeListener();
-    method public android.support.v7.preference.Preference.OnPreferenceClickListener getOnPreferenceClickListener();
-    method public int getOrder();
-    method protected boolean getPersistedBoolean(boolean);
-    method protected float getPersistedFloat(float);
-    method protected int getPersistedInt(int);
-    method protected long getPersistedLong(long);
-    method protected java.lang.String getPersistedString(java.lang.String);
-    method public android.support.v7.preference.PreferenceManager getPreferenceManager();
-    method public android.content.SharedPreferences getSharedPreferences();
-    method public boolean getShouldDisableView();
-    method public java.lang.CharSequence getSummary();
-    method public java.lang.CharSequence getTitle();
-    method public final int getWidgetLayoutResource();
-    method public boolean hasKey();
-    method public boolean isEnabled();
-    method public boolean isPersistent();
-    method public boolean isSelectable();
-    method public final boolean isVisible();
-    method protected void notifyChanged();
-    method public void notifyDependencyChange(boolean);
-    method protected void notifyHierarchyChanged();
-    method public void onAttached();
-    method protected void onAttachedToHierarchy(android.support.v7.preference.PreferenceManager);
-    method public void onBindViewHolder(android.support.v7.preference.PreferenceViewHolder);
-    method protected void onClick();
-    method public void onDependencyChanged(android.support.v7.preference.Preference, boolean);
-    method public void onDetached();
-    method protected java.lang.Object onGetDefaultValue(android.content.res.TypedArray, int);
-    method public void onInitializeAccessibilityNodeInfo(android.support.v4.view.accessibility.AccessibilityNodeInfoCompat);
-    method public void onParentChanged(android.support.v7.preference.Preference, boolean);
-    method protected void onPrepareForRemoval();
-    method protected void onRestoreInstanceState(android.os.Parcelable);
-    method protected android.os.Parcelable onSaveInstanceState();
-    method protected void onSetInitialValue(boolean, java.lang.Object);
-    method public android.os.Bundle peekExtras();
-    method protected boolean persistBoolean(boolean);
-    method protected boolean persistFloat(float);
-    method protected boolean persistInt(int);
-    method protected boolean persistLong(long);
-    method protected boolean persistString(java.lang.String);
-    method public void restoreHierarchyState(android.os.Bundle);
-    method public void saveHierarchyState(android.os.Bundle);
-    method public void setDefaultValue(java.lang.Object);
-    method public void setDependency(java.lang.String);
-    method public void setEnabled(boolean);
-    method public void setFragment(java.lang.String);
-    method public void setIcon(android.graphics.drawable.Drawable);
-    method public void setIcon(int);
-    method public void setIntent(android.content.Intent);
-    method public void setKey(java.lang.String);
-    method public void setLayoutResource(int);
-    method public void setOnPreferenceChangeListener(android.support.v7.preference.Preference.OnPreferenceChangeListener);
-    method public void setOnPreferenceClickListener(android.support.v7.preference.Preference.OnPreferenceClickListener);
-    method public void setOrder(int);
-    method public void setPersistent(boolean);
-    method public void setSelectable(boolean);
-    method public void setShouldDisableView(boolean);
-    method public void setSummary(java.lang.CharSequence);
-    method public void setSummary(int);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitle(int);
-    method public void setViewId(int);
-    method public final void setVisible(boolean);
-    method public void setWidgetLayoutResource(int);
-    method public boolean shouldDisableDependents();
-    method protected boolean shouldPersist();
-    field public static final int DEFAULT_ORDER = 2147483647; // 0x7fffffff
-  }
-
-  public static class Preference.BaseSavedState extends android.view.AbsSavedState {
-    ctor public Preference.BaseSavedState(android.os.Parcel);
-    ctor public Preference.BaseSavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<android.support.v7.preference.Preference.BaseSavedState> CREATOR;
-  }
-
-  public static abstract interface Preference.OnPreferenceChangeListener {
-    method public abstract boolean onPreferenceChange(android.support.v7.preference.Preference, java.lang.Object);
-  }
-
-  public static abstract interface Preference.OnPreferenceClickListener {
-    method public abstract boolean onPreferenceClick(android.support.v7.preference.Preference);
-  }
-
-  public class PreferenceCategory extends android.support.v7.preference.PreferenceGroup {
-    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet, int);
-    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet);
-    ctor public PreferenceCategory(android.content.Context);
-  }
-
-  public abstract class PreferenceDialogFragmentCompat extends android.support.v4.app.DialogFragment implements android.content.DialogInterface.OnClickListener {
-    ctor public PreferenceDialogFragmentCompat();
-    method public android.support.v7.preference.DialogPreference getPreference();
-    method protected void onBindDialogView(android.view.View);
-    method public void onClick(android.content.DialogInterface, int);
-    method protected android.view.View onCreateDialogView(android.content.Context);
-    method public abstract void onDialogClosed(boolean);
-    method protected void onPrepareDialogBuilder(android.support.v7.app.AlertDialog.Builder);
-    field protected static final java.lang.String ARG_KEY = "key";
-  }
-
-  public abstract class PreferenceFragmentCompat extends android.support.v4.app.Fragment implements android.support.v7.preference.DialogPreference.TargetFragment android.support.v7.preference.PreferenceManager.OnDisplayPreferenceDialogListener android.support.v7.preference.PreferenceManager.OnNavigateToScreenListener android.support.v7.preference.PreferenceManager.OnPreferenceTreeClickListener {
-    ctor public PreferenceFragmentCompat();
-    method public void addPreferencesFromResource(int);
-    method public android.support.v7.preference.Preference findPreference(java.lang.CharSequence);
-    method public final android.support.v7.widget.RecyclerView getListView();
-    method public android.support.v7.preference.PreferenceManager getPreferenceManager();
-    method public android.support.v7.preference.PreferenceScreen getPreferenceScreen();
-    method protected android.support.v7.widget.RecyclerView.Adapter onCreateAdapter(android.support.v7.preference.PreferenceScreen);
-    method public android.support.v7.widget.RecyclerView.LayoutManager onCreateLayoutManager();
-    method public abstract void onCreatePreferences(android.os.Bundle, java.lang.String);
-    method public android.support.v7.widget.RecyclerView onCreateRecyclerView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onDisplayPreferenceDialog(android.support.v7.preference.Preference);
-    method public void onNavigateToScreen(android.support.v7.preference.PreferenceScreen);
-    method public boolean onPreferenceTreeClick(android.support.v7.preference.Preference);
-    method public void scrollToPreference(java.lang.String);
-    method public void scrollToPreference(android.support.v7.preference.Preference);
-    method public void setDivider(android.graphics.drawable.Drawable);
-    method public void setDividerHeight(int);
-    method public void setPreferenceScreen(android.support.v7.preference.PreferenceScreen);
-    method public void setPreferencesFromResource(int, java.lang.String);
-    field public static final java.lang.String ARG_PREFERENCE_ROOT = "android.support.v7.preference.PreferenceFragmentCompat.PREFERENCE_ROOT";
-  }
-
-  public static abstract interface PreferenceFragmentCompat.OnPreferenceDisplayDialogCallback {
-    method public abstract boolean onPreferenceDisplayDialog(android.support.v7.preference.PreferenceFragmentCompat, android.support.v7.preference.Preference);
-  }
-
-  public static abstract interface PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
-    method public abstract boolean onPreferenceStartFragment(android.support.v7.preference.PreferenceFragmentCompat, android.support.v7.preference.Preference);
-  }
-
-  public static abstract interface PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
-    method public abstract boolean onPreferenceStartScreen(android.support.v7.preference.PreferenceFragmentCompat, android.support.v7.preference.PreferenceScreen);
-  }
-
-  public abstract class PreferenceGroup extends android.support.v7.preference.Preference {
-    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet, int);
-    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet);
-    method public void addItemFromInflater(android.support.v7.preference.Preference);
-    method public boolean addPreference(android.support.v7.preference.Preference);
-    method protected void dispatchRestoreInstanceState(android.os.Bundle);
-    method protected void dispatchSaveInstanceState(android.os.Bundle);
-    method public android.support.v7.preference.Preference findPreference(java.lang.CharSequence);
-    method public android.support.v7.preference.Preference getPreference(int);
-    method public int getPreferenceCount();
-    method protected boolean isOnSameScreenAsChildren();
-    method public boolean isOrderingAsAdded();
-    method protected boolean onPrepareAddPreference(android.support.v7.preference.Preference);
-    method public void removeAll();
-    method public boolean removePreference(android.support.v7.preference.Preference);
-    method public void setOrderingAsAdded(boolean);
-  }
-
-  public static abstract interface PreferenceGroup.PreferencePositionCallback {
-    method public abstract int getPreferenceAdapterPosition(java.lang.String);
-    method public abstract int getPreferenceAdapterPosition(android.support.v7.preference.Preference);
-  }
-
-  public class PreferenceManager {
-    method public android.support.v7.preference.PreferenceScreen createPreferenceScreen(android.content.Context);
-    method public android.support.v7.preference.Preference findPreference(java.lang.CharSequence);
-    method public android.content.Context getContext();
-    method public static android.content.SharedPreferences getDefaultSharedPreferences(android.content.Context);
-    method public android.support.v7.preference.PreferenceManager.OnDisplayPreferenceDialogListener getOnDisplayPreferenceDialogListener();
-    method public android.support.v7.preference.PreferenceManager.OnNavigateToScreenListener getOnNavigateToScreenListener();
-    method public android.support.v7.preference.PreferenceManager.OnPreferenceTreeClickListener getOnPreferenceTreeClickListener();
-    method public android.support.v7.preference.PreferenceManager.PreferenceComparisonCallback getPreferenceComparisonCallback();
-    method public android.support.v7.preference.PreferenceScreen getPreferenceScreen();
-    method public android.content.SharedPreferences getSharedPreferences();
-    method public int getSharedPreferencesMode();
-    method public java.lang.String getSharedPreferencesName();
-    method public boolean isStorageDefault();
-    method public boolean isStorageDeviceProtected();
-    method public static void setDefaultValues(android.content.Context, int, boolean);
-    method public static void setDefaultValues(android.content.Context, java.lang.String, int, int, boolean);
-    method public void setOnDisplayPreferenceDialogListener(android.support.v7.preference.PreferenceManager.OnDisplayPreferenceDialogListener);
-    method public void setOnNavigateToScreenListener(android.support.v7.preference.PreferenceManager.OnNavigateToScreenListener);
-    method public void setOnPreferenceTreeClickListener(android.support.v7.preference.PreferenceManager.OnPreferenceTreeClickListener);
-    method public void setPreferenceComparisonCallback(android.support.v7.preference.PreferenceManager.PreferenceComparisonCallback);
-    method public boolean setPreferences(android.support.v7.preference.PreferenceScreen);
-    method public void setSharedPreferencesMode(int);
-    method public void setSharedPreferencesName(java.lang.String);
-    method public void setStorageDefault();
-    method public void setStorageDeviceProtected();
-    method public void showDialog(android.support.v7.preference.Preference);
-    field public static final java.lang.String KEY_HAS_SET_DEFAULT_VALUES = "_has_set_default_values";
-  }
-
-  public static abstract interface PreferenceManager.OnDisplayPreferenceDialogListener {
-    method public abstract void onDisplayPreferenceDialog(android.support.v7.preference.Preference);
-  }
-
-  public static abstract interface PreferenceManager.OnNavigateToScreenListener {
-    method public abstract void onNavigateToScreen(android.support.v7.preference.PreferenceScreen);
-  }
-
-  public static abstract interface PreferenceManager.OnPreferenceTreeClickListener {
-    method public abstract boolean onPreferenceTreeClick(android.support.v7.preference.Preference);
-  }
-
-  public static abstract class PreferenceManager.PreferenceComparisonCallback {
-    ctor public PreferenceManager.PreferenceComparisonCallback();
-    method public abstract boolean arePreferenceContentsTheSame(android.support.v7.preference.Preference, android.support.v7.preference.Preference);
-    method public abstract boolean arePreferenceItemsTheSame(android.support.v7.preference.Preference, android.support.v7.preference.Preference);
-  }
-
-  public static class PreferenceManager.SimplePreferenceComparisonCallback extends android.support.v7.preference.PreferenceManager.PreferenceComparisonCallback {
-    ctor public PreferenceManager.SimplePreferenceComparisonCallback();
-    method public boolean arePreferenceContentsTheSame(android.support.v7.preference.Preference, android.support.v7.preference.Preference);
-    method public boolean arePreferenceItemsTheSame(android.support.v7.preference.Preference, android.support.v7.preference.Preference);
-  }
-
-  public final class PreferenceScreen extends android.support.v7.preference.PreferenceGroup {
-    method public void setShouldUseGeneratedIds(boolean);
-    method public boolean shouldUseGeneratedIds();
-  }
-
-  public class PreferenceViewHolder extends android.support.v7.widget.RecyclerView.ViewHolder {
-    method public android.view.View findViewById(int);
-    method public boolean isDividerAllowedAbove();
-    method public boolean isDividerAllowedBelow();
-    method public void setDividerAllowedAbove(boolean);
-    method public void setDividerAllowedBelow(boolean);
-  }
-
-  public class SeekBarPreference extends android.support.v7.preference.Preference {
-    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet);
-    ctor public SeekBarPreference(android.content.Context);
-    method public int getMax();
-    method public int getMin();
-    method public final int getSeekBarIncrement();
-    method public int getValue();
-    method public boolean isAdjustable();
-    method public void setAdjustable(boolean);
-    method public final void setMax(int);
-    method public void setMin(int);
-    method public final void setSeekBarIncrement(int);
-    method public void setValue(int);
-  }
-
-  public class SwitchPreferenceCompat extends android.support.v7.preference.TwoStatePreference {
-    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet, int);
-    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet);
-    ctor public SwitchPreferenceCompat(android.content.Context);
-    method public java.lang.CharSequence getSwitchTextOff();
-    method public java.lang.CharSequence getSwitchTextOn();
-    method public void setSwitchTextOff(java.lang.CharSequence);
-    method public void setSwitchTextOff(int);
-    method public void setSwitchTextOn(java.lang.CharSequence);
-    method public void setSwitchTextOn(int);
-  }
-
-  public abstract class TwoStatePreference extends android.support.v7.preference.Preference {
-    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet);
-    ctor public TwoStatePreference(android.content.Context);
-    method public boolean getDisableDependentsState();
-    method public java.lang.CharSequence getSummaryOff();
-    method public java.lang.CharSequence getSummaryOn();
-    method public boolean isChecked();
-    method public void setChecked(boolean);
-    method public void setDisableDependentsState(boolean);
-    method public void setSummaryOff(java.lang.CharSequence);
-    method public void setSummaryOff(int);
-    method public void setSummaryOn(java.lang.CharSequence);
-    method public void setSummaryOn(int);
-    method protected void syncSummaryView(android.support.v7.preference.PreferenceViewHolder);
-    field protected boolean mChecked;
-  }
-
-}
-
-package android.support.v7.util {
-
-  public class AsyncListUtil<T> {
-    ctor public AsyncListUtil(java.lang.Class<T>, int, android.support.v7.util.AsyncListUtil.DataCallback<T>, android.support.v7.util.AsyncListUtil.ViewCallback);
-    method public T getItem(int);
-    method public int getItemCount();
-    method public void onRangeChanged();
-    method public void refresh();
-  }
-
-  public static abstract class AsyncListUtil.DataCallback<T> {
-    ctor public AsyncListUtil.DataCallback();
-    method public abstract void fillData(T[], int, int);
-    method public int getMaxCachedTiles();
-    method public void recycleData(T[], int);
-    method public abstract int refreshData();
-  }
-
-  public static abstract class AsyncListUtil.ViewCallback {
-    ctor public AsyncListUtil.ViewCallback();
-    method public void extendRangeInto(int[], int[], int);
-    method public abstract void getItemRangeInto(int[]);
-    method public abstract void onDataRefresh();
-    method public abstract void onItemLoaded(int);
-    field public static final int HINT_SCROLL_ASC = 2; // 0x2
-    field public static final int HINT_SCROLL_DESC = 1; // 0x1
-    field public static final int HINT_SCROLL_NONE = 0; // 0x0
-  }
-
-  public class BatchingListUpdateCallback implements android.support.v7.util.ListUpdateCallback {
-    ctor public BatchingListUpdateCallback(android.support.v7.util.ListUpdateCallback);
-    method public void dispatchLastEvent();
-    method public void onChanged(int, int, java.lang.Object);
-    method public void onInserted(int, int);
-    method public void onMoved(int, int);
-    method public void onRemoved(int, int);
-  }
-
-  public class DiffUtil {
-    method public static android.support.v7.util.DiffUtil.DiffResult calculateDiff(android.support.v7.util.DiffUtil.Callback);
-    method public static android.support.v7.util.DiffUtil.DiffResult calculateDiff(android.support.v7.util.DiffUtil.Callback, boolean);
-  }
-
-  public static abstract class DiffUtil.Callback {
-    ctor public DiffUtil.Callback();
-    method public abstract boolean areContentsTheSame(int, int);
-    method public abstract boolean areItemsTheSame(int, int);
-    method public java.lang.Object getChangePayload(int, int);
-    method public abstract int getNewListSize();
-    method public abstract int getOldListSize();
-  }
-
-  public static class DiffUtil.DiffResult {
-    method public void dispatchUpdatesTo(android.support.v7.widget.RecyclerView.Adapter);
-    method public void dispatchUpdatesTo(android.support.v7.util.ListUpdateCallback);
-  }
-
-  public abstract interface ListUpdateCallback {
-    method public abstract void onChanged(int, int, java.lang.Object);
-    method public abstract void onInserted(int, int);
-    method public abstract void onMoved(int, int);
-    method public abstract void onRemoved(int, int);
-  }
-
-  public class SortedList<T> {
-    ctor public SortedList(java.lang.Class<T>, android.support.v7.util.SortedList.Callback<T>);
-    ctor public SortedList(java.lang.Class<T>, android.support.v7.util.SortedList.Callback<T>, int);
-    method public int add(T);
-    method public void addAll(T[], boolean);
-    method public void addAll(T...);
-    method public void addAll(java.util.Collection<T>);
-    method public void beginBatchedUpdates();
-    method public void clear();
-    method public void endBatchedUpdates();
-    method public T get(int) throws java.lang.IndexOutOfBoundsException;
-    method public int indexOf(T);
-    method public void recalculatePositionOfItemAt(int);
-    method public boolean remove(T);
-    method public T removeItemAt(int);
-    method public int size();
-    method public void updateItemAt(int, T);
-    field public static final int INVALID_POSITION = -1; // 0xffffffff
-  }
-
-  public static class SortedList.BatchedCallback<T2> extends android.support.v7.util.SortedList.Callback {
-    ctor public SortedList.BatchedCallback(android.support.v7.util.SortedList.Callback<T2>);
-    method public boolean areContentsTheSame(T2, T2);
-    method public boolean areItemsTheSame(T2, T2);
-    method public int compare(T2, T2);
-    method public void dispatchLastEvent();
-    method public void onChanged(int, int);
-    method public void onInserted(int, int);
-    method public void onMoved(int, int);
-    method public void onRemoved(int, int);
-  }
-
-  public static abstract class SortedList.Callback<T2> implements java.util.Comparator android.support.v7.util.ListUpdateCallback {
-    ctor public SortedList.Callback();
-    method public abstract boolean areContentsTheSame(T2, T2);
-    method public abstract boolean areItemsTheSame(T2, T2);
-    method public abstract int compare(T2, T2);
-    method public abstract void onChanged(int, int);
-    method public void onChanged(int, int, java.lang.Object);
-  }
-
-}
-
-package android.support.v7.view {
-
-  public abstract class ActionMode {
-    ctor public ActionMode();
-    method public abstract void finish();
-    method public abstract android.view.View getCustomView();
-    method public abstract android.view.Menu getMenu();
-    method public abstract android.view.MenuInflater getMenuInflater();
-    method public abstract java.lang.CharSequence getSubtitle();
-    method public java.lang.Object getTag();
-    method public abstract java.lang.CharSequence getTitle();
-    method public boolean getTitleOptionalHint();
-    method public abstract void invalidate();
-    method public boolean isTitleOptional();
-    method public abstract void setCustomView(android.view.View);
-    method public abstract void setSubtitle(java.lang.CharSequence);
-    method public abstract void setSubtitle(int);
-    method public void setTag(java.lang.Object);
-    method public abstract void setTitle(java.lang.CharSequence);
-    method public abstract void setTitle(int);
-    method public void setTitleOptionalHint(boolean);
-  }
-
-  public static abstract interface ActionMode.Callback {
-    method public abstract boolean onActionItemClicked(android.support.v7.view.ActionMode, android.view.MenuItem);
-    method public abstract boolean onCreateActionMode(android.support.v7.view.ActionMode, android.view.Menu);
-    method public abstract void onDestroyActionMode(android.support.v7.view.ActionMode);
-    method public abstract boolean onPrepareActionMode(android.support.v7.view.ActionMode, android.view.Menu);
-  }
-
-  public abstract interface CollapsibleActionView {
-    method public abstract void onActionViewCollapsed();
-    method public abstract void onActionViewExpanded();
-  }
-
-}
-
-package android.support.v7.widget {
-
-  public class ActionMenuView extends android.support.v7.widget.LinearLayoutCompat {
-    ctor public ActionMenuView(android.content.Context);
-    ctor public ActionMenuView(android.content.Context, android.util.AttributeSet);
-    method public void dismissPopupMenus();
-    method public android.view.Menu getMenu();
-    method public android.graphics.drawable.Drawable getOverflowIcon();
-    method public int getPopupTheme();
-    method public boolean hideOverflowMenu();
-    method public boolean isOverflowMenuShowing();
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public void onDetachedFromWindow();
-    method public void setOnMenuItemClickListener(android.support.v7.widget.ActionMenuView.OnMenuItemClickListener);
-    method public void setOverflowIcon(android.graphics.drawable.Drawable);
-    method public void setPopupTheme(int);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class ActionMenuView.LayoutParams extends android.support.v7.widget.LinearLayoutCompat.LayoutParams {
-    ctor public ActionMenuView.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public ActionMenuView.LayoutParams(android.support.v7.widget.ActionMenuView.LayoutParams);
-    ctor public ActionMenuView.LayoutParams(int, int);
-    field public int cellsUsed;
-    field public boolean expandable;
-    field public int extraPixels;
-    field public boolean isOverflowButton;
-    field public boolean preventEdgeOffset;
-  }
-
-  public static abstract interface ActionMenuView.OnMenuItemClickListener {
-    method public abstract boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  public class AppCompatAutoCompleteTextView extends android.widget.AutoCompleteTextView implements android.support.v4.view.TintableBackgroundView {
-    ctor public AppCompatAutoCompleteTextView(android.content.Context);
-    ctor public AppCompatAutoCompleteTextView(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatButton extends android.widget.Button implements android.support.v4.view.TintableBackgroundView {
-    ctor public AppCompatButton(android.content.Context);
-    ctor public AppCompatButton(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatButton(android.content.Context, android.util.AttributeSet, int);
-    method public void setSupportAllCaps(boolean);
-  }
-
-  public class AppCompatCheckBox extends android.widget.CheckBox implements android.support.v4.widget.TintableCompoundButton {
-    ctor public AppCompatCheckBox(android.content.Context);
-    ctor public AppCompatCheckBox(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatCheckBox(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatCheckedTextView extends android.widget.CheckedTextView {
-    ctor public AppCompatCheckedTextView(android.content.Context);
-    ctor public AppCompatCheckedTextView(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatCheckedTextView(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatEditText extends android.widget.EditText implements android.support.v4.view.TintableBackgroundView {
-    ctor public AppCompatEditText(android.content.Context);
-    ctor public AppCompatEditText(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatEditText(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatImageButton extends android.widget.ImageButton implements android.support.v4.view.TintableBackgroundView {
-    ctor public AppCompatImageButton(android.content.Context);
-    ctor public AppCompatImageButton(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatImageButton(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatImageView extends android.widget.ImageView implements android.support.v4.view.TintableBackgroundView {
-    ctor public AppCompatImageView(android.content.Context);
-    ctor public AppCompatImageView(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatImageView(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatMultiAutoCompleteTextView extends android.widget.MultiAutoCompleteTextView implements android.support.v4.view.TintableBackgroundView {
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context);
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatRadioButton extends android.widget.RadioButton implements android.support.v4.widget.TintableCompoundButton {
-    ctor public AppCompatRadioButton(android.content.Context);
-    ctor public AppCompatRadioButton(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatRadioButton(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatRatingBar extends android.widget.RatingBar {
-    ctor public AppCompatRatingBar(android.content.Context);
-    ctor public AppCompatRatingBar(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatRatingBar(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatSeekBar extends android.widget.SeekBar {
-    ctor public AppCompatSeekBar(android.content.Context);
-    ctor public AppCompatSeekBar(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatSeekBar(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class AppCompatSpinner extends android.widget.Spinner implements android.support.v4.view.TintableBackgroundView {
-    ctor public AppCompatSpinner(android.content.Context);
-    ctor public AppCompatSpinner(android.content.Context, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet, int, int, android.content.res.Resources.Theme);
-  }
-
-  public class AppCompatTextView extends android.widget.TextView implements android.support.v4.view.TintableBackgroundView {
-    ctor public AppCompatTextView(android.content.Context);
-    ctor public AppCompatTextView(android.content.Context, android.util.AttributeSet);
-    ctor public AppCompatTextView(android.content.Context, android.util.AttributeSet, int);
-  }
-
-  public class CardView extends android.widget.FrameLayout {
-    ctor public CardView(android.content.Context);
-    ctor public CardView(android.content.Context, android.util.AttributeSet);
-    ctor public CardView(android.content.Context, android.util.AttributeSet, int);
-    method public android.content.res.ColorStateList getCardBackgroundColor();
-    method public float getCardElevation();
-    method public int getContentPaddingBottom();
-    method public int getContentPaddingLeft();
-    method public int getContentPaddingRight();
-    method public int getContentPaddingTop();
-    method public float getMaxCardElevation();
-    method public boolean getPreventCornerOverlap();
-    method public float getRadius();
-    method public boolean getUseCompatPadding();
-    method public void setCardBackgroundColor(int);
-    method public void setCardBackgroundColor(android.content.res.ColorStateList);
-    method public void setCardElevation(float);
-    method public void setContentPadding(int, int, int, int);
-    method public void setMaxCardElevation(float);
-    method public void setPreventCornerOverlap(boolean);
-    method public void setRadius(float);
-    method public void setUseCompatPadding(boolean);
-  }
-
-  public class DefaultItemAnimator extends android.support.v7.widget.SimpleItemAnimator {
-    ctor public DefaultItemAnimator();
-    method public boolean animateAdd(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public boolean animateChange(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ViewHolder, int, int, int, int);
-    method public boolean animateMove(android.support.v7.widget.RecyclerView.ViewHolder, int, int, int, int);
-    method public boolean animateRemove(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void endAnimation(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void endAnimations();
-    method public boolean isRunning();
-    method public void runPendingAnimations();
-  }
-
-  public class DividerItemDecoration extends android.support.v7.widget.RecyclerView.ItemDecoration {
-    ctor public DividerItemDecoration(android.content.Context, int);
-    method public void setDrawable(android.graphics.drawable.Drawable);
-    method public void setOrientation(int);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public class GridLayout extends android.view.ViewGroup {
-    ctor public GridLayout(android.content.Context, android.util.AttributeSet, int);
-    ctor public GridLayout(android.content.Context, android.util.AttributeSet);
-    ctor public GridLayout(android.content.Context);
-    method public int getAlignmentMode();
-    method public int getColumnCount();
-    method public int getOrientation();
-    method public android.util.Printer getPrinter();
-    method public int getRowCount();
-    method public boolean getUseDefaultMargins();
-    method public boolean isColumnOrderPreserved();
-    method public boolean isRowOrderPreserved();
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void setAlignmentMode(int);
-    method public void setColumnCount(int);
-    method public void setColumnOrderPreserved(boolean);
-    method public void setOrientation(int);
-    method public void setPrinter(android.util.Printer);
-    method public void setRowCount(int);
-    method public void setRowOrderPreserved(boolean);
-    method public void setUseDefaultMargins(boolean);
-    method public static android.support.v7.widget.GridLayout.Spec spec(int, int, android.support.v7.widget.GridLayout.Alignment, float);
-    method public static android.support.v7.widget.GridLayout.Spec spec(int, android.support.v7.widget.GridLayout.Alignment, float);
-    method public static android.support.v7.widget.GridLayout.Spec spec(int, int, float);
-    method public static android.support.v7.widget.GridLayout.Spec spec(int, float);
-    method public static android.support.v7.widget.GridLayout.Spec spec(int, int, android.support.v7.widget.GridLayout.Alignment);
-    method public static android.support.v7.widget.GridLayout.Spec spec(int, android.support.v7.widget.GridLayout.Alignment);
-    method public static android.support.v7.widget.GridLayout.Spec spec(int, int);
-    method public static android.support.v7.widget.GridLayout.Spec spec(int);
-    field public static final int ALIGN_BOUNDS = 0; // 0x0
-    field public static final int ALIGN_MARGINS = 1; // 0x1
-    field public static final android.support.v7.widget.GridLayout.Alignment BASELINE;
-    field public static final android.support.v7.widget.GridLayout.Alignment BOTTOM;
-    field public static final android.support.v7.widget.GridLayout.Alignment CENTER;
-    field public static final android.support.v7.widget.GridLayout.Alignment END;
-    field public static final android.support.v7.widget.GridLayout.Alignment FILL;
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final android.support.v7.widget.GridLayout.Alignment LEFT;
-    field public static final android.support.v7.widget.GridLayout.Alignment RIGHT;
-    field public static final android.support.v7.widget.GridLayout.Alignment START;
-    field public static final android.support.v7.widget.GridLayout.Alignment TOP;
-    field public static final int UNDEFINED = -2147483648; // 0x80000000
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public static abstract class GridLayout.Alignment {
-  }
-
-  public static class GridLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public GridLayout.LayoutParams(android.support.v7.widget.GridLayout.Spec, android.support.v7.widget.GridLayout.Spec);
-    ctor public GridLayout.LayoutParams();
-    ctor public GridLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public GridLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public GridLayout.LayoutParams(android.support.v7.widget.GridLayout.LayoutParams);
-    ctor public GridLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    method public void setGravity(int);
-    field public android.support.v7.widget.GridLayout.Spec columnSpec;
-    field public android.support.v7.widget.GridLayout.Spec rowSpec;
-  }
-
-  public static class GridLayout.Spec {
-    method public android.support.v7.widget.GridLayout.Alignment getAbsoluteAlignment(boolean);
-  }
-
-  public class GridLayoutManager extends android.support.v7.widget.LinearLayoutManager {
-    ctor public GridLayoutManager(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public GridLayoutManager(android.content.Context, int);
-    ctor public GridLayoutManager(android.content.Context, int, int, boolean);
-    method public int getSpanCount();
-    method public android.support.v7.widget.GridLayoutManager.SpanSizeLookup getSpanSizeLookup();
-    method public void setSpanCount(int);
-    method public void setSpanSizeLookup(android.support.v7.widget.GridLayoutManager.SpanSizeLookup);
-    field public static final int DEFAULT_SPAN_COUNT = -1; // 0xffffffff
-  }
-
-  public static final class GridLayoutManager.DefaultSpanSizeLookup extends android.support.v7.widget.GridLayoutManager.SpanSizeLookup {
-    ctor public GridLayoutManager.DefaultSpanSizeLookup();
-    method public int getSpanSize(int);
-  }
-
-  public static class GridLayoutManager.LayoutParams extends android.support.v7.widget.RecyclerView.LayoutParams {
-    ctor public GridLayoutManager.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public GridLayoutManager.LayoutParams(int, int);
-    ctor public GridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public GridLayoutManager.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public GridLayoutManager.LayoutParams(android.support.v7.widget.RecyclerView.LayoutParams);
-    method public int getSpanIndex();
-    method public int getSpanSize();
-    field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
-  }
-
-  public static abstract class GridLayoutManager.SpanSizeLookup {
-    ctor public GridLayoutManager.SpanSizeLookup();
-    method public int getSpanGroupIndex(int, int);
-    method public int getSpanIndex(int, int);
-    method public abstract int getSpanSize(int);
-    method public void invalidateSpanIndexCache();
-    method public boolean isSpanIndexCacheEnabled();
-    method public void setSpanIndexCacheEnabled(boolean);
-  }
-
-  public class LinearLayoutCompat extends android.view.ViewGroup {
-    ctor public LinearLayoutCompat(android.content.Context);
-    ctor public LinearLayoutCompat(android.content.Context, android.util.AttributeSet);
-    ctor public LinearLayoutCompat(android.content.Context, android.util.AttributeSet, int);
-    method public int getBaselineAlignedChildIndex();
-    method public android.graphics.drawable.Drawable getDividerDrawable();
-    method public int getDividerPadding();
-    method public int getGravity();
-    method public int getOrientation();
-    method public int getShowDividers();
-    method public float getWeightSum();
-    method public boolean isBaselineAligned();
-    method public boolean isMeasureWithLargestChildEnabled();
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void setBaselineAligned(boolean);
-    method public void setBaselineAlignedChildIndex(int);
-    method public void setDividerDrawable(android.graphics.drawable.Drawable);
-    method public void setDividerPadding(int);
-    method public void setGravity(int);
-    method public void setHorizontalGravity(int);
-    method public void setMeasureWithLargestChildEnabled(boolean);
-    method public void setOrientation(int);
-    method public void setShowDividers(int);
-    method public void setVerticalGravity(int);
-    method public void setWeightSum(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int SHOW_DIVIDER_BEGINNING = 1; // 0x1
-    field public static final int SHOW_DIVIDER_END = 4; // 0x4
-    field public static final int SHOW_DIVIDER_MIDDLE = 2; // 0x2
-    field public static final int SHOW_DIVIDER_NONE = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public static class LinearLayoutCompat.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public LinearLayoutCompat.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public LinearLayoutCompat.LayoutParams(int, int);
-    ctor public LinearLayoutCompat.LayoutParams(int, int, float);
-    ctor public LinearLayoutCompat.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public LinearLayoutCompat.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public LinearLayoutCompat.LayoutParams(android.support.v7.widget.LinearLayoutCompat.LayoutParams);
-    field public int gravity;
-    field public float weight;
-  }
-
-  public class LinearLayoutManager extends android.support.v7.widget.RecyclerView.LayoutManager implements android.support.v7.widget.helper.ItemTouchHelper.ViewDropHandler android.support.v7.widget.RecyclerView.SmoothScroller.ScrollVectorProvider {
-    ctor public LinearLayoutManager(android.content.Context);
-    ctor public LinearLayoutManager(android.content.Context, int, boolean);
-    ctor public LinearLayoutManager(android.content.Context, android.util.AttributeSet, int, int);
-    method public android.graphics.PointF computeScrollVectorForPosition(int);
-    method public int findFirstCompletelyVisibleItemPosition();
-    method public int findFirstVisibleItemPosition();
-    method public int findLastCompletelyVisibleItemPosition();
-    method public int findLastVisibleItemPosition();
-    method public android.support.v7.widget.RecyclerView.LayoutParams generateDefaultLayoutParams();
-    method protected int getExtraLayoutSpace(android.support.v7.widget.RecyclerView.State);
-    method public deprecated int getInitialItemPrefetchCount();
-    method public int getInitialPrefetchItemCount();
-    method public int getOrientation();
-    method public boolean getRecycleChildrenOnDetach();
-    method public boolean getReverseLayout();
-    method public boolean getStackFromEnd();
-    method protected boolean isLayoutRTL();
-    method public boolean isSmoothScrollbarEnabled();
-    method public void scrollToPositionWithOffset(int, int);
-    method public void setInitialPrefetchItemCount(int);
-    method public void setOrientation(int);
-    method public void setRecycleChildrenOnDetach(boolean);
-    method public void setReverseLayout(boolean);
-    method public void setSmoothScrollbarEnabled(boolean);
-    method public void setStackFromEnd(boolean);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int INVALID_OFFSET = -2147483648; // 0x80000000
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  protected static class LinearLayoutManager.LayoutChunkResult {
-    ctor protected LinearLayoutManager.LayoutChunkResult();
-    field public int mConsumed;
-    field public boolean mFinished;
-    field public boolean mFocusable;
-    field public boolean mIgnoreConsumed;
-  }
-
-  public class LinearSmoothScroller extends android.support.v7.widget.RecyclerView.SmoothScroller {
-    ctor public LinearSmoothScroller(android.content.Context);
-    method public int calculateDtToFit(int, int, int, int, int);
-    method public int calculateDxToMakeVisible(android.view.View, int);
-    method public int calculateDyToMakeVisible(android.view.View, int);
-    method protected float calculateSpeedPerPixel(android.util.DisplayMetrics);
-    method protected int calculateTimeForDeceleration(int);
-    method protected int calculateTimeForScrolling(int);
-    method public android.graphics.PointF computeScrollVectorForPosition(int);
-    method protected int getHorizontalSnapPreference();
-    method protected int getVerticalSnapPreference();
-    method protected void onSeekTargetStep(int, int, android.support.v7.widget.RecyclerView.State, android.support.v7.widget.RecyclerView.SmoothScroller.Action);
-    method protected void onStart();
-    method protected void onStop();
-    method protected void onTargetFound(android.view.View, android.support.v7.widget.RecyclerView.State, android.support.v7.widget.RecyclerView.SmoothScroller.Action);
-    method protected void updateActionForInterimTarget(android.support.v7.widget.RecyclerView.SmoothScroller.Action);
-    field public static final int SNAP_TO_ANY = 0; // 0x0
-    field public static final int SNAP_TO_END = 1; // 0x1
-    field public static final int SNAP_TO_START = -1; // 0xffffffff
-    field protected final android.view.animation.DecelerateInterpolator mDecelerateInterpolator;
-    field protected int mInterimTargetDx;
-    field protected int mInterimTargetDy;
-    field protected final android.view.animation.LinearInterpolator mLinearInterpolator;
-    field protected android.graphics.PointF mTargetVector;
-  }
-
-  public class LinearSnapHelper extends android.support.v7.widget.SnapHelper {
-    ctor public LinearSnapHelper();
-    method public int[] calculateDistanceToFinalSnap(android.support.v7.widget.RecyclerView.LayoutManager, android.view.View);
-    method public android.view.View findSnapView(android.support.v7.widget.RecyclerView.LayoutManager);
-    method public int findTargetSnapPosition(android.support.v7.widget.RecyclerView.LayoutManager, int, int);
-  }
-
-  public class ListPopupWindow {
-    ctor public ListPopupWindow(android.content.Context);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet, int);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet, int, int);
-    method public void clearListSelection();
-    method public android.view.View.OnTouchListener createDragToOpenListener(android.view.View);
-    method public void dismiss();
-    method public android.view.View getAnchorView();
-    method public int getAnimationStyle();
-    method public android.graphics.drawable.Drawable getBackground();
-    method public int getHeight();
-    method public int getHorizontalOffset();
-    method public int getInputMethodMode();
-    method public android.widget.ListView getListView();
-    method public int getPromptPosition();
-    method public java.lang.Object getSelectedItem();
-    method public long getSelectedItemId();
-    method public int getSelectedItemPosition();
-    method public android.view.View getSelectedView();
-    method public int getSoftInputMode();
-    method public int getVerticalOffset();
-    method public int getWidth();
-    method public boolean isInputMethodNotNeeded();
-    method public boolean isModal();
-    method public boolean isShowing();
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyPreIme(int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public boolean performItemClick(int);
-    method public void postShow();
-    method public void setAdapter(android.widget.ListAdapter);
-    method public void setAnchorView(android.view.View);
-    method public void setAnimationStyle(int);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setContentWidth(int);
-    method public void setDropDownGravity(int);
-    method public void setHeight(int);
-    method public void setHorizontalOffset(int);
-    method public void setInputMethodMode(int);
-    method public void setListSelector(android.graphics.drawable.Drawable);
-    method public void setModal(boolean);
-    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener);
-    method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener);
-    method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
-    method public void setPromptPosition(int);
-    method public void setPromptView(android.view.View);
-    method public void setSelection(int);
-    method public void setSoftInputMode(int);
-    method public void setVerticalOffset(int);
-    method public void setWidth(int);
-    method public void setWindowLayoutType(int);
-    method public void show();
-    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
-    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
-    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int POSITION_PROMPT_ABOVE = 0; // 0x0
-    field public static final int POSITION_PROMPT_BELOW = 1; // 0x1
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  public abstract class OrientationHelper {
-    method public static android.support.v7.widget.OrientationHelper createHorizontalHelper(android.support.v7.widget.RecyclerView.LayoutManager);
-    method public static android.support.v7.widget.OrientationHelper createOrientationHelper(android.support.v7.widget.RecyclerView.LayoutManager, int);
-    method public static android.support.v7.widget.OrientationHelper createVerticalHelper(android.support.v7.widget.RecyclerView.LayoutManager);
-    method public abstract int getDecoratedEnd(android.view.View);
-    method public abstract int getDecoratedMeasurement(android.view.View);
-    method public abstract int getDecoratedMeasurementInOther(android.view.View);
-    method public abstract int getDecoratedStart(android.view.View);
-    method public abstract int getEnd();
-    method public abstract int getEndAfterPadding();
-    method public abstract int getEndPadding();
-    method public abstract int getMode();
-    method public abstract int getModeInOther();
-    method public abstract int getStartAfterPadding();
-    method public abstract int getTotalSpace();
-    method public int getTotalSpaceChange();
-    method public abstract int getTransformedEndWithDecoration(android.view.View);
-    method public abstract int getTransformedStartWithDecoration(android.view.View);
-    method public abstract void offsetChild(android.view.View, int);
-    method public abstract void offsetChildren(int);
-    method public void onLayoutComplete();
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-    field protected final android.support.v7.widget.RecyclerView.LayoutManager mLayoutManager;
-  }
-
-  public class PagerSnapHelper extends android.support.v7.widget.SnapHelper {
-    ctor public PagerSnapHelper();
-    method public int[] calculateDistanceToFinalSnap(android.support.v7.widget.RecyclerView.LayoutManager, android.view.View);
-    method public android.view.View findSnapView(android.support.v7.widget.RecyclerView.LayoutManager);
-    method public int findTargetSnapPosition(android.support.v7.widget.RecyclerView.LayoutManager, int, int);
-  }
-
-  public class PopupMenu {
-    ctor public PopupMenu(android.content.Context, android.view.View);
-    ctor public PopupMenu(android.content.Context, android.view.View, int);
-    ctor public PopupMenu(android.content.Context, android.view.View, int, int, int);
-    method public void dismiss();
-    method public android.view.View.OnTouchListener getDragToOpenListener();
-    method public int getGravity();
-    method public android.view.Menu getMenu();
-    method public android.view.MenuInflater getMenuInflater();
-    method public void inflate(int);
-    method public void setGravity(int);
-    method public void setOnDismissListener(android.support.v7.widget.PopupMenu.OnDismissListener);
-    method public void setOnMenuItemClickListener(android.support.v7.widget.PopupMenu.OnMenuItemClickListener);
-    method public void show();
-  }
-
-  public static abstract interface PopupMenu.OnDismissListener {
-    method public abstract void onDismiss(android.support.v7.widget.PopupMenu);
-  }
-
-  public static abstract interface PopupMenu.OnMenuItemClickListener {
-    method public abstract boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  public class RecyclerView extends android.view.ViewGroup implements android.support.v4.view.NestedScrollingChild android.support.v4.view.ScrollingView {
-    ctor public RecyclerView(android.content.Context);
-    ctor public RecyclerView(android.content.Context, android.util.AttributeSet);
-    ctor public RecyclerView(android.content.Context, android.util.AttributeSet, int);
-    method public void addItemDecoration(android.support.v7.widget.RecyclerView.ItemDecoration, int);
-    method public void addItemDecoration(android.support.v7.widget.RecyclerView.ItemDecoration);
-    method public void addOnChildAttachStateChangeListener(android.support.v7.widget.RecyclerView.OnChildAttachStateChangeListener);
-    method public void addOnItemTouchListener(android.support.v7.widget.RecyclerView.OnItemTouchListener);
-    method public void addOnScrollListener(android.support.v7.widget.RecyclerView.OnScrollListener);
-    method public void clearOnChildAttachStateChangeListeners();
-    method public void clearOnScrollListeners();
-    method public int computeHorizontalScrollExtent();
-    method public int computeHorizontalScrollOffset();
-    method public int computeHorizontalScrollRange();
-    method public int computeVerticalScrollExtent();
-    method public int computeVerticalScrollOffset();
-    method public int computeVerticalScrollRange();
-    method public boolean drawChild(android.graphics.Canvas, android.view.View, long);
-    method public android.view.View findChildViewUnder(float, float);
-    method public android.view.View findContainingItemView(android.view.View);
-    method public android.support.v7.widget.RecyclerView.ViewHolder findContainingViewHolder(android.view.View);
-    method public android.support.v7.widget.RecyclerView.ViewHolder findViewHolderForAdapterPosition(int);
-    method public android.support.v7.widget.RecyclerView.ViewHolder findViewHolderForItemId(long);
-    method public android.support.v7.widget.RecyclerView.ViewHolder findViewHolderForLayoutPosition(int);
-    method public deprecated android.support.v7.widget.RecyclerView.ViewHolder findViewHolderForPosition(int);
-    method public boolean fling(int, int);
-    method public android.support.v7.widget.RecyclerView.Adapter getAdapter();
-    method public int getChildAdapterPosition(android.view.View);
-    method public long getChildItemId(android.view.View);
-    method public int getChildLayoutPosition(android.view.View);
-    method public deprecated int getChildPosition(android.view.View);
-    method public android.support.v7.widget.RecyclerView.ViewHolder getChildViewHolder(android.view.View);
-    method public android.support.v7.widget.RecyclerViewAccessibilityDelegate getCompatAccessibilityDelegate();
-    method public void getDecoratedBoundsWithMargins(android.view.View, android.graphics.Rect);
-    method public android.support.v7.widget.RecyclerView.ItemAnimator getItemAnimator();
-    method public android.support.v7.widget.RecyclerView.LayoutManager getLayoutManager();
-    method public int getMaxFlingVelocity();
-    method public int getMinFlingVelocity();
-    method public android.support.v7.widget.RecyclerView.OnFlingListener getOnFlingListener();
-    method public boolean getPreserveFocusAfterLayout();
-    method public android.support.v7.widget.RecyclerView.RecycledViewPool getRecycledViewPool();
-    method public int getScrollState();
-    method public boolean hasFixedSize();
-    method public boolean hasPendingAdapterUpdates();
-    method public void invalidateItemDecorations();
-    method public boolean isAnimating();
-    method public boolean isComputingLayout();
-    method public boolean isLayoutFrozen();
-    method public void offsetChildrenHorizontal(int);
-    method public void offsetChildrenVertical(int);
-    method public void onChildAttachedToWindow(android.view.View);
-    method public void onChildDetachedFromWindow(android.view.View);
-    method public void onDraw(android.graphics.Canvas);
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void onScrollStateChanged(int);
-    method public void onScrolled(int, int);
-    method public void removeItemDecoration(android.support.v7.widget.RecyclerView.ItemDecoration);
-    method public void removeOnChildAttachStateChangeListener(android.support.v7.widget.RecyclerView.OnChildAttachStateChangeListener);
-    method public void removeOnItemTouchListener(android.support.v7.widget.RecyclerView.OnItemTouchListener);
-    method public void removeOnScrollListener(android.support.v7.widget.RecyclerView.OnScrollListener);
-    method public void scrollToPosition(int);
-    method public void setAccessibilityDelegateCompat(android.support.v7.widget.RecyclerViewAccessibilityDelegate);
-    method public void setAdapter(android.support.v7.widget.RecyclerView.Adapter);
-    method public void setChildDrawingOrderCallback(android.support.v7.widget.RecyclerView.ChildDrawingOrderCallback);
-    method public void setHasFixedSize(boolean);
-    method public void setItemAnimator(android.support.v7.widget.RecyclerView.ItemAnimator);
-    method public void setItemViewCacheSize(int);
-    method public void setLayoutFrozen(boolean);
-    method public void setLayoutManager(android.support.v7.widget.RecyclerView.LayoutManager);
-    method public void setOnFlingListener(android.support.v7.widget.RecyclerView.OnFlingListener);
-    method public deprecated void setOnScrollListener(android.support.v7.widget.RecyclerView.OnScrollListener);
-    method public void setPreserveFocusAfterLayout(boolean);
-    method public void setRecycledViewPool(android.support.v7.widget.RecyclerView.RecycledViewPool);
-    method public void setRecyclerListener(android.support.v7.widget.RecyclerView.RecyclerListener);
-    method public void setScrollingTouchSlop(int);
-    method public void setViewCacheExtension(android.support.v7.widget.RecyclerView.ViewCacheExtension);
-    method public void smoothScrollBy(int, int);
-    method public void smoothScrollBy(int, int, android.view.animation.Interpolator);
-    method public void smoothScrollToPosition(int);
-    method public void stopScroll();
-    method public void swapAdapter(android.support.v7.widget.RecyclerView.Adapter, boolean);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int INVALID_TYPE = -1; // 0xffffffff
-    field public static final long NO_ID = -1L; // 0xffffffffffffffffL
-    field public static final int NO_POSITION = -1; // 0xffffffff
-    field public static final int SCROLL_STATE_DRAGGING = 1; // 0x1
-    field public static final int SCROLL_STATE_IDLE = 0; // 0x0
-    field public static final int SCROLL_STATE_SETTLING = 2; // 0x2
-    field public static final int TOUCH_SLOP_DEFAULT = 0; // 0x0
-    field public static final int TOUCH_SLOP_PAGING = 1; // 0x1
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public static abstract class RecyclerView.Adapter<VH extends android.support.v7.widget.RecyclerView.ViewHolder> {
-    ctor public RecyclerView.Adapter();
-    method public final void bindViewHolder(VH, int);
-    method public final VH createViewHolder(android.view.ViewGroup, int);
-    method public abstract int getItemCount();
-    method public long getItemId(int);
-    method public int getItemViewType(int);
-    method public final boolean hasObservers();
-    method public final boolean hasStableIds();
-    method public final void notifyDataSetChanged();
-    method public final void notifyItemChanged(int);
-    method public final void notifyItemChanged(int, java.lang.Object);
-    method public final void notifyItemInserted(int);
-    method public final void notifyItemMoved(int, int);
-    method public final void notifyItemRangeChanged(int, int);
-    method public final void notifyItemRangeChanged(int, int, java.lang.Object);
-    method public final void notifyItemRangeInserted(int, int);
-    method public final void notifyItemRangeRemoved(int, int);
-    method public final void notifyItemRemoved(int);
-    method public void onAttachedToRecyclerView(android.support.v7.widget.RecyclerView);
-    method public abstract void onBindViewHolder(VH, int);
-    method public void onBindViewHolder(VH, int, java.util.List<java.lang.Object>);
-    method public abstract VH onCreateViewHolder(android.view.ViewGroup, int);
-    method public void onDetachedFromRecyclerView(android.support.v7.widget.RecyclerView);
-    method public boolean onFailedToRecycleView(VH);
-    method public void onViewAttachedToWindow(VH);
-    method public void onViewDetachedFromWindow(VH);
-    method public void onViewRecycled(VH);
-    method public void registerAdapterDataObserver(android.support.v7.widget.RecyclerView.AdapterDataObserver);
-    method public void setHasStableIds(boolean);
-    method public void unregisterAdapterDataObserver(android.support.v7.widget.RecyclerView.AdapterDataObserver);
-  }
-
-  public static abstract class RecyclerView.AdapterDataObserver {
-    ctor public RecyclerView.AdapterDataObserver();
-    method public void onChanged();
-    method public void onItemRangeChanged(int, int);
-    method public void onItemRangeChanged(int, int, java.lang.Object);
-    method public void onItemRangeInserted(int, int);
-    method public void onItemRangeMoved(int, int, int);
-    method public void onItemRangeRemoved(int, int);
-  }
-
-  public static abstract interface RecyclerView.ChildDrawingOrderCallback {
-    method public abstract int onGetChildDrawingOrder(int, int);
-  }
-
-  public static abstract class RecyclerView.ItemAnimator {
-    ctor public RecyclerView.ItemAnimator();
-    method public abstract boolean animateAppearance(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo);
-    method public abstract boolean animateChange(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo);
-    method public abstract boolean animateDisappearance(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo);
-    method public abstract boolean animatePersistence(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo);
-    method public boolean canReuseUpdatedViewHolder(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public boolean canReuseUpdatedViewHolder(android.support.v7.widget.RecyclerView.ViewHolder, java.util.List<java.lang.Object>);
-    method public final void dispatchAnimationFinished(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void dispatchAnimationStarted(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void dispatchAnimationsFinished();
-    method public abstract void endAnimation(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public abstract void endAnimations();
-    method public long getAddDuration();
-    method public long getChangeDuration();
-    method public long getMoveDuration();
-    method public long getRemoveDuration();
-    method public abstract boolean isRunning();
-    method public final boolean isRunning(android.support.v7.widget.RecyclerView.ItemAnimator.ItemAnimatorFinishedListener);
-    method public android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo obtainHolderInfo();
-    method public void onAnimationFinished(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void onAnimationStarted(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo recordPostLayoutInformation(android.support.v7.widget.RecyclerView.State, android.support.v7.widget.RecyclerView.ViewHolder);
-    method public android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo recordPreLayoutInformation(android.support.v7.widget.RecyclerView.State, android.support.v7.widget.RecyclerView.ViewHolder, int, java.util.List<java.lang.Object>);
-    method public abstract void runPendingAnimations();
-    method public void setAddDuration(long);
-    method public void setChangeDuration(long);
-    method public void setMoveDuration(long);
-    method public void setRemoveDuration(long);
-    field public static final int FLAG_APPEARED_IN_PRE_LAYOUT = 4096; // 0x1000
-    field public static final int FLAG_CHANGED = 2; // 0x2
-    field public static final int FLAG_INVALIDATED = 4; // 0x4
-    field public static final int FLAG_MOVED = 2048; // 0x800
-    field public static final int FLAG_REMOVED = 8; // 0x8
-  }
-
-  public static abstract class RecyclerView.ItemAnimator.AdapterChanges implements java.lang.annotation.Annotation {
-  }
-
-  public static abstract interface RecyclerView.ItemAnimator.ItemAnimatorFinishedListener {
-    method public abstract void onAnimationsFinished();
-  }
-
-  public static class RecyclerView.ItemAnimator.ItemHolderInfo {
-    ctor public RecyclerView.ItemAnimator.ItemHolderInfo();
-    method public android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo setFrom(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo setFrom(android.support.v7.widget.RecyclerView.ViewHolder, int);
-    field public int bottom;
-    field public int changeFlags;
-    field public int left;
-    field public int right;
-    field public int top;
-  }
-
-  public static abstract class RecyclerView.ItemDecoration {
-    ctor public RecyclerView.ItemDecoration();
-    method public deprecated void getItemOffsets(android.graphics.Rect, int, android.support.v7.widget.RecyclerView);
-    method public void getItemOffsets(android.graphics.Rect, android.view.View, android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.State);
-    method public void onDraw(android.graphics.Canvas, android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.State);
-    method public deprecated void onDraw(android.graphics.Canvas, android.support.v7.widget.RecyclerView);
-    method public void onDrawOver(android.graphics.Canvas, android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.State);
-    method public deprecated void onDrawOver(android.graphics.Canvas, android.support.v7.widget.RecyclerView);
-  }
-
-  public static abstract class RecyclerView.LayoutManager {
-    ctor public RecyclerView.LayoutManager();
-    method public void addDisappearingView(android.view.View);
-    method public void addDisappearingView(android.view.View, int);
-    method public void addView(android.view.View);
-    method public void addView(android.view.View, int);
-    method public void assertInLayoutOrScroll(java.lang.String);
-    method public void assertNotInLayoutOrScroll(java.lang.String);
-    method public void attachView(android.view.View, int, android.support.v7.widget.RecyclerView.LayoutParams);
-    method public void attachView(android.view.View, int);
-    method public void attachView(android.view.View);
-    method public void calculateItemDecorationsForChild(android.view.View, android.graphics.Rect);
-    method public boolean canScrollHorizontally();
-    method public boolean canScrollVertically();
-    method public boolean checkLayoutParams(android.support.v7.widget.RecyclerView.LayoutParams);
-    method public static int chooseSize(int, int, int);
-    method public void collectAdjacentPrefetchPositions(int, int, android.support.v7.widget.RecyclerView.State, android.support.v7.widget.RecyclerView.LayoutManager.LayoutPrefetchRegistry);
-    method public void collectInitialPrefetchPositions(int, android.support.v7.widget.RecyclerView.LayoutManager.LayoutPrefetchRegistry);
-    method public int computeHorizontalScrollExtent(android.support.v7.widget.RecyclerView.State);
-    method public int computeHorizontalScrollOffset(android.support.v7.widget.RecyclerView.State);
-    method public int computeHorizontalScrollRange(android.support.v7.widget.RecyclerView.State);
-    method public int computeVerticalScrollExtent(android.support.v7.widget.RecyclerView.State);
-    method public int computeVerticalScrollOffset(android.support.v7.widget.RecyclerView.State);
-    method public int computeVerticalScrollRange(android.support.v7.widget.RecyclerView.State);
-    method public void detachAndScrapAttachedViews(android.support.v7.widget.RecyclerView.Recycler);
-    method public void detachAndScrapView(android.view.View, android.support.v7.widget.RecyclerView.Recycler);
-    method public void detachAndScrapViewAt(int, android.support.v7.widget.RecyclerView.Recycler);
-    method public void detachView(android.view.View);
-    method public void detachViewAt(int);
-    method public void endAnimation(android.view.View);
-    method public android.view.View findContainingItemView(android.view.View);
-    method public android.view.View findViewByPosition(int);
-    method public abstract android.support.v7.widget.RecyclerView.LayoutParams generateDefaultLayoutParams();
-    method public android.support.v7.widget.RecyclerView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public android.support.v7.widget.RecyclerView.LayoutParams generateLayoutParams(android.content.Context, android.util.AttributeSet);
-    method public int getBaseline();
-    method public int getBottomDecorationHeight(android.view.View);
-    method public android.view.View getChildAt(int);
-    method public int getChildCount();
-    method public static deprecated int getChildMeasureSpec(int, int, int, boolean);
-    method public static int getChildMeasureSpec(int, int, int, int, boolean);
-    method public boolean getClipToPadding();
-    method public int getColumnCountForAccessibility(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State);
-    method public int getDecoratedBottom(android.view.View);
-    method public void getDecoratedBoundsWithMargins(android.view.View, android.graphics.Rect);
-    method public int getDecoratedLeft(android.view.View);
-    method public int getDecoratedMeasuredHeight(android.view.View);
-    method public int getDecoratedMeasuredWidth(android.view.View);
-    method public int getDecoratedRight(android.view.View);
-    method public int getDecoratedTop(android.view.View);
-    method public android.view.View getFocusedChild();
-    method public int getHeight();
-    method public int getHeightMode();
-    method public int getItemCount();
-    method public int getItemViewType(android.view.View);
-    method public int getLayoutDirection();
-    method public int getLeftDecorationWidth(android.view.View);
-    method public int getMinimumHeight();
-    method public int getMinimumWidth();
-    method public int getPaddingBottom();
-    method public int getPaddingEnd();
-    method public int getPaddingLeft();
-    method public int getPaddingRight();
-    method public int getPaddingStart();
-    method public int getPaddingTop();
-    method public int getPosition(android.view.View);
-    method public static android.support.v7.widget.RecyclerView.LayoutManager.Properties getProperties(android.content.Context, android.util.AttributeSet, int, int);
-    method public int getRightDecorationWidth(android.view.View);
-    method public int getRowCountForAccessibility(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State);
-    method public int getSelectionModeForAccessibility(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State);
-    method public int getTopDecorationHeight(android.view.View);
-    method public void getTransformedBoundingBox(android.view.View, boolean, android.graphics.Rect);
-    method public int getWidth();
-    method public int getWidthMode();
-    method public boolean hasFocus();
-    method public void ignoreView(android.view.View);
-    method public boolean isAttachedToWindow();
-    method public boolean isAutoMeasureEnabled();
-    method public boolean isFocused();
-    method public final boolean isItemPrefetchEnabled();
-    method public boolean isLayoutHierarchical(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State);
-    method public boolean isMeasurementCacheEnabled();
-    method public boolean isSmoothScrolling();
-    method public boolean isViewPartiallyVisible(android.view.View, boolean, boolean);
-    method public void layoutDecorated(android.view.View, int, int, int, int);
-    method public void layoutDecoratedWithMargins(android.view.View, int, int, int, int);
-    method public void measureChild(android.view.View, int, int);
-    method public void measureChildWithMargins(android.view.View, int, int);
-    method public void moveView(int, int);
-    method public void offsetChildrenHorizontal(int);
-    method public void offsetChildrenVertical(int);
-    method public void onAdapterChanged(android.support.v7.widget.RecyclerView.Adapter, android.support.v7.widget.RecyclerView.Adapter);
-    method public boolean onAddFocusables(android.support.v7.widget.RecyclerView, java.util.ArrayList<android.view.View>, int, int);
-    method public void onAttachedToWindow(android.support.v7.widget.RecyclerView);
-    method public deprecated void onDetachedFromWindow(android.support.v7.widget.RecyclerView);
-    method public void onDetachedFromWindow(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.Recycler);
-    method public android.view.View onFocusSearchFailed(android.view.View, int, android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State);
-    method public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public void onInitializeAccessibilityEvent(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State, android.view.accessibility.AccessibilityEvent);
-    method public void onInitializeAccessibilityNodeInfo(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State, android.support.v4.view.accessibility.AccessibilityNodeInfoCompat);
-    method public void onInitializeAccessibilityNodeInfoForItem(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State, android.view.View, android.support.v4.view.accessibility.AccessibilityNodeInfoCompat);
-    method public android.view.View onInterceptFocusSearch(android.view.View, int);
-    method public void onItemsAdded(android.support.v7.widget.RecyclerView, int, int);
-    method public void onItemsChanged(android.support.v7.widget.RecyclerView);
-    method public void onItemsMoved(android.support.v7.widget.RecyclerView, int, int, int);
-    method public void onItemsRemoved(android.support.v7.widget.RecyclerView, int, int);
-    method public void onItemsUpdated(android.support.v7.widget.RecyclerView, int, int);
-    method public void onItemsUpdated(android.support.v7.widget.RecyclerView, int, int, java.lang.Object);
-    method public void onLayoutChildren(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State);
-    method public void onLayoutCompleted(android.support.v7.widget.RecyclerView.State);
-    method public void onMeasure(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State, int, int);
-    method public deprecated boolean onRequestChildFocus(android.support.v7.widget.RecyclerView, android.view.View, android.view.View);
-    method public boolean onRequestChildFocus(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.State, android.view.View, android.view.View);
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public void onScrollStateChanged(int);
-    method public boolean performAccessibilityAction(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State, int, android.os.Bundle);
-    method public boolean performAccessibilityActionForItem(android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State, android.view.View, int, android.os.Bundle);
-    method public void postOnAnimation(java.lang.Runnable);
-    method public void removeAllViews();
-    method public void removeAndRecycleAllViews(android.support.v7.widget.RecyclerView.Recycler);
-    method public void removeAndRecycleView(android.view.View, android.support.v7.widget.RecyclerView.Recycler);
-    method public void removeAndRecycleViewAt(int, android.support.v7.widget.RecyclerView.Recycler);
-    method public boolean removeCallbacks(java.lang.Runnable);
-    method public void removeDetachedView(android.view.View);
-    method public void removeView(android.view.View);
-    method public void removeViewAt(int);
-    method public boolean requestChildRectangleOnScreen(android.support.v7.widget.RecyclerView, android.view.View, android.graphics.Rect, boolean);
-    method public boolean requestChildRectangleOnScreen(android.support.v7.widget.RecyclerView, android.view.View, android.graphics.Rect, boolean, boolean);
-    method public void requestLayout();
-    method public void requestSimpleAnimationsInNextLayout();
-    method public int scrollHorizontallyBy(int, android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State);
-    method public void scrollToPosition(int);
-    method public int scrollVerticallyBy(int, android.support.v7.widget.RecyclerView.Recycler, android.support.v7.widget.RecyclerView.State);
-    method public void setAutoMeasureEnabled(boolean);
-    method public final void setItemPrefetchEnabled(boolean);
-    method public void setMeasuredDimension(android.graphics.Rect, int, int);
-    method public void setMeasuredDimension(int, int);
-    method public void setMeasurementCacheEnabled(boolean);
-    method public void smoothScrollToPosition(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.State, int);
-    method public void startSmoothScroll(android.support.v7.widget.RecyclerView.SmoothScroller);
-    method public void stopIgnoringView(android.view.View);
-    method public boolean supportsPredictiveItemAnimations();
-  }
-
-  public static abstract interface RecyclerView.LayoutManager.LayoutPrefetchRegistry {
-    method public abstract void addPosition(int, int);
-  }
-
-  public static class RecyclerView.LayoutManager.Properties {
-    ctor public RecyclerView.LayoutManager.Properties();
-    field public int orientation;
-    field public boolean reverseLayout;
-    field public int spanCount;
-    field public boolean stackFromEnd;
-  }
-
-  public static class RecyclerView.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public RecyclerView.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public RecyclerView.LayoutParams(int, int);
-    ctor public RecyclerView.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public RecyclerView.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public RecyclerView.LayoutParams(android.support.v7.widget.RecyclerView.LayoutParams);
-    method public int getViewAdapterPosition();
-    method public int getViewLayoutPosition();
-    method public deprecated int getViewPosition();
-    method public boolean isItemChanged();
-    method public boolean isItemRemoved();
-    method public boolean isViewInvalid();
-    method public boolean viewNeedsUpdate();
-  }
-
-  public static abstract interface RecyclerView.OnChildAttachStateChangeListener {
-    method public abstract void onChildViewAttachedToWindow(android.view.View);
-    method public abstract void onChildViewDetachedFromWindow(android.view.View);
-  }
-
-  public static abstract class RecyclerView.OnFlingListener {
-    ctor public RecyclerView.OnFlingListener();
-    method public abstract boolean onFling(int, int);
-  }
-
-  public static abstract interface RecyclerView.OnItemTouchListener {
-    method public abstract boolean onInterceptTouchEvent(android.support.v7.widget.RecyclerView, android.view.MotionEvent);
-    method public abstract void onRequestDisallowInterceptTouchEvent(boolean);
-    method public abstract void onTouchEvent(android.support.v7.widget.RecyclerView, android.view.MotionEvent);
-  }
-
-  public static abstract class RecyclerView.OnScrollListener {
-    ctor public RecyclerView.OnScrollListener();
-    method public void onScrollStateChanged(android.support.v7.widget.RecyclerView, int);
-    method public void onScrolled(android.support.v7.widget.RecyclerView, int, int);
-  }
-
-  public static class RecyclerView.RecycledViewPool {
-    ctor public RecyclerView.RecycledViewPool();
-    method public void clear();
-    method public android.support.v7.widget.RecyclerView.ViewHolder getRecycledView(int);
-    method public int getRecycledViewCount(int);
-    method public void putRecycledView(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void setMaxRecycledViews(int, int);
-  }
-
-  public final class RecyclerView.Recycler {
-    ctor public RecyclerView.Recycler();
-    method public void bindViewToPosition(android.view.View, int);
-    method public void clear();
-    method public int convertPreLayoutPositionToPostLayout(int);
-    method public java.util.List<android.support.v7.widget.RecyclerView.ViewHolder> getScrapList();
-    method public android.view.View getViewForPosition(int);
-    method public void recycleView(android.view.View);
-    method public void setViewCacheSize(int);
-  }
-
-  public static abstract interface RecyclerView.RecyclerListener {
-    method public abstract void onViewRecycled(android.support.v7.widget.RecyclerView.ViewHolder);
-  }
-
-  public static class RecyclerView.SimpleOnItemTouchListener implements android.support.v7.widget.RecyclerView.OnItemTouchListener {
-    ctor public RecyclerView.SimpleOnItemTouchListener();
-    method public boolean onInterceptTouchEvent(android.support.v7.widget.RecyclerView, android.view.MotionEvent);
-    method public void onRequestDisallowInterceptTouchEvent(boolean);
-    method public void onTouchEvent(android.support.v7.widget.RecyclerView, android.view.MotionEvent);
-  }
-
-  public static abstract class RecyclerView.SmoothScroller {
-    ctor public RecyclerView.SmoothScroller();
-    method public android.view.View findViewByPosition(int);
-    method public int getChildCount();
-    method public int getChildPosition(android.view.View);
-    method public android.support.v7.widget.RecyclerView.LayoutManager getLayoutManager();
-    method public int getTargetPosition();
-    method public deprecated void instantScrollToPosition(int);
-    method public boolean isPendingInitialRun();
-    method public boolean isRunning();
-    method protected void normalize(android.graphics.PointF);
-    method protected void onChildAttachedToWindow(android.view.View);
-    method protected abstract void onSeekTargetStep(int, int, android.support.v7.widget.RecyclerView.State, android.support.v7.widget.RecyclerView.SmoothScroller.Action);
-    method protected abstract void onStart();
-    method protected abstract void onStop();
-    method protected abstract void onTargetFound(android.view.View, android.support.v7.widget.RecyclerView.State, android.support.v7.widget.RecyclerView.SmoothScroller.Action);
-    method public void setTargetPosition(int);
-    method protected final void stop();
-  }
-
-  public static class RecyclerView.SmoothScroller.Action {
-    ctor public RecyclerView.SmoothScroller.Action(int, int);
-    ctor public RecyclerView.SmoothScroller.Action(int, int, int);
-    ctor public RecyclerView.SmoothScroller.Action(int, int, int, android.view.animation.Interpolator);
-    method public int getDuration();
-    method public int getDx();
-    method public int getDy();
-    method public android.view.animation.Interpolator getInterpolator();
-    method public void jumpTo(int);
-    method public void setDuration(int);
-    method public void setDx(int);
-    method public void setDy(int);
-    method public void setInterpolator(android.view.animation.Interpolator);
-    method public void update(int, int, int, android.view.animation.Interpolator);
-    field public static final int UNDEFINED_DURATION = -2147483648; // 0x80000000
-  }
-
-  public static abstract interface RecyclerView.SmoothScroller.ScrollVectorProvider {
-    method public abstract android.graphics.PointF computeScrollVectorForPosition(int);
-  }
-
-  public static class RecyclerView.State {
-    ctor public RecyclerView.State();
-    method public boolean didStructureChange();
-    method public <T> T get(int);
-    method public int getItemCount();
-    method public int getTargetScrollPosition();
-    method public boolean hasTargetScrollPosition();
-    method public boolean isMeasuring();
-    method public boolean isPreLayout();
-    method public void put(int, java.lang.Object);
-    method public void remove(int);
-    method public boolean willRunPredictiveAnimations();
-    method public boolean willRunSimpleAnimations();
-  }
-
-  public static abstract class RecyclerView.ViewCacheExtension {
-    ctor public RecyclerView.ViewCacheExtension();
-    method public abstract android.view.View getViewForPositionAndType(android.support.v7.widget.RecyclerView.Recycler, int, int);
-  }
-
-  public static abstract class RecyclerView.ViewHolder {
-    ctor public RecyclerView.ViewHolder(android.view.View);
-    method public final int getAdapterPosition();
-    method public final long getItemId();
-    method public final int getItemViewType();
-    method public final int getLayoutPosition();
-    method public final int getOldPosition();
-    method public final deprecated int getPosition();
-    method public final boolean isRecyclable();
-    method public final void setIsRecyclable(boolean);
-    field public final android.view.View itemView;
-  }
-
-  public class RecyclerViewAccessibilityDelegate extends android.support.v4.view.AccessibilityDelegateCompat {
-    ctor public RecyclerViewAccessibilityDelegate(android.support.v7.widget.RecyclerView);
-    method public android.support.v4.view.AccessibilityDelegateCompat getItemDelegate();
-  }
-
-  public class SearchView extends android.support.v7.widget.LinearLayoutCompat implements android.support.v7.view.CollapsibleActionView {
-    ctor public SearchView(android.content.Context);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet, int);
-    method public int getImeOptions();
-    method public int getInputType();
-    method public int getMaxWidth();
-    method public java.lang.CharSequence getQuery();
-    method public java.lang.CharSequence getQueryHint();
-    method public android.support.v4.widget.CursorAdapter getSuggestionsAdapter();
-    method public boolean isIconfiedByDefault();
-    method public boolean isIconified();
-    method public boolean isQueryRefinementEnabled();
-    method public boolean isSubmitButtonEnabled();
-    method public void onActionViewCollapsed();
-    method public void onActionViewExpanded();
-    method public void setIconified(boolean);
-    method public void setIconifiedByDefault(boolean);
-    method public void setImeOptions(int);
-    method public void setInputType(int);
-    method public void setMaxWidth(int);
-    method public void setOnCloseListener(android.support.v7.widget.SearchView.OnCloseListener);
-    method public void setOnQueryTextFocusChangeListener(android.view.View.OnFocusChangeListener);
-    method public void setOnQueryTextListener(android.support.v7.widget.SearchView.OnQueryTextListener);
-    method public void setOnSearchClickListener(android.view.View.OnClickListener);
-    method public void setOnSuggestionListener(android.support.v7.widget.SearchView.OnSuggestionListener);
-    method public void setQuery(java.lang.CharSequence, boolean);
-    method public void setQueryHint(java.lang.CharSequence);
-    method public void setQueryRefinementEnabled(boolean);
-    method public void setSearchableInfo(android.app.SearchableInfo);
-    method public void setSubmitButtonEnabled(boolean);
-    method public void setSuggestionsAdapter(android.support.v4.widget.CursorAdapter);
-  }
-
-  public static abstract interface SearchView.OnCloseListener {
-    method public abstract boolean onClose();
-  }
-
-  public static abstract interface SearchView.OnQueryTextListener {
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
-  }
-
-  public static abstract interface SearchView.OnSuggestionListener {
-    method public abstract boolean onSuggestionClick(int);
-    method public abstract boolean onSuggestionSelect(int);
-  }
-
-  public class ShareActionProvider extends android.support.v4.view.ActionProvider {
-    ctor public ShareActionProvider(android.content.Context);
-    method public android.view.View onCreateActionView();
-    method public void setOnShareTargetSelectedListener(android.support.v7.widget.ShareActionProvider.OnShareTargetSelectedListener);
-    method public void setShareHistoryFileName(java.lang.String);
-    method public void setShareIntent(android.content.Intent);
-    field public static final java.lang.String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml";
-  }
-
-  public static abstract interface ShareActionProvider.OnShareTargetSelectedListener {
-    method public abstract boolean onShareTargetSelected(android.support.v7.widget.ShareActionProvider, android.content.Intent);
-  }
-
-  public abstract class SimpleItemAnimator extends android.support.v7.widget.RecyclerView.ItemAnimator {
-    ctor public SimpleItemAnimator();
-    method public abstract boolean animateAdd(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public boolean animateAppearance(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo);
-    method public boolean animateChange(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo);
-    method public abstract boolean animateChange(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ViewHolder, int, int, int, int);
-    method public boolean animateDisappearance(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo);
-    method public abstract boolean animateMove(android.support.v7.widget.RecyclerView.ViewHolder, int, int, int, int);
-    method public boolean animatePersistence(android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo, android.support.v7.widget.RecyclerView.ItemAnimator.ItemHolderInfo);
-    method public abstract boolean animateRemove(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void dispatchAddFinished(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void dispatchAddStarting(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void dispatchChangeFinished(android.support.v7.widget.RecyclerView.ViewHolder, boolean);
-    method public final void dispatchChangeStarting(android.support.v7.widget.RecyclerView.ViewHolder, boolean);
-    method public final void dispatchMoveFinished(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void dispatchMoveStarting(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void dispatchRemoveFinished(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public final void dispatchRemoveStarting(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public boolean getSupportsChangeAnimations();
-    method public void onAddFinished(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void onAddStarting(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void onChangeFinished(android.support.v7.widget.RecyclerView.ViewHolder, boolean);
-    method public void onChangeStarting(android.support.v7.widget.RecyclerView.ViewHolder, boolean);
-    method public void onMoveFinished(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void onMoveStarting(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void onRemoveFinished(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void onRemoveStarting(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void setSupportsChangeAnimations(boolean);
-  }
-
-  public abstract class SnapHelper extends android.support.v7.widget.RecyclerView.OnFlingListener {
-    ctor public SnapHelper();
-    method public void attachToRecyclerView(android.support.v7.widget.RecyclerView) throws java.lang.IllegalStateException;
-    method public abstract int[] calculateDistanceToFinalSnap(android.support.v7.widget.RecyclerView.LayoutManager, android.view.View);
-    method public int[] calculateScrollDistance(int, int);
-    method protected android.support.v7.widget.LinearSmoothScroller createSnapScroller(android.support.v7.widget.RecyclerView.LayoutManager);
-    method public abstract android.view.View findSnapView(android.support.v7.widget.RecyclerView.LayoutManager);
-    method public abstract int findTargetSnapPosition(android.support.v7.widget.RecyclerView.LayoutManager, int, int);
-    method public boolean onFling(int, int);
-  }
-
-  public class StaggeredGridLayoutManager extends android.support.v7.widget.RecyclerView.LayoutManager implements android.support.v7.widget.RecyclerView.SmoothScroller.ScrollVectorProvider {
-    ctor public StaggeredGridLayoutManager(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public StaggeredGridLayoutManager(int, int);
-    method public android.graphics.PointF computeScrollVectorForPosition(int);
-    method public int[] findFirstCompletelyVisibleItemPositions(int[]);
-    method public int[] findFirstVisibleItemPositions(int[]);
-    method public int[] findLastCompletelyVisibleItemPositions(int[]);
-    method public int[] findLastVisibleItemPositions(int[]);
-    method public android.support.v7.widget.RecyclerView.LayoutParams generateDefaultLayoutParams();
-    method public int getGapStrategy();
-    method public int getOrientation();
-    method public boolean getReverseLayout();
-    method public int getSpanCount();
-    method public void invalidateSpanAssignments();
-    method public void scrollToPositionWithOffset(int, int);
-    method public void setGapStrategy(int);
-    method public void setOrientation(int);
-    method public void setReverseLayout(boolean);
-    method public void setSpanCount(int);
-    field public static final deprecated int GAP_HANDLING_LAZY = 1; // 0x1
-    field public static final int GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS = 2; // 0x2
-    field public static final int GAP_HANDLING_NONE = 0; // 0x0
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public static class StaggeredGridLayoutManager.LayoutParams extends android.support.v7.widget.RecyclerView.LayoutParams {
-    ctor public StaggeredGridLayoutManager.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public StaggeredGridLayoutManager.LayoutParams(int, int);
-    ctor public StaggeredGridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public StaggeredGridLayoutManager.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public StaggeredGridLayoutManager.LayoutParams(android.support.v7.widget.RecyclerView.LayoutParams);
-    method public final int getSpanIndex();
-    method public boolean isFullSpan();
-    method public void setFullSpan(boolean);
-    field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
-  }
-
-  public class SwitchCompat extends android.widget.CompoundButton {
-    ctor public SwitchCompat(android.content.Context);
-    ctor public SwitchCompat(android.content.Context, android.util.AttributeSet);
-    ctor public SwitchCompat(android.content.Context, android.util.AttributeSet, int);
-    method public boolean getShowText();
-    method public boolean getSplitTrack();
-    method public int getSwitchMinWidth();
-    method public int getSwitchPadding();
-    method public java.lang.CharSequence getTextOff();
-    method public java.lang.CharSequence getTextOn();
-    method public android.graphics.drawable.Drawable getThumbDrawable();
-    method public int getThumbTextPadding();
-    method public android.content.res.ColorStateList getThumbTintList();
-    method public android.graphics.PorterDuff.Mode getThumbTintMode();
-    method public android.graphics.drawable.Drawable getTrackDrawable();
-    method public android.content.res.ColorStateList getTrackTintList();
-    method public android.graphics.PorterDuff.Mode getTrackTintMode();
-    method public void onMeasure(int, int);
-    method public void setShowText(boolean);
-    method public void setSplitTrack(boolean);
-    method public void setSwitchMinWidth(int);
-    method public void setSwitchPadding(int);
-    method public void setSwitchTextAppearance(android.content.Context, int);
-    method public void setSwitchTypeface(android.graphics.Typeface, int);
-    method public void setSwitchTypeface(android.graphics.Typeface);
-    method public void setTextOff(java.lang.CharSequence);
-    method public void setTextOn(java.lang.CharSequence);
-    method public void setThumbDrawable(android.graphics.drawable.Drawable);
-    method public void setThumbResource(int);
-    method public void setThumbTextPadding(int);
-    method public void setThumbTintList(android.content.res.ColorStateList);
-    method public void setThumbTintMode(android.graphics.PorterDuff.Mode);
-    method public void setTrackDrawable(android.graphics.drawable.Drawable);
-    method public void setTrackResource(int);
-    method public void setTrackTintList(android.content.res.ColorStateList);
-    method public void setTrackTintMode(android.graphics.PorterDuff.Mode);
-  }
-
-  public abstract interface ThemedSpinnerAdapter implements android.widget.SpinnerAdapter {
-    method public abstract android.content.res.Resources.Theme getDropDownViewTheme();
-    method public abstract void setDropDownViewTheme(android.content.res.Resources.Theme);
-  }
-
-  public static final class ThemedSpinnerAdapter.Helper {
-    ctor public ThemedSpinnerAdapter.Helper(android.content.Context);
-    method public android.view.LayoutInflater getDropDownViewInflater();
-    method public android.content.res.Resources.Theme getDropDownViewTheme();
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme);
-  }
-
-  public class Toolbar extends android.view.ViewGroup {
-    ctor public Toolbar(android.content.Context);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet, int);
-    method public void collapseActionView();
-    method public void dismissPopupMenus();
-    method public int getContentInsetEnd();
-    method public int getContentInsetEndWithActions();
-    method public int getContentInsetLeft();
-    method public int getContentInsetRight();
-    method public int getContentInsetStart();
-    method public int getContentInsetStartWithNavigation();
-    method public int getCurrentContentInsetEnd();
-    method public int getCurrentContentInsetLeft();
-    method public int getCurrentContentInsetRight();
-    method public int getCurrentContentInsetStart();
-    method public android.graphics.drawable.Drawable getLogo();
-    method public java.lang.CharSequence getLogoDescription();
-    method public android.view.Menu getMenu();
-    method public java.lang.CharSequence getNavigationContentDescription();
-    method public android.graphics.drawable.Drawable getNavigationIcon();
-    method public android.graphics.drawable.Drawable getOverflowIcon();
-    method public int getPopupTheme();
-    method public java.lang.CharSequence getSubtitle();
-    method public java.lang.CharSequence getTitle();
-    method public int getTitleMarginBottom();
-    method public int getTitleMarginEnd();
-    method public int getTitleMarginStart();
-    method public int getTitleMarginTop();
-    method public boolean hasExpandedActionView();
-    method public boolean hideOverflowMenu();
-    method public void inflateMenu(int);
-    method public boolean isOverflowMenuShowing();
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void setContentInsetEndWithActions(int);
-    method public void setContentInsetStartWithNavigation(int);
-    method public void setContentInsetsAbsolute(int, int);
-    method public void setContentInsetsRelative(int, int);
-    method public void setLogo(int);
-    method public void setLogo(android.graphics.drawable.Drawable);
-    method public void setLogoDescription(int);
-    method public void setLogoDescription(java.lang.CharSequence);
-    method public void setNavigationContentDescription(int);
-    method public void setNavigationContentDescription(java.lang.CharSequence);
-    method public void setNavigationIcon(int);
-    method public void setNavigationIcon(android.graphics.drawable.Drawable);
-    method public void setNavigationOnClickListener(android.view.View.OnClickListener);
-    method public void setOnMenuItemClickListener(android.support.v7.widget.Toolbar.OnMenuItemClickListener);
-    method public void setOverflowIcon(android.graphics.drawable.Drawable);
-    method public void setPopupTheme(int);
-    method public void setSubtitle(int);
-    method public void setSubtitle(java.lang.CharSequence);
-    method public void setSubtitleTextAppearance(android.content.Context, int);
-    method public void setSubtitleTextColor(int);
-    method public void setTitle(int);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleMargin(int, int, int, int);
-    method public void setTitleMarginBottom(int);
-    method public void setTitleMarginEnd(int);
-    method public void setTitleMarginStart(int);
-    method public void setTitleMarginTop(int);
-    method public void setTitleTextAppearance(android.content.Context, int);
-    method public void setTitleTextColor(int);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class Toolbar.LayoutParams extends android.support.v7.app.ActionBar.LayoutParams {
-    ctor public Toolbar.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public Toolbar.LayoutParams(int, int);
-    ctor public Toolbar.LayoutParams(int, int, int);
-    ctor public Toolbar.LayoutParams(int);
-    ctor public Toolbar.LayoutParams(android.support.v7.widget.Toolbar.LayoutParams);
-    ctor public Toolbar.LayoutParams(android.support.v7.app.ActionBar.LayoutParams);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.LayoutParams);
-  }
-
-  public static abstract interface Toolbar.OnMenuItemClickListener {
-    method public abstract boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  public static class Toolbar.SavedState extends android.support.v4.view.AbsSavedState {
-    ctor public Toolbar.SavedState(android.os.Parcel);
-    ctor public Toolbar.SavedState(android.os.Parcel, java.lang.ClassLoader);
-    ctor public Toolbar.SavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<android.support.v7.widget.Toolbar.SavedState> CREATOR;
-  }
-
-}
-
-package android.support.v7.widget.helper {
-
-  public class ItemTouchHelper extends android.support.v7.widget.RecyclerView.ItemDecoration implements android.support.v7.widget.RecyclerView.OnChildAttachStateChangeListener {
-    ctor public ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper.Callback);
-    method public void attachToRecyclerView(android.support.v7.widget.RecyclerView);
-    method public void onChildViewAttachedToWindow(android.view.View);
-    method public void onChildViewDetachedFromWindow(android.view.View);
-    method public void startDrag(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void startSwipe(android.support.v7.widget.RecyclerView.ViewHolder);
-    field public static final int ACTION_STATE_DRAG = 2; // 0x2
-    field public static final int ACTION_STATE_IDLE = 0; // 0x0
-    field public static final int ACTION_STATE_SWIPE = 1; // 0x1
-    field public static final int ANIMATION_TYPE_DRAG = 8; // 0x8
-    field public static final int ANIMATION_TYPE_SWIPE_CANCEL = 4; // 0x4
-    field public static final int ANIMATION_TYPE_SWIPE_SUCCESS = 2; // 0x2
-    field public static final int DOWN = 2; // 0x2
-    field public static final int END = 32; // 0x20
-    field public static final int LEFT = 4; // 0x4
-    field public static final int RIGHT = 8; // 0x8
-    field public static final int START = 16; // 0x10
-    field public static final int UP = 1; // 0x1
-  }
-
-  public static abstract class ItemTouchHelper.Callback {
-    ctor public ItemTouchHelper.Callback();
-    method public boolean canDropOver(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ViewHolder);
-    method public android.support.v7.widget.RecyclerView.ViewHolder chooseDropTarget(android.support.v7.widget.RecyclerView.ViewHolder, java.util.List<android.support.v7.widget.RecyclerView.ViewHolder>, int, int);
-    method public void clearView(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder);
-    method public int convertToAbsoluteDirection(int, int);
-    method public static int convertToRelativeDirection(int, int);
-    method public long getAnimationDuration(android.support.v7.widget.RecyclerView, int, float, float);
-    method public int getBoundingBoxMargin();
-    method public static android.support.v7.widget.helper.ItemTouchUIUtil getDefaultUIUtil();
-    method public float getMoveThreshold(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public abstract int getMovementFlags(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder);
-    method public float getSwipeEscapeVelocity(float);
-    method public float getSwipeThreshold(android.support.v7.widget.RecyclerView.ViewHolder);
-    method public float getSwipeVelocityThreshold(float);
-    method public int interpolateOutOfBoundsScroll(android.support.v7.widget.RecyclerView, int, int, int, long);
-    method public boolean isItemViewSwipeEnabled();
-    method public boolean isLongPressDragEnabled();
-    method public static int makeFlag(int, int);
-    method public static int makeMovementFlags(int, int);
-    method public void onChildDraw(android.graphics.Canvas, android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder, float, float, int, boolean);
-    method public void onChildDrawOver(android.graphics.Canvas, android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder, float, float, int, boolean);
-    method public abstract boolean onMove(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder, android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void onMoved(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder, int, android.support.v7.widget.RecyclerView.ViewHolder, int, int, int);
-    method public void onSelectedChanged(android.support.v7.widget.RecyclerView.ViewHolder, int);
-    method public abstract void onSwiped(android.support.v7.widget.RecyclerView.ViewHolder, int);
-    field public static final int DEFAULT_DRAG_ANIMATION_DURATION = 200; // 0xc8
-    field public static final int DEFAULT_SWIPE_ANIMATION_DURATION = 250; // 0xfa
-  }
-
-  public static abstract class ItemTouchHelper.SimpleCallback extends android.support.v7.widget.helper.ItemTouchHelper.Callback {
-    ctor public ItemTouchHelper.SimpleCallback(int, int);
-    method public int getDragDirs(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder);
-    method public int getMovementFlags(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder);
-    method public int getSwipeDirs(android.support.v7.widget.RecyclerView, android.support.v7.widget.RecyclerView.ViewHolder);
-    method public void setDefaultDragDirs(int);
-    method public void setDefaultSwipeDirs(int);
-  }
-
-  public static abstract interface ItemTouchHelper.ViewDropHandler {
-    method public abstract void prepareForDrop(android.view.View, android.view.View, int, int);
-  }
-
-  public abstract interface ItemTouchUIUtil {
-    method public abstract void clearView(android.view.View);
-    method public abstract void onDraw(android.graphics.Canvas, android.support.v7.widget.RecyclerView, android.view.View, float, float, int, boolean);
-    method public abstract void onDrawOver(android.graphics.Canvas, android.support.v7.widget.RecyclerView, android.view.View, float, float, int, boolean);
-    method public abstract void onSelected(android.view.View);
-  }
-
-}
-
-package android.support.v7.widget.util {
-
-  public abstract class SortedListAdapterCallback<T2> extends android.support.v7.util.SortedList.Callback {
-    ctor public SortedListAdapterCallback(android.support.v7.widget.RecyclerView.Adapter);
-    method public void onChanged(int, int);
-    method public void onInserted(int, int);
-    method public void onMoved(int, int);
-    method public void onRemoved(int, int);
-  }
-
-}
-
diff --git a/build.gradle b/build.gradle
index 57beee7..ddb70c5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,7 +24,7 @@
     }
     dependencies {
         // Keep gradle plugin version in sync with ub_supportlib-master manifest.
-        classpath 'com.android.tools.build:gradle:2.2.4'
+        classpath 'com.android.tools.build:gradle:2.3.0'
     }
 }
 
diff --git a/compat/api21/android/support/v4/view/ViewCompatLollipop.java b/compat/api21/android/support/v4/view/ViewCompatLollipop.java
index f38fec0..1f226fc 100644
--- a/compat/api21/android/support/v4/view/ViewCompatLollipop.java
+++ b/compat/api21/android/support/v4/view/ViewCompatLollipop.java
@@ -207,7 +207,7 @@
                     view.getRight(), view.getBottom());
         }
 
-        // Now offset, invoking the API 11+ implementation (which contains it's own workarounds)
+        // Now offset, invoking the API 11+ implementation (which contains its own workarounds)
         ViewCompatHC.offsetTopAndBottom(view, offset);
 
         // The view has now been offset, so let's intersect the Rect and invalidate where
@@ -232,7 +232,7 @@
                     view.getRight(), view.getBottom());
         }
 
-        // Now offset, invoking the API 11+ implementation (which contains it's own workarounds)
+        // Now offset, invoking the API 11+ implementation (which contains its own workarounds)
         ViewCompatHC.offsetLeftAndRight(view, offset);
 
         // The view has now been offset, so let's intersect the Rect and invalidate where
diff --git a/compat/gingerbread/android/support/v4/graphics/drawable/DrawableWrapperGingerbread.java b/compat/gingerbread/android/support/v4/graphics/drawable/DrawableWrapperGingerbread.java
index 646c677..4b6613e 100644
--- a/compat/gingerbread/android/support/v4/graphics/drawable/DrawableWrapperGingerbread.java
+++ b/compat/gingerbread/android/support/v4/graphics/drawable/DrawableWrapperGingerbread.java
@@ -30,7 +30,7 @@
 import android.annotation.TargetApi;
 
 /**
- * Drawable which delegates all calls to it's wrapped {@link Drawable}.
+ * Drawable which delegates all calls to its wrapped {@link Drawable}.
  * <p/>
  * Also allows backward compatible tinting via a color or {@link ColorStateList}.
  * This functionality is accessed via static methods in {@code DrawableCompat}.
diff --git a/compat/gingerbread/android/support/v4/os/BuildCompat.java b/compat/gingerbread/android/support/v4/os/BuildCompat.java
index 7a2efe0..b8e9d9b 100644
--- a/compat/gingerbread/android/support/v4/os/BuildCompat.java
+++ b/compat/gingerbread/android/support/v4/os/BuildCompat.java
@@ -26,6 +26,12 @@
 public class BuildCompat {
     private BuildCompat() {
     }
+    /* Boilerplate for isAtLeast${PLATFORM}:
+     * public static boolean isAtLeast*() {
+     *     return !"REL".equals(VERSION.CODENAME)
+     *             && ("${PLATFORM}".equals(VERSION.CODENAME) || VERSION.CODENAME.startsWith("${PLATFORM}MR"));
+     * }
+     */
 
     /**
      * Check if the device is running on the Android N release or newer.
diff --git a/compat/java/android/support/v4/graphics/BitmapCompat.java b/compat/java/android/support/v4/graphics/BitmapCompat.java
index b01c4f5..599b737 100644
--- a/compat/java/android/support/v4/graphics/BitmapCompat.java
+++ b/compat/java/android/support/v4/graphics/BitmapCompat.java
@@ -102,7 +102,7 @@
      * Returns the size of the allocated memory used to store this bitmap's pixels in a backwards
      * compatible way.
      *
-     * @param bitmap the bitmap in which to return it's allocation size
+     * @param bitmap the bitmap in which to return its allocation size
      * @return the allocation size in bytes
      */
     public static int getAllocationByteCount(Bitmap bitmap) {
diff --git a/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java b/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
index f203f40..bd3424c 100644
--- a/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
+++ b/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
@@ -471,7 +471,7 @@
      * drawable, such as its bounds, level, visibility and state.</p>
      *
      * <p>You must use the result of this call. If the given drawable is being used by a view
-     * (as it's background for instance), you must replace the original drawable with
+     * (as its background for instance), you must replace the original drawable with
      * the result of this call:</p>
      *
      * <pre>
diff --git a/compat/java/android/support/v4/view/OnApplyWindowInsetsListener.java b/compat/java/android/support/v4/view/OnApplyWindowInsetsListener.java
index d53896e..ac9d28f 100644
--- a/compat/java/android/support/v4/view/OnApplyWindowInsetsListener.java
+++ b/compat/java/android/support/v4/view/OnApplyWindowInsetsListener.java
@@ -23,7 +23,7 @@
  *
  * <p>Apps may choose to implement this interface if they want to apply custom policy
  * to the way that window insets are treated for a view. If an OnApplyWindowInsetsListener
- * is set, it's
+ * is set, its
  * {@link #onApplyWindowInsets(android.view.View, WindowInsetsCompat) onApplyWindowInsets}
  * method will be called instead of the View's own {@code onApplyWindowInsets} method.
  * The listener may optionally call the parameter View's <code>onApplyWindowInsets</code>
diff --git a/compat/java/android/support/v4/view/ViewCompat.java b/compat/java/android/support/v4/view/ViewCompat.java
index 82ac508..bacd900 100644
--- a/compat/java/android/support/v4/view/ViewCompat.java
+++ b/compat/java/android/support/v4/view/ViewCompat.java
@@ -541,11 +541,11 @@
         }
         @Override
         public void postInvalidateOnAnimation(View view) {
-            view.invalidate();
+            view.postInvalidate();
         }
         @Override
         public void postInvalidateOnAnimation(View view, int left, int top, int right, int bottom) {
-            view.invalidate(left, top, right, bottom);
+            view.postInvalidate(left, top, right, bottom);
         }
         @Override
         public void postOnAnimation(View view, Runnable action) {
diff --git a/core-utils/java/android/support/v4/graphics/ColorUtils.java b/core-utils/java/android/support/v4/graphics/ColorUtils.java
index 85768f6..c58d2ba 100644
--- a/core-utils/java/android/support/v4/graphics/ColorUtils.java
+++ b/core-utils/java/android/support/v4/graphics/ColorUtils.java
@@ -335,7 +335,7 @@
     }
 
     /**
-     * Convert the ARGB color to it's CIE XYZ representative components.
+     * Convert the ARGB color to its CIE XYZ representative components.
      *
      * <p>The resulting XYZ representation will use the D65 illuminant and the CIE
      * 2° Standard Observer (1931).</p>
@@ -354,7 +354,7 @@
     }
 
     /**
-     * Convert RGB components to it's CIE XYZ representative components.
+     * Convert RGB components to its CIE XYZ representative components.
      *
      * <p>The resulting XYZ representation will use the D65 illuminant and the CIE
      * 2° Standard Observer (1931).</p>
diff --git a/design/src/android/support/design/widget/BottomSheetBehavior.java b/design/src/android/support/design/widget/BottomSheetBehavior.java
index e745217..4419d86 100644
--- a/design/src/android/support/design/widget/BottomSheetBehavior.java
+++ b/design/src/android/support/design/widget/BottomSheetBehavior.java
@@ -31,7 +31,6 @@
 import android.support.v4.os.ParcelableCompatCreatorCallbacks;
 import android.support.v4.view.AbsSavedState;
 import android.support.v4.view.MotionEventCompat;
-import android.support.v4.view.NestedScrollingChild;
 import android.support.v4.view.VelocityTrackerCompat;
 import android.support.v4.view.ViewCompat;
 import android.support.v4.widget.ViewDragHelper;
@@ -284,7 +283,8 @@
             case MotionEvent.ACTION_DOWN:
                 int initialX = (int) event.getX();
                 mInitialY = (int) event.getY();
-                View scroll = mNestedScrollingChildRef.get();
+                View scroll = mNestedScrollingChildRef != null
+                        ? mNestedScrollingChildRef.get() : null;
                 if (scroll != null && parent.isPointInChildBounds(scroll, initialX, mInitialY)) {
                     mActivePointerId = event.getPointerId(event.getActionIndex());
                     mTouchingScrollingChild = true;
@@ -385,7 +385,8 @@
             setStateInternal(STATE_EXPANDED);
             return;
         }
-        if (target != mNestedScrollingChildRef.get() || !mNestedScrolled) {
+        if (mNestedScrollingChildRef == null || target != mNestedScrollingChildRef.get()
+                || !mNestedScrolled) {
             return;
         }
         int top;
@@ -597,8 +598,9 @@
         return Math.abs(newTop - mMaxOffset) / (float) mPeekHeight > HIDE_THRESHOLD;
     }
 
-    private View findScrollingChild(View view) {
-        if (view instanceof NestedScrollingChild) {
+    @VisibleForTesting
+    View findScrollingChild(View view) {
+        if (ViewCompat.isNestedScrollingEnabled(view)) {
             return view;
         }
         if (view instanceof ViewGroup) {
diff --git a/design/tests/src/android/support/design/widget/BottomSheetBehaviorTest.java b/design/tests/src/android/support/design/widget/BottomSheetBehaviorTest.java
index 13ed01e..24d8eee 100644
--- a/design/tests/src/android/support/design/widget/BottomSheetBehaviorTest.java
+++ b/design/tests/src/android/support/design/widget/BottomSheetBehaviorTest.java
@@ -23,6 +23,7 @@
 import static org.hamcrest.Matchers.lessThanOrEqualTo;
 import static org.junit.Assert.fail;
 
+import android.content.Context;
 import android.os.SystemClock;
 import android.support.annotation.LayoutRes;
 import android.support.annotation.NonNull;
@@ -713,6 +714,19 @@
         }
     }
 
+    @Test
+    public void testFindScrollingChildEnabled() {
+        Context context = mActivityTestRule.getActivity();
+        NestedScrollView disabledParent = new NestedScrollView(context);
+        disabledParent.setNestedScrollingEnabled(false);
+        NestedScrollView enabledChild = new NestedScrollView(context);
+        enabledChild.setNestedScrollingEnabled(true);
+        disabledParent.addView(enabledChild);
+
+        View scrollingChild = getBehavior().findScrollingChild(disabledParent);
+        assertThat(scrollingChild, is((View) enabledChild));
+    }
+
     private void checkSetState(final int state, Matcher<View> matcher) throws Throwable {
         registerIdlingResourceCallback();
         try {
diff --git a/graphics/drawable/static/src/android/support/graphics/drawable/VectorDrawableCompat.java b/graphics/drawable/static/src/android/support/graphics/drawable/VectorDrawableCompat.java
index 1b90f8e..69b34a0 100644
--- a/graphics/drawable/static/src/android/support/graphics/drawable/VectorDrawableCompat.java
+++ b/graphics/drawable/static/src/android/support/graphics/drawable/VectorDrawableCompat.java
@@ -81,36 +81,27 @@
  * <dl>
  * <dt><code>android:name</code></dt>
  * <dd>Defines the name of this vector drawable.</dd>
- * <dd>Animatable : No.</dd>
  * <dt><code>android:width</code></dt>
  * <dd>Used to define the intrinsic width of the drawable.
  * This support all the dimension units, normally specified with dp.</dd>
- * <dd>Animatable : No.</dd>
  * <dt><code>android:height</code></dt>
  * <dd>Used to define the intrinsic height the drawable.
  * This support all the dimension units, normally specified with dp.</dd>
- * <dd>Animatable : No.</dd>
  * <dt><code>android:viewportWidth</code></dt>
  * <dd>Used to define the width of the viewport space. Viewport is basically
  * the virtual canvas where the paths are drawn on.</dd>
- * <dd>Animatable : No.</dd>
  * <dt><code>android:viewportHeight</code></dt>
  * <dd>Used to define the height of the viewport space. Viewport is basically
  * the virtual canvas where the paths are drawn on.</dd>
- * <dd>Animatable : No.</dd>
  * <dt><code>android:tint</code></dt>
  * <dd>The color to apply to the drawable as a tint. By default, no tint is applied.</dd>
- * <dd>Animatable : No.</dd>
  * <dt><code>android:tintMode</code></dt>
- * <dd>The Porter-Duff blending mode for the tint color. The default value is src_in.</dd>
- * <dd>Animatable : No.</dd>
+ * <dd>The Porter-Duff blending mode for the tint color. Default is src_in.</dd>
  * <dt><code>android:autoMirrored</code></dt>
  * <dd>Indicates if the drawable needs to be mirrored when its layout direction is
- * RTL (right-to-left).</dd>
- * <dd>Animatable : No.</dd>
+ * RTL (right-to-left). Default is false.</dd>
  * <dt><code>android:alpha</code></dt>
- * <dd>The opacity of this drawable.</dd>
- * <dd>Animatable : Yes.</dd>
+ * <dd>The opacity of this drawable. Default is 1.</dd>
  * </dl></dd>
  * </dl>
  *
@@ -122,32 +113,24 @@
  * <dl>
  * <dt><code>android:name</code></dt>
  * <dd>Defines the name of the group.</dd>
- * <dd>Animatable : No.</dd>
  * <dt><code>android:rotation</code></dt>
- * <dd>The degrees of rotation of the group.</dd>
- * <dd>Animatable : Yes.</dd>
+ * <dd>The degrees of rotation of the group. Default is 0.</dd>
  * <dt><code>android:pivotX</code></dt>
  * <dd>The X coordinate of the pivot for the scale and rotation of the group.
- * This is defined in the viewport space.</dd>
- * <dd>Animatable : Yes.</dd>
+ * This is defined in the viewport space. Default is 0.</dd>
  * <dt><code>android:pivotY</code></dt>
  * <dd>The Y coordinate of the pivot for the scale and rotation of the group.
- * This is defined in the viewport space.</dd>
- * <dd>Animatable : Yes.</dd>
+ * This is defined in the viewport space. Default is 0.</dd>
  * <dt><code>android:scaleX</code></dt>
- * <dd>The amount of scale on the X Coordinate.</dd>
- * <dd>Animatable : Yes.</dd>
+ * <dd>The amount of scale on the X Coordinate. Default is 1.</dd>
  * <dt><code>android:scaleY</code></dt>
- * <dd>The amount of scale on the Y coordinate.</dd>
- * <dd>Animatable : Yes.</dd>
+ * <dd>The amount of scale on the Y coordinate. Default is 1.</dd>
  * <dt><code>android:translateX</code></dt>
  * <dd>The amount of translation on the X coordinate.
- * This is defined in the viewport space.</dd>
- * <dd>Animatable : Yes.</dd>
+ * This is defined in the viewport space. Default is 0.</dd>
  * <dt><code>android:translateY</code></dt>
  * <dd>The amount of translation on the Y coordinate.
- * This is defined in the viewport space.</dd>
- * <dd>Animatable : Yes.</dd>
+ * This is defined in the viewport space. Default is 0.</dd>
  * </dl></dd>
  * </dl>
  *
@@ -157,49 +140,36 @@
  * <dl>
  * <dt><code>android:name</code></dt>
  * <dd>Defines the name of the path.</dd>
- * <dd>Animatable : No.</dd>
  * <dt><code>android:pathData</code></dt>
  * <dd>Defines path data using exactly same format as "d" attribute
  * in the SVG's path data. This is defined in the viewport space.</dd>
- * <dd>Animatable : Yes.</dd>
  * <dt><code>android:fillColor</code></dt>
  * <dd>Specifies the color used to fill the path.
  * If this property is animated, any value set by the animation will override the original value.
  * No path fill is drawn if this property is not specified.</dd>
- * <dd>Animatable : Yes.</dd>
  * <dt><code>android:strokeColor</code></dt>
  * <dd>Specifies the color used to draw the path outline.
  * If this property is animated, any value set by the animation will override the original value.
  * No path outline is drawn if this property is not specified.</dd>
- * <dd>Animatable : Yes.</dd>
  * <dt><code>android:strokeWidth</code></dt>
- * <dd>The width a path stroke.</dd>
- * <dd>Animatable : Yes.</dd>
+ * <dd>The width a path stroke. Default is 0.</dd>
  * <dt><code>android:strokeAlpha</code></dt>
- * <dd>The opacity of a path stroke.</dd>
- * <dd>Animatable : Yes.</dd>
+ * <dd>The opacity of a path stroke. Default is 1.</dd>
  * <dt><code>android:fillAlpha</code></dt>
- * <dd>The opacity to fill the path with.</dd>
- * <dd>Animatable : Yes.</dd>
+ * <dd>The opacity to fill the path with. Default is 1.</dd>
  * <dt><code>android:trimPathStart</code></dt>
- * <dd>The fraction of the path to trim from the start, in the range from 0 to 1.</dd>
- * <dd>Animatable : Yes.</dd>
+ * <dd>The fraction of the path to trim from the start, in the range from 0 to 1. Default is 0.</dd>
  * <dt><code>android:trimPathEnd</code></dt>
- * <dd>The fraction of the path to trim from the end, in the range from 0 to 1.</dd>
- * <dd>Animatable : Yes.</dd>
+ * <dd>The fraction of the path to trim from the end, in the range from 0 to 1. Default is 1.</dd>
  * <dt><code>android:trimPathOffset</code></dt>
  * <dd>Shift trim region (allows showed region to include the start and end), in the range
- * from 0 to 1.</dd>
- * <dd>Animatable : Yes.</dd>
+ * from 0 to 1. Default is 0.</dd>
  * <dt><code>android:strokeLineCap</code></dt>
- * <dd>Sets the linecap for a stroked path: butt, round, square.</dd>
- * <dd>Animatable : No.</dd>
+ * <dd>Sets the linecap for a stroked path: butt, round, square. Default is butt.</dd>
  * <dt><code>android:strokeLineJoin</code></dt>
- * <dd>Sets the lineJoin for a stroked path: miter,round,bevel.</dd>
- * <dd>Animatable : No.</dd>
+ * <dd>Sets the lineJoin for a stroked path: miter,round,bevel. Default is miter.</dd>
  * <dt><code>android:strokeMiterLimit</code></dt>
- * <dd>Sets the Miter limit for a stroked path.</dd>
- * <dd>Animatable : No.</dd>
+ * <dd>Sets the Miter limit for a stroked path. Default is 4.</dd>
  * </dl></dd>
  * </dl>
  *
@@ -210,13 +180,14 @@
  * <dl>
  * <dt><code>android:name</code></dt>
  * <dd>Defines the name of the clip path.</dd>
- * <dd>Animatable : No.</dd>
  * <dt><code>android:pathData</code></dt>
  * <dd>Defines clip path using the same format as "d" attribute
  * in the SVG's path data.</dd>
- * <dd>Animatable : Yes.</dd>
  * </dl></dd>
  * </dl>
+ * <p/>
+ * Note that theme attributes in XML file are supported through
+ * <code>{@link #inflate(Resources, XmlPullParser, AttributeSet, Theme)}</code>.
  */
 public class VectorDrawableCompat extends VectorDrawableCommon {
     static final String LOGTAG = "VectorDrawableCompat";
diff --git a/v17/leanback/res/values-bs-rBA/strings.xml b/v17/leanback/res/values-bs-rBA/strings.xml
index 63a76e2..cdfe434 100644
--- a/v17/leanback/res/values-bs-rBA/strings.xml
+++ b/v17/leanback/res/values-bs-rBA/strings.xml
@@ -53,5 +53,5 @@
     <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
     <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
     <string name="lb_onboarding_get_started" msgid="6961440391306351139">"ZAPOČNITE"</string>
-    <string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Naprijed"</string>
+    <string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Sljedeća"</string>
 </resources>
diff --git a/v17/leanback/src/android/support/v17/leanback/app/BrowseFragment.java b/v17/leanback/src/android/support/v17/leanback/app/BrowseFragment.java
index c64673b..dc40239 100644
--- a/v17/leanback/src/android/support/v17/leanback/app/BrowseFragment.java
+++ b/v17/leanback/src/android/support/v17/leanback/app/BrowseFragment.java
@@ -353,10 +353,10 @@
     }
 
     /**
-     * Interface that defines the interaction between {@link BrowseFragment} and it's main
+     * Interface that defines the interaction between {@link BrowseFragment} and its main
      * content fragment. The key method is {@link MainFragmentAdapter#getFragment()},
      * it will be used to get the fragment to be shown in the content section. Clients can
-     * provide any implementation of fragment and customize it's interaction with
+     * provide any implementation of fragment and customize its interaction with
      * {@link BrowseFragment} by overriding the necessary methods.
      *
      * <p>
@@ -473,7 +473,7 @@
     }
 
     /**
-     * Interface to be implemented by {@link RowsFragment} and it's subclasses for providing
+     * Interface to be implemented by {@link RowsFragment} and its subclasses for providing
      * an instance of {@link MainFragmentRowsAdapter}.
      */
     public interface MainFragmentRowsAdapterProvider {
@@ -606,7 +606,7 @@
 
     /**
      * Factory class responsible for creating fragment given the current item. {@link ListRow}
-     * should returns {@link RowsFragment} or it's subclass whereas {@link PageRow}
+     * should return {@link RowsFragment} or its subclass whereas {@link PageRow}
      * can return any fragment class.
      */
     public abstract static class FragmentFactory<T extends Fragment> {
diff --git a/v17/leanback/src/android/support/v17/leanback/app/BrowseSupportFragment.java b/v17/leanback/src/android/support/v17/leanback/app/BrowseSupportFragment.java
index 967bf56..21ce544 100644
--- a/v17/leanback/src/android/support/v17/leanback/app/BrowseSupportFragment.java
+++ b/v17/leanback/src/android/support/v17/leanback/app/BrowseSupportFragment.java
@@ -356,10 +356,10 @@
     }
 
     /**
-     * Interface that defines the interaction between {@link BrowseSupportFragment} and it's main
+     * Interface that defines the interaction between {@link BrowseSupportFragment} and its main
      * content fragment. The key method is {@link MainFragmentAdapter#getFragment()},
      * it will be used to get the fragment to be shown in the content section. Clients can
-     * provide any implementation of fragment and customize it's interaction with
+     * provide any implementation of fragment and customize its interaction with
      * {@link BrowseSupportFragment} by overriding the necessary methods.
      *
      * <p>
@@ -476,7 +476,7 @@
     }
 
     /**
-     * Interface to be implemented by {@link RowsSupportFragment} and it's subclasses for providing
+     * Interface to be implemented by {@link RowsSupportFragment} and its subclasses for providing
      * an instance of {@link MainFragmentRowsAdapter}.
      */
     public interface MainFragmentRowsAdapterProvider {
@@ -609,7 +609,7 @@
 
     /**
      * Factory class responsible for creating fragment given the current item. {@link ListRow}
-     * should returns {@link RowsSupportFragment} or it's subclass whereas {@link PageRow}
+     * should return {@link RowsSupportFragment} or its subclass whereas {@link PageRow}
      * can return any fragment class.
      */
     public abstract static class FragmentFactory<T extends Fragment> {
diff --git a/v17/leanback/src/android/support/v17/leanback/app/PlaybackControlGlue.java b/v17/leanback/src/android/support/v17/leanback/app/PlaybackControlGlue.java
index 190ce22..eb2ce28 100644
--- a/v17/leanback/src/android/support/v17/leanback/app/PlaybackControlGlue.java
+++ b/v17/leanback/src/android/support/v17/leanback/app/PlaybackControlGlue.java
@@ -66,7 +66,7 @@
  * </p>
  *
  * <p>This helper implements a key event handler. If you pass a
- * {@link PlaybackOverlayFragment}, it will configure it's
+ * {@link PlaybackOverlayFragment}, it will configure its
  * fragment to intercept all key events.  Otherwise, you should set the glue object as key event
  * handler to the ViewHolder when bound by your row presenter; see
  * {@link RowPresenter.ViewHolder#setOnKeyListener(android.view.View.OnKeyListener)}.
diff --git a/v17/leanback/src/android/support/v17/leanback/graphics/CompositeDrawable.java b/v17/leanback/src/android/support/v17/leanback/graphics/CompositeDrawable.java
index 3f60b52..5788393 100644
--- a/v17/leanback/src/android/support/v17/leanback/graphics/CompositeDrawable.java
+++ b/v17/leanback/src/android/support/v17/leanback/graphics/CompositeDrawable.java
@@ -32,7 +32,7 @@
 
 /**
  * Generic drawable class that can be composed of multiple children. Whenever the bounds changes
- * for this class, it updates those of it's children.
+ * for this class, it updates those of its children.
  */
 public class CompositeDrawable extends Drawable implements Drawable.Callback {
 
diff --git a/v17/leanback/src/android/support/v17/leanback/media/PlaybackControlGlue.java b/v17/leanback/src/android/support/v17/leanback/media/PlaybackControlGlue.java
index 48aaebe..945999d 100644
--- a/v17/leanback/src/android/support/v17/leanback/media/PlaybackControlGlue.java
+++ b/v17/leanback/src/android/support/v17/leanback/media/PlaybackControlGlue.java
@@ -72,7 +72,7 @@
  * </p>
  *
  * <p>This helper implements a key event handler. If you pass a
- * {@link PlaybackGlueHost}, it will configure it's
+ * {@link PlaybackGlueHost}, it will configure its
  * fragment to intercept all key events.  Otherwise, you should set the glue object as key event
  * handler to the ViewHolder when bound by your row presenter; see
  * {@link RowPresenter.ViewHolder#setOnKeyListener(android.view.View.OnKeyListener)}.
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/ImageCardView.java b/v17/leanback/src/android/support/v17/leanback/widget/ImageCardView.java
index 9fc1f49..a91a008 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/ImageCardView.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/ImageCardView.java
@@ -259,7 +259,7 @@
             setInfoAreaBackground(background);
         }
         // Backward compatibility: There has to be an icon in the default
-        // version. If there is one, we have to set it's visibility to 'GONE'.
+        // version. If there is one, we have to set its visibility to 'GONE'.
         // Disabling 'adjustIconVisibility' allows the user to set the icon's
         // visibility state in XML rather than code.
         if (mBadgeImage != null && mBadgeImage.getDrawable() == null) {
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/RowPresenter.java b/v17/leanback/src/android/support/v17/leanback/widget/RowPresenter.java
index 034ecc3..ef4e281 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/RowPresenter.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/RowPresenter.java
@@ -54,7 +54,7 @@
  * </ul>
  *
  * <h3>Activated status</h3>
- * The activated status of a row is applied to the row view and it's children via
+ * The activated status of a row is applied to the row view and its children via
  * {@link View#setActivated(boolean)}.
  * The activated status is typically used to control {@link BaseCardView} info region visibility.
  * The row's activated status can be controlled by selected status and/or expanded status.
@@ -352,7 +352,7 @@
     protected abstract ViewHolder createRowViewHolder(ViewGroup parent);
 
     /**
-     * Returns true if the Row view should clip it's children.  The clipChildren
+     * Returns true if the Row view should clip its children.  The clipChildren
      * flag is set on view in {@link #initializeRowViewHolder(ViewHolder)}.  Note that
      * Slide transition or explode transition need turn off clipChildren.
      * Default value is false.
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/ViewsStateBundle.java b/v17/leanback/src/android/support/v17/leanback/widget/ViewsStateBundle.java
index 807e07a..f823151 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/ViewsStateBundle.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/ViewsStateBundle.java
@@ -34,7 +34,7 @@
  * {@link #SAVE_LIMITED_CHILD} {@link #SAVE_ALL_CHILD}.
  * <p>
  * This class serves purpose of nested "listview" e.g.  a vertical list of horizontal list.
- * Vertical list maintains id->bundle mapping of all it's children (even the children is offscreen
+ * Vertical list maintains id->bundle mapping of all its children (even the children is offscreen
  * and being pruned).
  * <p>
  * The class is currently used within {@link GridLayoutManager}, but it might be used by other
diff --git a/v7/appcompat/res/values-es-rUS/strings.xml b/v7/appcompat/res/values-es-rUS/strings.xml
index 9bc27a9..804941c 100644
--- a/v7/appcompat/res/values-es-rUS/strings.xml
+++ b/v7/appcompat/res/values-es-rUS/strings.xml
@@ -25,7 +25,7 @@
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Búsqueda"</string>
     <string name="abc_search_hint" msgid="7723749260725869598">"Buscar…"</string>
-    <string name="abc_searchview_description_query" msgid="2550479030709304392">"Consulta de búsqueda"</string>
+    <string name="abc_searchview_description_query" msgid="2550479030709304392">"Búsqueda"</string>
     <string name="abc_searchview_description_clear" msgid="3691816814315814921">"Eliminar la consulta"</string>
     <string name="abc_searchview_description_submit" msgid="8928215447528550784">"Enviar consulta"</string>
     <string name="abc_searchview_description_voice" msgid="893419373245838918">"Búsqueda por voz"</string>
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java b/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java
index 65abe2e..534cfec 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java
@@ -485,7 +485,7 @@
     /**
      * {@inheritDoc}
      *
-     * <p>Please note: AppCompat uses it's own feature id for the action bar:
+     * <p>Please note: AppCompat uses its own feature id for the action bar:
      * {@link AppCompatDelegate#FEATURE_SUPPORT_ACTION_BAR FEATURE_SUPPORT_ACTION_BAR}.</p>
      */
     @Override
@@ -496,7 +496,7 @@
     /**
      * {@inheritDoc}
      *
-     * <p>Please note: AppCompat uses it's own feature id for the action bar:
+     * <p>Please note: AppCompat uses its own feature id for the action bar:
      * {@link AppCompatDelegate#FEATURE_SUPPORT_ACTION_BAR FEATURE_SUPPORT_ACTION_BAR}.</p>
      */
     @Override
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java b/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java
index 7349b09..5a33577 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java
@@ -519,7 +519,7 @@
      * manually, then you probably do not want to enable this. You have been warned.</p>
      *
      * <p>Even with this disabled, you can still use vector resources through
-     * {@link android.support.v7.widget.AppCompatImageView#setImageResource(int)} and it's
+     * {@link android.support.v7.widget.AppCompatImageView#setImageResource(int)} and its
      * {@code app:srcCompat} attribute. They can also be used in anything which AppCompat inflates
      * for you, such as menu resources.</p>
      *
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplBase.java b/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplBase.java
index 6da5250..37f0318 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplBase.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplBase.java
@@ -300,7 +300,7 @@
     abstract void onTitleChanged(CharSequence title);
 
     final CharSequence getTitle() {
-        // If the original window callback is an Activity, we'll use it's title
+        // If the original window callback is an Activity, we'll use its title
         if (mOriginalWindowCallback instanceof Activity) {
             return ((Activity) mOriginalWindowCallback).getTitle();
         }
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatViewInflater.java b/v7/appcompat/src/android/support/v7/app/AppCompatViewInflater.java
index dcf855c..54d01bc 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatViewInflater.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatViewInflater.java
@@ -56,7 +56,7 @@
  * should only be used when running on those devices.
  * <p>This class two main responsibilities: the first is to 'inject' our tinted views in place of
  * the framework versions in layout inflation; the second is backport the {@code android:theme}
- * functionality for any inflated widgets. This include theme inheritance from it's parent.
+ * functionality for any inflated widgets. This include theme inheritance from its parent.
  */
 class AppCompatViewInflater {
 
@@ -147,7 +147,7 @@
         }
 
         if (view != null) {
-            // If we have created a view, check it's android:onClick
+            // If we have created a view, check its android:onClick
             checkOnClickListener(view, attrs);
         }
 
diff --git a/v7/appcompat/src/android/support/v7/graphics/drawable/DrawableWrapper.java b/v7/appcompat/src/android/support/v7/graphics/drawable/DrawableWrapper.java
index 3878943..9fa45b8 100644
--- a/v7/appcompat/src/android/support/v7/graphics/drawable/DrawableWrapper.java
+++ b/v7/appcompat/src/android/support/v7/graphics/drawable/DrawableWrapper.java
@@ -30,7 +30,7 @@
 import android.view.View;
 
 /**
- * Drawable which delegates all calls to it's wrapped {@link Drawable}.
+ * Drawable which delegates all calls to its wrapped {@link Drawable}.
  * <p>
  * The wrapped {@link Drawable} <em>must</em> be fully released from any {@link View}
  * before wrapping, otherwise internal {@link Drawable.Callback} may be dropped.
diff --git a/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java b/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java
index 07a61c7..5f4cf95 100644
--- a/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java
+++ b/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java
@@ -439,8 +439,8 @@
     /**
      * Set the progress of the arrow.
      *
-     * <p>A value of {@code 0.0} indicates that the arrow should be drawn in it's starting
-     * position. A value of {@code 1.0} indicates that the arrow should be drawn in it's ending
+     * <p>A value of {@code 0.0} indicates that the arrow should be drawn in its starting
+     * position. A value of {@code 1.0} indicates that the arrow should be drawn in its ending
      * position.</p>
      */
     public void setProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {
diff --git a/v7/appcompat/src/android/support/v7/widget/DrawableUtils.java b/v7/appcompat/src/android/support/v7/widget/DrawableUtils.java
index d73b88b..f193e65 100644
--- a/v7/appcompat/src/android/support/v7/widget/DrawableUtils.java
+++ b/v7/appcompat/src/android/support/v7/widget/DrawableUtils.java
@@ -135,7 +135,7 @@
         }
 
         if (drawable instanceof DrawableContainer) {
-            // If we have a DrawableContainer, let's traverse it's child array
+            // If we have a DrawableContainer, let's traverse its child array
             final Drawable.ConstantState state = drawable.getConstantState();
             if (state instanceof DrawableContainer.DrawableContainerState) {
                 final DrawableContainer.DrawableContainerState containerState =
@@ -163,7 +163,7 @@
 
     /**
      * VectorDrawable has an issue on API 21 where it sometimes doesn't create its tint filter.
-     * Fixed by toggling it's state to force a filter creation.
+     * Fixed by toggling its state to force a filter creation.
      */
     private static void fixVectorDrawableTinting(final Drawable drawable) {
         final int[] originalState = drawable.getState();
diff --git a/v7/appcompat/src/android/support/v7/widget/ListPopupWindow.java b/v7/appcompat/src/android/support/v7/widget/ListPopupWindow.java
index fb4604e..c363301 100644
--- a/v7/appcompat/src/android/support/v7/widget/ListPopupWindow.java
+++ b/v7/appcompat/src/android/support/v7/widget/ListPopupWindow.java
@@ -1131,7 +1131,7 @@
              * This Runnable exists for the sole purpose of checking if the view layout has got
              * completed and if so call showDropDown to display the drop down. This is used to show
              * the drop down as soon as possible after user opens up the search dialog, without
-             * waiting for the normal UI pipeline to do it's job which is slower than this method.
+             * waiting for the normal UI pipeline to do its job which is slower than this method.
              */
             mShowDropDownRunnable = new Runnable() {
                 @Override
diff --git a/v7/appcompat/src/android/support/v7/widget/ListViewCompat.java b/v7/appcompat/src/android/support/v7/widget/ListViewCompat.java
index 0baefe0..3a2fba3 100644
--- a/v7/appcompat/src/android/support/v7/widget/ListViewCompat.java
+++ b/v7/appcompat/src/android/support/v7/widget/ListViewCompat.java
@@ -230,7 +230,7 @@
 
         try {
             // AbsListView.mIsChildViewEnabled controls the selector's state so we need to
-            // modify it's value
+            // modify its value
             final boolean isChildViewEnabled = mIsChildViewEnabled.getBoolean(this);
             if (sel.isEnabled() != isChildViewEnabled) {
                 mIsChildViewEnabled.set(this, !isChildViewEnabled);
diff --git a/v7/mediarouter/res/values-af/strings.xml b/v7/mediarouter/res/values-af/strings.xml
index 9d311a9..8b47105 100644
--- a/v7/mediarouter/res/values-af/strings.xml
+++ b/v7/mediarouter/res/values-af/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Saai uit na"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Vind tans toestelle"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Ontkoppel"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Hou op uitsaai"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Hou op uitsaai"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Maak toe"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Speel"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Laat wag"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Stop"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Vou uit"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Vou in"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albumkunswerk"</string>
diff --git a/v7/mediarouter/res/values-am/strings.xml b/v7/mediarouter/res/values-am/strings.xml
index ef7f3be..9959767 100644
--- a/v7/mediarouter/res/values-am/strings.xml
+++ b/v7/mediarouter/res/values-am/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Cast አድርግ ወደ"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"መሣሪያዎችን በማግኘት ላይ"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"ግንኙነት አቋርጥ"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Cast ማድረግ አቁም"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Cast ማድረግ አቁም"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"ዝጋ"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"አጫውት"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"ለአፍታ አቁም"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"አቁም"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"አስፋ"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"ሰብስብ"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"የአልበም ስነ-ጥበብ"</string>
diff --git a/v7/mediarouter/res/values-ar/strings.xml b/v7/mediarouter/res/values-ar/strings.xml
index 897460c..2cfe9e4 100644
--- a/v7/mediarouter/res/values-ar/strings.xml
+++ b/v7/mediarouter/res/values-ar/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"إرسال إلى"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"جارٍ البحث عن أجهزة"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"قطع الاتصال"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"إيقاف الإرسال"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"إيقاف الإرسال"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"إغلاق"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"تشغيل"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"إيقاف مؤقت"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"إيقاف"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"توسيع"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"تصغير"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"صورة الألبوم"</string>
diff --git a/v7/mediarouter/res/values-az-rAZ/strings.xml b/v7/mediarouter/res/values-az-rAZ/strings.xml
index a7cc571..0255164 100644
--- a/v7/mediarouter/res/values-az-rAZ/strings.xml
+++ b/v7/mediarouter/res/values-az-rAZ/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Bura yayımlayın"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Cihazlar axtarılır"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Bağlantını kəsin"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Yayımı dayandırın"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Yayımı dayandırın"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Qapadın"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Oynadın"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Durdurun"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Dayandırın"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Genişləndirin"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Yığcamlaşdırın"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albom incəsənəti"</string>
diff --git a/v7/mediarouter/res/values-bg/strings.xml b/v7/mediarouter/res/values-bg/strings.xml
index ef4db0a..6d32abb 100644
--- a/v7/mediarouter/res/values-bg/strings.xml
+++ b/v7/mediarouter/res/values-bg/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Предаване към"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Търсят се устройства"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Прекратяване на връзката"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Спиране на предаването"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Спиране на предаването"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Затваряне"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Пускане"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Поставяне на пауза"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Спиране"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Разгъване"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Свиване"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Обложка на албума"</string>
diff --git a/v7/mediarouter/res/values-bn-rBD/strings.xml b/v7/mediarouter/res/values-bn-rBD/strings.xml
index d542100..56fcdd9 100644
--- a/v7/mediarouter/res/values-bn-rBD/strings.xml
+++ b/v7/mediarouter/res/values-bn-rBD/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"এতে কাস্ট করুন"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"ডিভাইসগুলিকে খোঁজা হচ্ছে"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"সংযোগ বিচ্ছিন্ন করুন"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"কাস্ট করা বন্ধ করুন"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"কাস্ট করা বন্ধ করুন"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"বন্ধ করুন"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"চালান"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"বিরাম দিন"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"থামান"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"প্রসারিত করুন"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"সঙ্কুচিত করুন"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"অ্যালবাম শৈলি"</string>
diff --git a/v7/mediarouter/res/values-ca/strings.xml b/v7/mediarouter/res/values-ca/strings.xml
index 875290f..a5e5883 100644
--- a/v7/mediarouter/res/values-ca/strings.xml
+++ b/v7/mediarouter/res/values-ca/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Emet a"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"S\'estan cercant dispositius"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Desconnecta"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Atura l\'emissió"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Atura l\'emissió"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Tanca"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Reprodueix"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Posa en pausa"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Atura"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Desplega"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Replega"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Imatge de l\'àlbum"</string>
diff --git a/v7/mediarouter/res/values-cs/strings.xml b/v7/mediarouter/res/values-cs/strings.xml
index 532612a..b36cf26 100644
--- a/v7/mediarouter/res/values-cs/strings.xml
+++ b/v7/mediarouter/res/values-cs/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Odesílat do"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Hledání zařízení"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Odpojit"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Zastavit odesílání"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Zastavit odesílání"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Zavřít"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Přehrát"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pozastavit"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Zastavit"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Rozbalit"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Sbalit"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Obal alba"</string>
diff --git a/v7/mediarouter/res/values-da/strings.xml b/v7/mediarouter/res/values-da/strings.xml
index 55864a0..44da892 100644
--- a/v7/mediarouter/res/values-da/strings.xml
+++ b/v7/mediarouter/res/values-da/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Cast til"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Finder enheder"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Afbryd"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Stop med at caste"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Stop med at caste"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Luk"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Afspil"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Sæt på pause"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Stop"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Udvid"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Skjul"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albumgrafik"</string>
diff --git a/v7/mediarouter/res/values-de/strings.xml b/v7/mediarouter/res/values-de/strings.xml
index 50025de..edbb89a 100644
--- a/v7/mediarouter/res/values-de/strings.xml
+++ b/v7/mediarouter/res/values-de/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Streamen auf"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Geräte werden gesucht."</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Verbindung trennen"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Streaming stoppen"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Streaming beenden"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Schließen"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Wiedergeben"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pausieren"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Beenden"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Maximieren"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Minimieren"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albumcover"</string>
diff --git a/v7/mediarouter/res/values-el/strings.xml b/v7/mediarouter/res/values-el/strings.xml
index fd415cc..dc7bd0f 100644
--- a/v7/mediarouter/res/values-el/strings.xml
+++ b/v7/mediarouter/res/values-el/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Μετάδοση σε"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Εύρεση συσκευών"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Αποσύνδεση"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Διακοπή μετάδοσης"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Διακοπή μετάδοσης"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Κλείσιμο"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Αναπαραγωγή"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Παύση"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Διακοπή"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Ανάπτυξη"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Σύμπτυξη"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Εξώφυλλο άλμπουμ"</string>
diff --git a/v7/mediarouter/res/values-en-rAU/strings.xml b/v7/mediarouter/res/values-en-rAU/strings.xml
index 7ce2f28..cbc5135 100644
--- a/v7/mediarouter/res/values-en-rAU/strings.xml
+++ b/v7/mediarouter/res/values-en-rAU/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Cast to"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Finding devices"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Disconnect"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Stop casting"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Stop casting"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Close"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Play"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pause"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Stop"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Expand"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Collapse"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Album art"</string>
diff --git a/v7/mediarouter/res/values-en-rGB/strings.xml b/v7/mediarouter/res/values-en-rGB/strings.xml
index 7ce2f28..cbc5135 100644
--- a/v7/mediarouter/res/values-en-rGB/strings.xml
+++ b/v7/mediarouter/res/values-en-rGB/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Cast to"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Finding devices"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Disconnect"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Stop casting"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Stop casting"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Close"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Play"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pause"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Stop"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Expand"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Collapse"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Album art"</string>
diff --git a/v7/mediarouter/res/values-en-rIN/strings.xml b/v7/mediarouter/res/values-en-rIN/strings.xml
index 7ce2f28..cbc5135 100644
--- a/v7/mediarouter/res/values-en-rIN/strings.xml
+++ b/v7/mediarouter/res/values-en-rIN/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Cast to"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Finding devices"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Disconnect"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Stop casting"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Stop casting"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Close"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Play"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pause"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Stop"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Expand"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Collapse"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Album art"</string>
diff --git a/v7/mediarouter/res/values-es-rUS/strings.xml b/v7/mediarouter/res/values-es-rUS/strings.xml
index 9b411dd..fc2a067 100644
--- a/v7/mediarouter/res/values-es-rUS/strings.xml
+++ b/v7/mediarouter/res/values-es-rUS/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Transmitir a"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Buscando dispositivos"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Desconectar"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Detener la transmisión"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Detener la transmisión"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Cerrar"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Reproducir"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pausar"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Detener"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Mostrar"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Ocultar"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Imagen del álbum"</string>
diff --git a/v7/mediarouter/res/values-es/strings.xml b/v7/mediarouter/res/values-es/strings.xml
index 057d3d2..34c1804 100644
--- a/v7/mediarouter/res/values-es/strings.xml
+++ b/v7/mediarouter/res/values-es/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Enviar a"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Buscando dispositivos"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Desconectar"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Dejar de enviar contenido"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Detener envío de contenido"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Cerrar"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Reproducir"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pausa"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Detener"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Mostrar"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Ocultar"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Portada del álbum"</string>
diff --git a/v7/mediarouter/res/values-et-rEE/strings.xml b/v7/mediarouter/res/values-et-rEE/strings.xml
index 8fa0e94..2fc7834 100644
--- a/v7/mediarouter/res/values-et-rEE/strings.xml
+++ b/v7/mediarouter/res/values-et-rEE/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Ülekandmine seadmesse"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Seadmete otsimine"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Katkesta ühendus"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Peata ülekanne"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Peata ülekandmine"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Sulgemine"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Esitamine"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Peatamine"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Peata"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Laiendamine"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Ahendamine"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albumi kujundus"</string>
diff --git a/v7/mediarouter/res/values-eu-rES/strings.xml b/v7/mediarouter/res/values-eu-rES/strings.xml
index d8efeba..f9b9f8d 100644
--- a/v7/mediarouter/res/values-eu-rES/strings.xml
+++ b/v7/mediarouter/res/values-eu-rES/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Igorri hona"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Gailuak bilatzen"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Deskonektatu"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Utzi igortzeari"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Utzi igortzeari"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Itxi"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Erreproduzitu"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pausatu"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Gelditu"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Zabaldu"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Tolestu"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albumaren azala"</string>
diff --git a/v7/mediarouter/res/values-fa/strings.xml b/v7/mediarouter/res/values-fa/strings.xml
index 8d965d1..8e8e532 100644
--- a/v7/mediarouter/res/values-fa/strings.xml
+++ b/v7/mediarouter/res/values-fa/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"ارسال محتوا به"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"پیدا کردن دستگاه‌ها"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"قطع ارتباط"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"توقف ارسال محتوا"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"توقف ارسال محتوا"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"بستن"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"پخش"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"مکث"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"توقف"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"بزرگ کردن"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"کوچک کردن"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"عکس روی جلد آلبوم"</string>
diff --git a/v7/mediarouter/res/values-fi/strings.xml b/v7/mediarouter/res/values-fi/strings.xml
index 41727ef..5ba0a2e 100644
--- a/v7/mediarouter/res/values-fi/strings.xml
+++ b/v7/mediarouter/res/values-fi/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Suoratoiston kohde"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Etsitään laitteita"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Katkaise yhteys"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Lopeta suoratoisto"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Lopeta suoratoisto"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Sulje"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Toista"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Keskeytä"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Pysäytä"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Laajenna"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Tiivistä"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albumin kansikuva"</string>
diff --git a/v7/mediarouter/res/values-fr-rCA/strings.xml b/v7/mediarouter/res/values-fr-rCA/strings.xml
index 9f489f2..f81b136 100644
--- a/v7/mediarouter/res/values-fr-rCA/strings.xml
+++ b/v7/mediarouter/res/values-fr-rCA/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Diffuser sur"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Recherche d\'appareils"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Se déconnecter"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Arrêter la diffusion"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Arrêter la diffusion"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Fermer"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Lire"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Interrompre"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Arrêter"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Développer"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Réduire"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Image de l\'album"</string>
diff --git a/v7/mediarouter/res/values-fr/strings.xml b/v7/mediarouter/res/values-fr/strings.xml
index 86f70bb..be50201 100644
--- a/v7/mediarouter/res/values-fr/strings.xml
+++ b/v7/mediarouter/res/values-fr/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Caster sur"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Recherche d\'appareils en cours…"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Déconnecter"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Arrêter de diffuser"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Arrêter la diffusion"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Fermer"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Lecture"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pause"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Arrêter"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Développer"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Réduire"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Image de l\'album"</string>
diff --git a/v7/mediarouter/res/values-gl-rES/strings.xml b/v7/mediarouter/res/values-gl-rES/strings.xml
index 7d250bf..7e38bb4 100644
--- a/v7/mediarouter/res/values-gl-rES/strings.xml
+++ b/v7/mediarouter/res/values-gl-rES/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Emitir en"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Buscando dispositivos"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Desconectar"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Deter emisión"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Deter emisión"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Pechar"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Reproduce"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pausa"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Deter"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Ampliar"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Contraer"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Portada do álbum"</string>
diff --git a/v7/mediarouter/res/values-gu-rIN/strings.xml b/v7/mediarouter/res/values-gu-rIN/strings.xml
index 6c2237e..2792842 100644
--- a/v7/mediarouter/res/values-gu-rIN/strings.xml
+++ b/v7/mediarouter/res/values-gu-rIN/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"આના પર કાસ્ટ કરો"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"ઉપકરણો શોધી રહ્યાં છીએ"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"ડિસ્કનેક્ટ કરો"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"કાસ્ટ કરવાનું રોકો"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"કાસ્ટ કરવાનું રોકો"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"બંધ કરો"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"ચલાવો"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"થોભાવો"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"રોકો"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"વિસ્તૃત કરો"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"સંકુચિત કરો"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"આલ્બમ કલા"</string>
diff --git a/v7/mediarouter/res/values-hi/strings.xml b/v7/mediarouter/res/values-hi/strings.xml
index 0048639..878a4b2 100644
--- a/v7/mediarouter/res/values-hi/strings.xml
+++ b/v7/mediarouter/res/values-hi/strings.xml
@@ -19,16 +19,17 @@
     <string name="mr_system_route_name" msgid="5441529851481176817">"सिस्टम"</string>
     <string name="mr_user_route_category_name" msgid="7498112907524977311">"डिवाइस"</string>
     <string name="mr_button_content_description" msgid="3698378085901466129">"कास्ट करें बटन"</string>
-    <string name="mr_cast_button_disconnected" msgid="816305490427819240">"कास्ट करें बटन. डिस्कनेक्ट है"</string>
+    <string name="mr_cast_button_disconnected" msgid="816305490427819240">"कास्ट करें बटन. डिसकनेक्ट है"</string>
     <string name="mr_cast_button_connecting" msgid="2187642765091873834">"कास्ट करें बटन. कनेक्ट हो रहा है"</string>
     <string name="mr_cast_button_connected" msgid="5088427771788648085">"कास्ट करें बटन. कनेक्ट है"</string>
     <string name="mr_chooser_title" msgid="414301941546135990">"इस पर कास्‍ट करें"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"डिवाइस ढूंढ रहा है"</string>
-    <string name="mr_controller_disconnect" msgid="1227264889412989580">"डिस्कनेक्ट करें"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"कास्ट करना बंद करें"</string>
+    <string name="mr_controller_disconnect" msgid="1227264889412989580">"डिसकनेक्ट करें"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"कास्ट करना बंद करें"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"बंद करें"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"चलाएं"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"रोकें"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"बंद करें"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"विस्तृत करें"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"संक्षिप्त करें"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"एल्बम आर्ट"</string>
diff --git a/v7/mediarouter/res/values-hr/strings.xml b/v7/mediarouter/res/values-hr/strings.xml
index 83b2a7a..e19b56c 100644
--- a/v7/mediarouter/res/values-hr/strings.xml
+++ b/v7/mediarouter/res/values-hr/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Emitiranje na"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Traženje uređaja"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Prekini vezu"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Zaustavi emitiranje"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Zaustavi emitiranje"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Zatvaranje"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Reprodukcija"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pauziranje"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Zaustavi"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Proširivanje"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Sažimanje"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Naslovnica albuma"</string>
diff --git a/v7/mediarouter/res/values-hu/strings.xml b/v7/mediarouter/res/values-hu/strings.xml
index 9d4b770..715fa43 100644
--- a/v7/mediarouter/res/values-hu/strings.xml
+++ b/v7/mediarouter/res/values-hu/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Átküldés ide"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Eszközök keresése"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Leválasztás"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Átküldés leállítása"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Átküldés leállítása"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Bezárás"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Lejátszás"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Szüneteltetés"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Leállítás"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Kibontás"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Összecsukás"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Lemezborító"</string>
diff --git a/v7/mediarouter/res/values-hy-rAM/strings.xml b/v7/mediarouter/res/values-hy-rAM/strings.xml
index f1221d1..f7547af 100644
--- a/v7/mediarouter/res/values-hy-rAM/strings.xml
+++ b/v7/mediarouter/res/values-hy-rAM/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Ընտրեք սարքը"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Սարքերի որոնում"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Անջատել"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Դադարեցնել հեռարձակումը"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Դադարեցնել հեռարձակումը"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Փակել"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Նվագարկել"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Դադար"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Դադարեցնել"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Ընդարձակել"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Կոծկել"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Ալբոմի շապիկ"</string>
diff --git a/v7/mediarouter/res/values-in/strings.xml b/v7/mediarouter/res/values-in/strings.xml
index fbe906a..5e537af 100644
--- a/v7/mediarouter/res/values-in/strings.xml
+++ b/v7/mediarouter/res/values-in/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Transmisikan ke"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Mencari perangkat"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Putuskan sambungan"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Hentikan transmisi"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Hentikan cast"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Tutup"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Putar"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Jeda"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Berhenti"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Luaskan"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Ciutkan"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Sampul album"</string>
diff --git a/v7/mediarouter/res/values-is-rIS/strings.xml b/v7/mediarouter/res/values-is-rIS/strings.xml
index cf5308e..86f009e 100644
--- a/v7/mediarouter/res/values-is-rIS/strings.xml
+++ b/v7/mediarouter/res/values-is-rIS/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Senda út í"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Leitað að tækjum"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Aftengjast"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Stöðva útsendingu"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Stöðva útsendingu"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Loka"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Spila"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Hlé"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Stöðva"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Stækka"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Minnka"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Plötuumslag"</string>
diff --git a/v7/mediarouter/res/values-it/strings.xml b/v7/mediarouter/res/values-it/strings.xml
index b8f12a5..dfff161 100644
--- a/v7/mediarouter/res/values-it/strings.xml
+++ b/v7/mediarouter/res/values-it/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Trasmetti a"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Ricerca di dispositivi in corso"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Scollega"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Interrompi trasmissione"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Interrompi trasmissione"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Chiudi"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Riproduci"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pausa"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Interrompi"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Espandi"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Comprimi"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Copertina"</string>
diff --git a/v7/mediarouter/res/values-iw/strings.xml b/v7/mediarouter/res/values-iw/strings.xml
index 89a136a..3e7bc505 100644
--- a/v7/mediarouter/res/values-iw/strings.xml
+++ b/v7/mediarouter/res/values-iw/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"העבר אל"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"מחפש מכשירים"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"נתק"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"עצור העברה"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"הפסק את ההעברה"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"סגור"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"הפעל"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"השהה"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"הפסק"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"הרחב"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"כווץ"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"עטיפת אלבום"</string>
diff --git a/v7/mediarouter/res/values-ja/strings.xml b/v7/mediarouter/res/values-ja/strings.xml
index 6b731d2..b029c44 100644
--- a/v7/mediarouter/res/values-ja/strings.xml
+++ b/v7/mediarouter/res/values-ja/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"キャストするデバイス"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"端末を検索しています"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"接続を解除"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"キャストを停止"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"キャストを停止"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"閉じる"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"再生"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"一時停止"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"停止"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"展開"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"折りたたむ"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"アルバムアート"</string>
diff --git a/v7/mediarouter/res/values-ka-rGE/strings.xml b/v7/mediarouter/res/values-ka-rGE/strings.xml
index 584203f..57b76e9 100644
--- a/v7/mediarouter/res/values-ka-rGE/strings.xml
+++ b/v7/mediarouter/res/values-ka-rGE/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"ტრანსლირებული"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"მიმდინარეობს მოწყობილობების მოძიება"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"კავშირის გაწყვეტა"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"ტრანსლირების შეჩერება"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"ტრანსლირების შეწყვეტა"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"დახურვა"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"დაკვრა"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"პაუზა"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"შეწყვეტა"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"გაშლა"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"ჩაკეცვა"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ალბომის გარეკანი"</string>
diff --git a/v7/mediarouter/res/values-kk-rKZ/strings.xml b/v7/mediarouter/res/values-kk-rKZ/strings.xml
index 185fbf9..8128074 100644
--- a/v7/mediarouter/res/values-kk-rKZ/strings.xml
+++ b/v7/mediarouter/res/values-kk-rKZ/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Келесіге трансляциялау"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Құрылғыларды табу"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Ажырату"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Трансляциялауды тоқтату"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Трансляциялауды тоқтату"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Жабу"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Ойнату"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Кідірту"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Тоқтату"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Жаю"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Жию"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Альбом шебері"</string>
diff --git a/v7/mediarouter/res/values-km-rKH/strings.xml b/v7/mediarouter/res/values-km-rKH/strings.xml
index 7a92a77..e9bef13 100644
--- a/v7/mediarouter/res/values-km-rKH/strings.xml
+++ b/v7/mediarouter/res/values-km-rKH/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"ខាសទៅ"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"ស្វែងរកឧបករណ៍"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"ផ្ដាច់"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"បញ្ឈប់ការខាស"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"ឈប់ភ្ជាប់"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"បិទ"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"ចាក់"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"ផ្អាក"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"ឈប់"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"ពង្រីក"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"បង្រួម"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ស្នាដៃសិល្បៈអាល់ប៊ុម"</string>
diff --git a/v7/mediarouter/res/values-kn-rIN/strings.xml b/v7/mediarouter/res/values-kn-rIN/strings.xml
index a493757..cd0ff44 100644
--- a/v7/mediarouter/res/values-kn-rIN/strings.xml
+++ b/v7/mediarouter/res/values-kn-rIN/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"ಇದಕ್ಕೆ ಬಿತ್ತರಿಸಿ"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"ಸಾಧನಗಳನ್ನು ಹುಡುಕಲಾಗುತ್ತಿದೆ"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸು"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"ಬಿತ್ತರಿಸುವಿಕೆ ನಿಲ್ಲಿಸು"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"ಬಿತ್ತರಿಸುವಿಕೆ ನಿಲ್ಲಿಸಿ"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"ಮುಚ್ಚು"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"ಪ್ಲೇ ಮಾಡಿ"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"ವಿರಾಮ"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"ನಿಲ್ಲಿಸಿ"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"ವಿಸ್ತರಿಸು"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"ಸಂಕುಚಿಸು"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ಆಲ್ಬಮ್ ಕಲೆ"</string>
diff --git a/v7/mediarouter/res/values-ko/strings.xml b/v7/mediarouter/res/values-ko/strings.xml
index 8630f4f..2d3f837 100644
--- a/v7/mediarouter/res/values-ko/strings.xml
+++ b/v7/mediarouter/res/values-ko/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"전송할 기기"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"기기를 찾는 중"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"연결 해제"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"전송 중지"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"전송 중지"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"닫기"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"재생"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"일시중지"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"중지"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"펼치기"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"접기"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"앨범아트"</string>
diff --git a/v7/mediarouter/res/values-ky-rKG/strings.xml b/v7/mediarouter/res/values-ky-rKG/strings.xml
index 82f64be..e90a960 100644
--- a/v7/mediarouter/res/values-ky-rKG/strings.xml
+++ b/v7/mediarouter/res/values-ky-rKG/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Төмөнкүгө чыгаруу"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Түзмөктөр изделүүдө"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Ажыратуу"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Тышк экранга чыгарну токтотуу"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Тышк экранга чыгарну токтотуу"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Жабуу"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Ойнотуу"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Тындыруу"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Токтотуу"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Жайып көрсөтүү"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Жыйыштыруу"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Альбом мукабасы"</string>
diff --git a/v7/mediarouter/res/values-lo-rLA/strings.xml b/v7/mediarouter/res/values-lo-rLA/strings.xml
index 8771268..e0703e8 100644
--- a/v7/mediarouter/res/values-lo-rLA/strings.xml
+++ b/v7/mediarouter/res/values-lo-rLA/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"ຄາ​ສ​ທ໌​ຫາ"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"ກຳລັງ​ຊອກ​ຫາ​ອຸ​ປະ​ກອນ"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"ຕັດການເຊື່ອມຕໍ່"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"ຢຸດການຄາ​ສ​ທ໌"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"ຢຸດການສົ່ງສັນຍານ"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"ປິດ"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"ຫຼິ້ນ"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"ຢຸດຊົ່ວຄາວ"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"ຢຸດ"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"ຂະຫຍາຍ"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"ຫຍໍ້ລົງ"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ໜ້າປົກອະລະບໍ້າ"</string>
diff --git a/v7/mediarouter/res/values-lt/strings.xml b/v7/mediarouter/res/values-lt/strings.xml
index 45398f0..6545f9a 100644
--- a/v7/mediarouter/res/values-lt/strings.xml
+++ b/v7/mediarouter/res/values-lt/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Perduoti į"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Randami įrenginiai"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Atjungti"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Sustabdyti perdavimą"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Sustabdyti perdavimą"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Uždaryti"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Leisti"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pristabdyti"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Sustabdyti"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Išskleisti"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Sutraukti"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albumo viršelis"</string>
diff --git a/v7/mediarouter/res/values-lv/strings.xml b/v7/mediarouter/res/values-lv/strings.xml
index e01705e..46b69b3 100644
--- a/v7/mediarouter/res/values-lv/strings.xml
+++ b/v7/mediarouter/res/values-lv/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Apraidīšana uz ierīci"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Notiek ierīču meklēšana"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Atvienot"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Pārtraukt apraidi"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Apturēt apraidi"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Aizvērt"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Atskaņot"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Apturēt"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Apturēt"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Izvērst"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Sakļaut"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albuma vāciņš"</string>
diff --git a/v7/mediarouter/res/values-mk-rMK/strings.xml b/v7/mediarouter/res/values-mk-rMK/strings.xml
index 205467e..ae1bfee 100644
--- a/v7/mediarouter/res/values-mk-rMK/strings.xml
+++ b/v7/mediarouter/res/values-mk-rMK/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Емитувај на"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Наоѓање уреди"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Исклучи"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Запри го емитувањето"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Сопри го емитувањето"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Затвори"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Репродуцирај"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Паузирај"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Сопри"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Прошири"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Собери"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Корица на албум"</string>
diff --git a/v7/mediarouter/res/values-ml-rIN/strings.xml b/v7/mediarouter/res/values-ml-rIN/strings.xml
index 00fc9dc..c7b50be73 100644
--- a/v7/mediarouter/res/values-ml-rIN/strings.xml
+++ b/v7/mediarouter/res/values-ml-rIN/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"ഇതിലേക്ക് കാസ്റ്റുചെയ്യുക"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"ഉപകരണങ്ങൾ കണ്ടെത്തുന്നു"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"വിച്ഛേദിക്കുക"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"കാസ്റ്റുചെയ്യൽ നിർത്തുക"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"കാസ്റ്റുചെയ്യൽ നിർത്തുക"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"അടയ്‌ക്കുക"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"പ്ലേ ചെയ്യുക"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"തൽക്കാലം നിർത്തൂ"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"നിര്‍ത്തുക"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"വികസിപ്പിക്കുക"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"ചുരുക്കുക"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ആൽബം ആർട്ട്"</string>
diff --git a/v7/mediarouter/res/values-mn-rMN/strings.xml b/v7/mediarouter/res/values-mn-rMN/strings.xml
index cccf05e..debccf9 100644
--- a/v7/mediarouter/res/values-mn-rMN/strings.xml
+++ b/v7/mediarouter/res/values-mn-rMN/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Дамжуулах"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Төхөөрөмж хайж байна"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Салгах"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Дамжуулахыг зогсоох"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Дамжуулахыг зогсоох"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Хаах"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Тоглуулах"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Түр зогсоох"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Зогсоох"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Дэлгэх"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Хураах"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Цомгийн зураг"</string>
diff --git a/v7/mediarouter/res/values-mr-rIN/strings.xml b/v7/mediarouter/res/values-mr-rIN/strings.xml
index 37374b49..27923d1 100644
--- a/v7/mediarouter/res/values-mr-rIN/strings.xml
+++ b/v7/mediarouter/res/values-mr-rIN/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"यावर कास्ट करा"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"डिव्हाइसेस शोधत आहे"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"डिस्‍कनेक्‍ट करा"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"कास्ट करणे थांबवा"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"कास्ट करणे थांबवा"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"बंद करा"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"प्ले करा"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"विराम"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"थांबा"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"विस्तृत करा"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"संकुचित करा"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"अल्बम कला"</string>
diff --git a/v7/mediarouter/res/values-ms-rMY/strings.xml b/v7/mediarouter/res/values-ms-rMY/strings.xml
index 6474884..4f305b08 100644
--- a/v7/mediarouter/res/values-ms-rMY/strings.xml
+++ b/v7/mediarouter/res/values-ms-rMY/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Hantar ke"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Mencari peranti"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Putuskan sambungan"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Berhenti menghantar"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Berhenti menghantar"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Tutup"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Main"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Jeda"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Berhenti"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Kembangkan"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Runtuhkan"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Seni album"</string>
diff --git a/v7/mediarouter/res/values-my-rMM/strings.xml b/v7/mediarouter/res/values-my-rMM/strings.xml
index 836d137..eb33498 100644
--- a/v7/mediarouter/res/values-my-rMM/strings.xml
+++ b/v7/mediarouter/res/values-my-rMM/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"သို့ ကာစ်တ်လုပ်ရန်"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"စက်ပစ္စည်းများ ရှာဖွေခြင်း"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"ဆက်သွယ်မှု ဖြတ်ရန်"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"ကာစ်တ်လုပ်ခြင်း ရပ်တန့်ရန်"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"ကာစ်လုပ်ခြင်း ရပ်ရန်"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"ပိတ်ရန်"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"ဖွင့်ရန်"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"ခဏရပ်ရန်"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"ရပ်ရန်"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"ဖြန့်ချရန်၃"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"ခေါက်သိမ်းရန်..."</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"အယ်လ်ဘမ်ပုံ"</string>
diff --git a/v7/mediarouter/res/values-nb/strings.xml b/v7/mediarouter/res/values-nb/strings.xml
index 172d9d4..d31aa73 100644
--- a/v7/mediarouter/res/values-nb/strings.xml
+++ b/v7/mediarouter/res/values-nb/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Cast til"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Finner enheter"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Koble fra"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Stopp castingen"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Stopp castingen"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Lukk"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Spill av"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Sett på pause"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Stopp"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Utvid"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Skjul"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albumgrafikk"</string>
diff --git a/v7/mediarouter/res/values-ne-rNP/strings.xml b/v7/mediarouter/res/values-ne-rNP/strings.xml
index e9e4f03..0622ca9 100644
--- a/v7/mediarouter/res/values-ne-rNP/strings.xml
+++ b/v7/mediarouter/res/values-ne-rNP/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"यसमा Cast गर्नुहोस्"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"यन्त्रहरू पत्ता लगाउँदै"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"विच्छेद गर्नुहोस्"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"casting रोक्नुहोस्"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"casting रोक्नुहोस्"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"बन्द गर्नुहोस्"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"बजाउनुहोस्"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"रोक्नुहोस्"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"रोक्नुहोस्"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"विस्तार गर्नुहोस्"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"संक्षिप्त पार्नुहोस्"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"एल्बम आर्ट"</string>
diff --git a/v7/mediarouter/res/values-nl/strings.xml b/v7/mediarouter/res/values-nl/strings.xml
index 21364e7..fcb674f 100644
--- a/v7/mediarouter/res/values-nl/strings.xml
+++ b/v7/mediarouter/res/values-nl/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Casten naar"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Apparaten zoeken"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Loskoppelen"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Casten stoppen"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Casten stoppen"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Sluiten"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Afspelen"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Onderbreken"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Stoppen"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Uitvouwen"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Samenvouwen"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albumhoes"</string>
diff --git a/v7/mediarouter/res/values-pa-rIN/strings.xml b/v7/mediarouter/res/values-pa-rIN/strings.xml
index 1e4dfae..e058e18 100644
--- a/v7/mediarouter/res/values-pa-rIN/strings.xml
+++ b/v7/mediarouter/res/values-pa-rIN/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"ਇਸ ਨਾਲ ਕਾਸਟ ਕਰੋ"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"ਡਿਵਾਈਸਾਂ ਲੱਭ ਰਿਹਾ ਹੈ"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"ਜੋੜਨਾ ਰੋਕੋ"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"ਕਾਸਟ ਕਰਨਾ ਬੰਦ ਕਰੋ"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"ਬੰਦ ਕਰੋ"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"ਪਲੇ ਕਰੋ"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"ਰੋਕੋ"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"ਬੰਦ ਕਰੋ"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"ਵਿਸਤਾਰ ਕਰੋ"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"ਬੰਦ ਕਰੋ"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ਐਲਬਮ ਆਰਟ"</string>
diff --git a/v7/mediarouter/res/values-pl/strings.xml b/v7/mediarouter/res/values-pl/strings.xml
index db0934d..7154e9d 100644
--- a/v7/mediarouter/res/values-pl/strings.xml
+++ b/v7/mediarouter/res/values-pl/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Przesyłaj na"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Znajdowanie urządzeń"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Odłącz"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Zatrzymaj przesyłanie"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Zatrzymaj przesyłanie"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Zamknij"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Odtwórz"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Wstrzymaj"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Zatrzymaj"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Rozwiń"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Zwiń"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Okładka albumu"</string>
diff --git a/v7/mediarouter/res/values-pt-rBR/strings.xml b/v7/mediarouter/res/values-pt-rBR/strings.xml
index b424082..d7fbbb8 100644
--- a/v7/mediarouter/res/values-pt-rBR/strings.xml
+++ b/v7/mediarouter/res/values-pt-rBR/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Transmitir para"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Localizando dispositivos"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Desconectar"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Interromper transmissão"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Interromper transmissão"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Fechar"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Reproduzir"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pausar"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Parar"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Expandir"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Recolher"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Arte do álbum"</string>
diff --git a/v7/mediarouter/res/values-pt-rPT/strings.xml b/v7/mediarouter/res/values-pt-rPT/strings.xml
index c6c52f9..0e700df 100644
--- a/v7/mediarouter/res/values-pt-rPT/strings.xml
+++ b/v7/mediarouter/res/values-pt-rPT/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Transmitir para"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"A localizar dispositivos"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Desassociar"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Interromper a transmissão"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Parar a transmissão"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Fechar"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Reproduzir"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Interromper"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Parar"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Expandir"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Reduzir"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Imagem do álbum"</string>
diff --git a/v7/mediarouter/res/values-pt/strings.xml b/v7/mediarouter/res/values-pt/strings.xml
index b424082..d7fbbb8 100644
--- a/v7/mediarouter/res/values-pt/strings.xml
+++ b/v7/mediarouter/res/values-pt/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Transmitir para"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Localizando dispositivos"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Desconectar"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Interromper transmissão"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Interromper transmissão"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Fechar"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Reproduzir"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pausar"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Parar"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Expandir"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Recolher"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Arte do álbum"</string>
diff --git a/v7/mediarouter/res/values-ro/strings.xml b/v7/mediarouter/res/values-ro/strings.xml
index ab2fd61..0f213183 100644
--- a/v7/mediarouter/res/values-ro/strings.xml
+++ b/v7/mediarouter/res/values-ro/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Proiectați pe"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Se caută dispozitive"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Deconectați-vă"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Opriți proiecția"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Nu mai proiectați"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Închideți"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Redați"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Întrerupeți"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Opriți"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Extindeți"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Restrângeți"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Grafica albumului"</string>
diff --git a/v7/mediarouter/res/values-ru/strings.xml b/v7/mediarouter/res/values-ru/strings.xml
index 768f300..1ac86d8 100644
--- a/v7/mediarouter/res/values-ru/strings.xml
+++ b/v7/mediarouter/res/values-ru/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Выберите устройство"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Поиск устройств…"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Отключить"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Остановить трансляцию"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Прекратить трансляцию"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Закрыть"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Воспроизвести"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Приостановить"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Остановить"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Развернуть"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Свернуть"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Обложка"</string>
diff --git a/v7/mediarouter/res/values-si-rLK/strings.xml b/v7/mediarouter/res/values-si-rLK/strings.xml
index e26a087..bb87945 100644
--- a/v7/mediarouter/res/values-si-rLK/strings.xml
+++ b/v7/mediarouter/res/values-si-rLK/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"විකාශය"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"උපාංග සෙවීම"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"විසන්ධි කරන්න"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"විකාශ කිරීම නවත්වන්න"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"විකාශ කිරීම නතර කරන්න"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"වසන්න"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"ධාවනය කරන්න"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"විරාම ගන්වන්න"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"නතර කරන්න"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"දිග හරින්න"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"හකුළන්න"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ඇල්බම කලාව"</string>
diff --git a/v7/mediarouter/res/values-sk/strings.xml b/v7/mediarouter/res/values-sk/strings.xml
index 92c7307..2df58ef 100644
--- a/v7/mediarouter/res/values-sk/strings.xml
+++ b/v7/mediarouter/res/values-sk/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Prenos do"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Vyhľadávanie zariadení"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Odpojiť"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Zastaviť prenos"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Zastaviť prenášanie"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Zavrieť"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Prehrať"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pozastaviť"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Zastaviť"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Rozbaliť"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Zbaliť"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Obrázok albumu"</string>
diff --git a/v7/mediarouter/res/values-sl/strings.xml b/v7/mediarouter/res/values-sl/strings.xml
index ba5609e..abd82de 100644
--- a/v7/mediarouter/res/values-sl/strings.xml
+++ b/v7/mediarouter/res/values-sl/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Predvajanje prek:"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Iskanje naprav"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Prekini povezavo"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Ustavi predvajanje"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Ustavi predvajanje"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Zapri"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Predvajanje"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Zaustavi"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Ustavi"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Razširi"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Strni"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Naslovnica albuma"</string>
diff --git a/v7/mediarouter/res/values-sq-rAL/strings.xml b/v7/mediarouter/res/values-sq-rAL/strings.xml
index 5ebfbab..9f75316 100644
--- a/v7/mediarouter/res/values-sq-rAL/strings.xml
+++ b/v7/mediarouter/res/values-sq-rAL/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Transmeto te"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Gjetja e pajisjeve"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Shkëpute"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Ndalo transmetimin"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Ndalo transmetimin"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Mbyll"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Luaj"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pauzë"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Ndalo"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Zgjeroje"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Palose"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Kopertina e albumit"</string>
diff --git a/v7/mediarouter/res/values-sr/strings.xml b/v7/mediarouter/res/values-sr/strings.xml
index 0696486..ac53dff 100644
--- a/v7/mediarouter/res/values-sr/strings.xml
+++ b/v7/mediarouter/res/values-sr/strings.xml
@@ -22,13 +22,14 @@
     <string name="mr_cast_button_disconnected" msgid="816305490427819240">"Дугме Пребаци. Веза је прекинута"</string>
     <string name="mr_cast_button_connecting" msgid="2187642765091873834">"Дугме Пребаци. Повезује се"</string>
     <string name="mr_cast_button_connected" msgid="5088427771788648085">"Дугме Пребаци. Повезан је"</string>
-    <string name="mr_chooser_title" msgid="414301941546135990">"Пребацујте на"</string>
+    <string name="mr_chooser_title" msgid="414301941546135990">"Пребацуј на"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Проналажење уређаја"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Прекини везу"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Заустави пребацивање"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Заустави пребацивање"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Затвори"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Пусти"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Паузирај"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Заустави"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Прошири"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Скупи"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Омот албума"</string>
diff --git a/v7/mediarouter/res/values-sv/strings.xml b/v7/mediarouter/res/values-sv/strings.xml
index 9be5f57..73f26ae 100644
--- a/v7/mediarouter/res/values-sv/strings.xml
+++ b/v7/mediarouter/res/values-sv/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Casta till"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Letar efter enheter"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Koppla från"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Sluta casta"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Sluta casta"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Stäng"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Spela upp"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Pausa"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Avbryt"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Utöka"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Komprimera"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Skivomslag"</string>
diff --git a/v7/mediarouter/res/values-sw/strings.xml b/v7/mediarouter/res/values-sw/strings.xml
index 989f420..0138fa4 100644
--- a/v7/mediarouter/res/values-sw/strings.xml
+++ b/v7/mediarouter/res/values-sw/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Tuma kwenye"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Inatafuta vifaa"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Ondoa"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Acha kutuma"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Acha kutuma"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Funga"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Cheza"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Sitisha"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Simamisha"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Panua"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Kunja"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Sanaa ya albamu"</string>
diff --git a/v7/mediarouter/res/values-ta-rIN/strings.xml b/v7/mediarouter/res/values-ta-rIN/strings.xml
index decdebd..59dac88 100644
--- a/v7/mediarouter/res/values-ta-rIN/strings.xml
+++ b/v7/mediarouter/res/values-ta-rIN/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"இதில் திரையிடு"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"சாதனங்களைத் தேடுகிறது"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"தொடர்பைத் துண்டி"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"அனுப்புவதை நிறுத்து"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"அனுப்புவதை நிறுத்து"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"மூடும்"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"இயக்கும்"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"இடைநிறுத்தும்"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"நிறுத்துவதற்கான பொத்தான்"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"விரிவாக்கு"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"சுருக்கு"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ஆல்பம் ஆர்ட்"</string>
diff --git a/v7/mediarouter/res/values-te-rIN/strings.xml b/v7/mediarouter/res/values-te-rIN/strings.xml
index 7412980..c36a58d 100644
--- a/v7/mediarouter/res/values-te-rIN/strings.xml
+++ b/v7/mediarouter/res/values-te-rIN/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"దీనికి ప్రసారం చేయండి"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"పరికరాలను కనుగొంటోంది"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"డిస్‌కనెక్ట్ చేయి"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"ప్రసారాన్ని ఆపివేయి"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"ప్రసారాన్ని ఆపివేయి"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"మూసివేస్తుంది"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"ప్లే చేస్తుంది"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"పాజ్ చేస్తుంది"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"ఆపివేయి"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"విస్తరింపజేస్తుంది"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"కుదిస్తుంది"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ఆల్బమ్ ఆర్ట్"</string>
diff --git a/v7/mediarouter/res/values-th/strings.xml b/v7/mediarouter/res/values-th/strings.xml
index 231aa2e..d9be678 100644
--- a/v7/mediarouter/res/values-th/strings.xml
+++ b/v7/mediarouter/res/values-th/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"แคสต์ไปยัง"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"กำลังค้นหาอุปกรณ์"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"ยกเลิกการเชื่อมต่อ"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"หยุดการแคสต์"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"หยุดแคสต์"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"ปิด"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"เล่น"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"หยุดชั่วคราว"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"หยุด"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"ขยาย"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"ยุบ"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"ปกอัลบั้ม"</string>
diff --git a/v7/mediarouter/res/values-tl/strings.xml b/v7/mediarouter/res/values-tl/strings.xml
index c128aba..4b4922b 100644
--- a/v7/mediarouter/res/values-tl/strings.xml
+++ b/v7/mediarouter/res/values-tl/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"I-cast sa"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Naghahanap ng mga device"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Idiskonekta"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Itigil ang pagca-cast"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Ihinto ang pag-cast"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Isara"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"I-play"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"I-pause"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Ihinto"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Palawakin"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"I-collapse"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Album art"</string>
diff --git a/v7/mediarouter/res/values-tr/strings.xml b/v7/mediarouter/res/values-tr/strings.xml
index 6bc7072..a0eb2e4 100644
--- a/v7/mediarouter/res/values-tr/strings.xml
+++ b/v7/mediarouter/res/values-tr/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Şuraya yayınla:"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Cihazlar bulunuyor"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Bağlantıyı kes"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Yayını durdur"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Yayını durdur"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Kapat"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Oynat"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Duraklat"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Durdur"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Genişlet"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Daralt"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albüm kapağı"</string>
diff --git a/v7/mediarouter/res/values-uk/strings.xml b/v7/mediarouter/res/values-uk/strings.xml
index 1f9104e..136d449 100644
--- a/v7/mediarouter/res/values-uk/strings.xml
+++ b/v7/mediarouter/res/values-uk/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Транслювати на"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Пошук пристроїв"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Відключити"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Припинити трансляцію"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Припинити трансляцію"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Закрити"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Відтворити"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Призупинити"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Припинити"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Розгорнути"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Згорнути"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Обкладинка альбому"</string>
diff --git a/v7/mediarouter/res/values-ur-rPK/strings.xml b/v7/mediarouter/res/values-ur-rPK/strings.xml
index 667fddc..c3f08ce 100644
--- a/v7/mediarouter/res/values-ur-rPK/strings.xml
+++ b/v7/mediarouter/res/values-ur-rPK/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"اس میں کاسٹ کریں"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"آلات تلاش ہو رہے ہیں"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"غیر منسلک کریں"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"کاسٹ کرنا بند کریں"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"کاسٹ کرنا بند کریں"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"بند کریں"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"چلائیں"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"موقوف کریں"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"روکیں"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"پھیلائیں"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"سکیڑیں"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"البم آرٹ"</string>
diff --git a/v7/mediarouter/res/values-uz-rUZ/strings.xml b/v7/mediarouter/res/values-uz-rUZ/strings.xml
index 91b5e49..fae6076 100644
--- a/v7/mediarouter/res/values-uz-rUZ/strings.xml
+++ b/v7/mediarouter/res/values-uz-rUZ/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Quyidagiga translatsiya qilish:"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Qurilmalarni topish"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Ulanishni uzish"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Translatsiyani to‘xtatish"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Translatsiyani to‘xtatish"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Yopish"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Boshlash"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"To‘xtatib turish"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"To‘xtatish"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Yoyish"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Yig‘ish"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Albom muqovasi"</string>
diff --git a/v7/mediarouter/res/values-vi/strings.xml b/v7/mediarouter/res/values-vi/strings.xml
index 44e7a6a..5801c4f 100644
--- a/v7/mediarouter/res/values-vi/strings.xml
+++ b/v7/mediarouter/res/values-vi/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Truyền tới"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Tìm thiết bị"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Ngắt kết nối"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Dừng truyền"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Dừng truyền"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Đóng"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Phát"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Tạm dừng"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Dừng"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Mở rộng"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Thu gọn"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Ảnh bìa album"</string>
diff --git a/v7/mediarouter/res/values-zh-rCN/strings.xml b/v7/mediarouter/res/values-zh-rCN/strings.xml
index 15221e9..be2ee12 100644
--- a/v7/mediarouter/res/values-zh-rCN/strings.xml
+++ b/v7/mediarouter/res/values-zh-rCN/strings.xml
@@ -25,12 +25,13 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"投射到"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"正在查找设备"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"断开连接"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"停止投射"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"停止投射"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"关闭"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"播放"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"暂停"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"停止"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"展开"</string>
-    <string name="mr_controller_collapse_group" msgid="7924809056904240926">"折叠"</string>
+    <string name="mr_controller_collapse_group" msgid="7924809056904240926">"收起"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"专辑封面"</string>
     <string name="mr_controller_volume_slider" msgid="2361785992211841709">"音量滑块"</string>
     <string name="mr_controller_no_media_selected" msgid="6547130360349182381">"未选择任何媒体"</string>
diff --git a/v7/mediarouter/res/values-zh-rHK/strings.xml b/v7/mediarouter/res/values-zh-rHK/strings.xml
index 0aebac0..26a4824 100644
--- a/v7/mediarouter/res/values-zh-rHK/strings.xml
+++ b/v7/mediarouter/res/values-zh-rHK/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"投放至"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"正在尋找裝置"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"中斷連線"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"停止投放"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"停止投放"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"關閉"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"播放"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"暫停"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"停止"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"展開"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"收合"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"專輯封面"</string>
diff --git a/v7/mediarouter/res/values-zh-rTW/strings.xml b/v7/mediarouter/res/values-zh-rTW/strings.xml
index aa9c75b..b5f6942 100644
--- a/v7/mediarouter/res/values-zh-rTW/strings.xml
+++ b/v7/mediarouter/res/values-zh-rTW/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"投放到"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"正在尋找裝置"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"中斷連線"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"停止投放"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"停止投放"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"關閉"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"播放"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"暫停"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"停止"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"展開"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"收合"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"專輯封面"</string>
diff --git a/v7/mediarouter/res/values-zu/strings.xml b/v7/mediarouter/res/values-zu/strings.xml
index db82ffa..9ffb583 100644
--- a/v7/mediarouter/res/values-zu/strings.xml
+++ b/v7/mediarouter/res/values-zu/strings.xml
@@ -25,10 +25,11 @@
     <string name="mr_chooser_title" msgid="414301941546135990">"Sakaza ku-"</string>
     <string name="mr_chooser_searching" msgid="6349900579507521956">"Ithola amadivayisi"</string>
     <string name="mr_controller_disconnect" msgid="1227264889412989580">"Nqamula"</string>
-    <string name="mr_controller_stop_casting" msgid="4570331844078181931">"Misa ukusakaza"</string>
+    <string name="mr_controller_stop_casting" msgid="8857886794086583226">"Misa ukusakaza"</string>
     <string name="mr_controller_close_description" msgid="7333862312480583260">"Vala"</string>
     <string name="mr_controller_play" msgid="683634565969987458">"Dlala"</string>
     <string name="mr_controller_pause" msgid="5451884435510905406">"Misa isikhashana"</string>
+    <string name="mr_controller_stop" msgid="735874641921425123">"Misa"</string>
     <string name="mr_controller_expand_group" msgid="8062427022744266907">"Nweba"</string>
     <string name="mr_controller_collapse_group" msgid="7924809056904240926">"Goqa"</string>
     <string name="mr_controller_album_art" msgid="6422801843540543585">"Ubuciko be-albhamu"</string>
diff --git a/v7/palette/src/main/java/android/support/v7/graphics/ColorCutQuantizer.java b/v7/palette/src/main/java/android/support/v7/graphics/ColorCutQuantizer.java
index 1e78f94..268d9b4 100644
--- a/v7/palette/src/main/java/android/support/v7/graphics/ColorCutQuantizer.java
+++ b/v7/palette/src/main/java/android/support/v7/graphics/ColorCutQuantizer.java
@@ -289,7 +289,7 @@
         }
 
         /**
-         * Split this color box at the mid-point along it's longest dimension
+         * Split this color box at the mid-point along its longest dimension
          *
          * @return the new ColorBox
          */
@@ -343,7 +343,7 @@
 
             // We need to sort the colors in this box based on the longest color dimension.
             // As we can't use a Comparator to define the sort logic, we modify each color so that
-            // it's most significant is the desired dimension
+            // its most significant is the desired dimension
             modifySignificantOctet(colors, longestDimension, mLowerIndex, mUpperIndex);
 
             // Now sort... Arrays.sort uses a exclusive toIndex so we need to add 1
diff --git a/v7/palette/src/main/java/android/support/v7/graphics/Palette.java b/v7/palette/src/main/java/android/support/v7/graphics/Palette.java
index d092587..86c2737 100644
--- a/v7/palette/src/main/java/android/support/v7/graphics/Palette.java
+++ b/v7/palette/src/main/java/android/support/v7/graphics/Palette.java
@@ -658,7 +658,7 @@
         /**
          * Set the resize value when using a {@link android.graphics.Bitmap} as the source.
          * If the bitmap's largest dimension is greater than the value specified, then the bitmap
-         * will be resized so that it's largest dimension matches {@code maxDimension}. If the
+         * will be resized so that its largest dimension matches {@code maxDimension}. If the
          * bitmap is smaller or equal, the original is used as-is.
          *
          * @deprecated Using {@link #resizeBitmapArea(int)} is preferred since it can handle
@@ -678,7 +678,7 @@
         /**
          * Set the resize value when using a {@link android.graphics.Bitmap} as the source.
          * If the bitmap's area is greater than the value specified, then the bitmap
-         * will be resized so that it's area matches {@code area}. If the
+         * will be resized so that its area matches {@code area}. If the
          * bitmap is smaller or equal, the original is used as-is.
          * <p>
          * This value has a large effect on the processing time. The larger the resized image is,
diff --git a/v7/recyclerview/src/android/support/v7/util/SortedList.java b/v7/recyclerview/src/android/support/v7/util/SortedList.java
index f96433f..c62d0ce 100644
--- a/v7/recyclerview/src/android/support/v7/util/SortedList.java
+++ b/v7/recyclerview/src/android/support/v7/util/SortedList.java
@@ -361,7 +361,7 @@
      * {@link BatchedCallback#dispatchLastEvent()} right after you complete your data changes.
      * Failing to do so may create data inconsistencies with the Callback.
      * <p>
-     * If the current Callback in an instance of {@link BatchedCallback}, calling this method
+     * If the current Callback is an instance of {@link BatchedCallback}, calling this method
      * has no effect.
      */
     public void beginBatchedUpdates() {
diff --git a/v7/recyclerview/src/android/support/v7/widget/helper/ItemTouchHelper.java b/v7/recyclerview/src/android/support/v7/widget/helper/ItemTouchHelper.java
index cce7161..c3f3a53 100644
--- a/v7/recyclerview/src/android/support/v7/widget/helper/ItemTouchHelper.java
+++ b/v7/recyclerview/src/android/support/v7/widget/helper/ItemTouchHelper.java
@@ -1059,7 +1059,7 @@
      */
     public void startDrag(ViewHolder viewHolder) {
         if (!mCallback.hasDragFlag(mRecyclerView, viewHolder)) {
-            Log.e(TAG, "Start drag has been called but swiping is not enabled");
+            Log.e(TAG, "Start drag has been called but dragging is not enabled");
             return;
         }
         if (viewHolder.itemView.getParent() != mRecyclerView) {
@@ -1106,7 +1106,7 @@
      */
     public void startSwipe(ViewHolder viewHolder) {
         if (!mCallback.hasSwipeFlag(mRecyclerView, viewHolder)) {
-            Log.e(TAG, "Start swipe has been called but dragging is not enabled");
+            Log.e(TAG, "Start swipe has been called but swiping is not enabled");
             return;
         }
         if (viewHolder.itemView.getParent() != mRecyclerView) {
diff --git a/v8/renderscript/Android.mk b/v8/renderscript/Android.mk
deleted file mode 100644
index 8815a0a2..0000000
--- a/v8/renderscript/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Don't build the library in unbundled branches.
-ifeq (,$(TARGET_BUILD_APPS))
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_CFLAGS += -std=c++11
-
-LOCAL_MODULE := android-support-v8-renderscript
-LOCAL_SDK_VERSION := 23
-LOCAL_SRC_FILES := $(call all-java-files-under, java/src)
-LOCAL_SHARED_ANDROID_LIBRARIES := android-support-annotations
-
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# TODO: Build the tests as an APK here
-
-include $(call all-makefiles-under, $(LOCAL_PATH))
-
-endif
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Allocation.java b/v8/renderscript/java/src/android/support/v8/renderscript/Allocation.java
deleted file mode 100644
index 2384518..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Allocation.java
+++ /dev/null
@@ -1,3032 +0,0 @@
-/*
- * Copyright (C) 2008-2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.nio.ByteBuffer;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.util.Log;
-import android.view.Surface;
-
-/**
- * <p> This class provides the primary method through which data is passed to
- * and from RenderScript kernels.  An Allocation provides the backing store for
- * a given {@link android.support.v8.renderscript.Type}.  </p>
- *
- * <p>An Allocation also contains a set of usage flags that denote how the
- * Allocation could be used. For example, an Allocation may have usage flags
- * specifying that it can be used from a script as well as input to a {@link
- * android.support.v8.renderscript.Sampler}. A developer must synchronize
- * across these different usages using
- * {@link android.support.v8.renderscript.Allocation#syncAll} in
- * order to ensure that different users of the Allocation have a consistent view
- * of memory. For example, in the case where an Allocation is used as the output
- * of one kernel and as Sampler input in a later kernel, a developer must call
- * {@link #syncAll syncAll(Allocation.USAGE_SCRIPT)} prior to launching the
- * second kernel to ensure correctness.
- *
- * <p>An Allocation can be populated with the {@link #copyFrom} routines. For
- * more complex Element types, the {@link #copyFromUnchecked} methods can be
- * used to copy from byte arrays or similar constructs.</p>
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses
- * RenderScript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a>
- * developer guide.</p>
- * </div>
- **/
-public class Allocation extends BaseObj {
-    Type mType;
-    Bitmap mBitmap;
-    int mUsage;
-    int mSize;
-    Allocation mAdaptedAllocation;
-    ByteBuffer mByteBuffer = null;
-    long mByteBufferStride = 0;
-
-    boolean mConstrainedLOD;
-    boolean mConstrainedFace;
-    boolean mConstrainedY;
-    boolean mConstrainedZ;
-    boolean mReadAllowed = true;
-    boolean mWriteAllowed = true;
-    boolean mAutoPadding = false;
-    int mSelectedY;
-    int mSelectedZ;
-    int mSelectedLOD;
-    Type.CubemapFace mSelectedFace = Type.CubemapFace.POSITIVE_X;
-
-    int mCurrentDimX;
-    int mCurrentDimY;
-    int mCurrentDimZ;
-    int mCurrentCount;
-
-    private Element.DataType validateObjectIsPrimitiveArray(Object d, boolean checkType) {
-        final Class c = d.getClass();
-        if (!c.isArray()) {
-            throw new RSIllegalArgumentException("Object passed is not an array of primitives.");
-        }
-        final Class cmp = c.getComponentType();
-        if (!cmp.isPrimitive()) {
-            throw new RSIllegalArgumentException("Object passed is not an Array of primitives.");
-        }
-
-        if (cmp == Long.TYPE) {
-            if (checkType) {
-                validateIsInt64();
-                return mType.mElement.mType;
-            }
-            return Element.DataType.SIGNED_64;
-        }
-
-        if (cmp == Integer.TYPE) {
-            if (checkType) {
-                validateIsInt32();
-                return mType.mElement.mType;
-            }
-            return Element.DataType.SIGNED_32;
-        }
-
-        if (cmp == Short.TYPE) {
-            if (checkType) {
-                validateIsInt16();
-                return mType.mElement.mType;
-            }
-            return Element.DataType.SIGNED_16;
-        }
-
-        if (cmp == Byte.TYPE) {
-            if (checkType) {
-                validateIsInt8();
-                return mType.mElement.mType;
-            }
-            return Element.DataType.SIGNED_8;
-        }
-
-        if (cmp == Float.TYPE) {
-            if (checkType) {
-                validateIsFloat32();
-            }
-            return Element.DataType.FLOAT_32;
-        }
-
-        if (cmp == Double.TYPE) {
-            if (checkType) {
-                validateIsFloat64();
-            }
-            return Element.DataType.FLOAT_64;
-        }
-        return null;
-    }
-
-    /*
-     * Hold reference to the shared allocation in compat context
-     * for Incremental Support Lib.
-     */
-    long mIncCompatAllocation;
-    boolean mIncAllocDestroyed;
-    /**
-     * The usage of the Allocation.  These signal to RenderScript where to place
-     * the Allocation in memory.
-     *
-     */
-
-    /**
-     * The Allocation will be bound to and accessed by scripts.
-     */
-    public static final int USAGE_SCRIPT = 0x0001;
-
-    /**
-     * The Allocation will be used as a texture source by one or more graphics
-     * programs.
-     *
-     */
-    public static final int USAGE_GRAPHICS_TEXTURE = 0x0002;
-
-    /**
-     * The Allocation will be used as a {@link android.graphics.SurfaceTexture}
-     * consumer.  This usage will cause the Allocation to be created as
-     * read-only.
-     *
-     */
-    public static final int USAGE_IO_INPUT = 0x0020;
-
-    /**
-     * The Allocation will be used as a {@link android.graphics.SurfaceTexture}
-     * producer.  The dimensions and format of the {@link
-     * android.graphics.SurfaceTexture} will be forced to those of the
-     * Allocation.
-     *
-     */
-    public static final int USAGE_IO_OUTPUT = 0x0040;
-
-    /**
-     * The Allocation's backing store will be inherited from another object
-     * (usually a {@link android.graphics.Bitmap}); copying to or from the
-     * original source Bitmap will cause a synchronization rather than a full
-     * copy.  {@link #syncAll} may also be used to synchronize the Allocation
-     * and the source Bitmap.
-     *
-     * <p>This is set by default for allocations created with {@link
-     * #createFromBitmap} in API version 18 and higher.</p>
-     *
-     */
-    public static final int USAGE_SHARED = 0x0080;
-
-    /**
-     * Controls mipmap behavior when using the bitmap creation and update
-     * functions.
-     */
-    public enum MipmapControl {
-        /**
-         * No mipmaps will be generated and the type generated from the incoming
-         * bitmap will not contain additional LODs.
-         */
-        MIPMAP_NONE(0),
-
-        /**
-         * A full mipmap chain will be created in script memory.  The Type of
-         * the Allocation will contain a full mipmap chain.  On upload, the full
-         * chain will be transferred.
-         */
-        MIPMAP_FULL(1),
-
-        /**
-         * The Type of the Allocation will be the same as MIPMAP_NONE.  It will
-         * not contain mipmaps.  On upload, the allocation data will contain a
-         * full mipmap chain generated from the top level in script memory.
-         */
-        MIPMAP_ON_SYNC_TO_TEXTURE(2);
-
-        int mID;
-        MipmapControl(int id) {
-            mID = id;
-        }
-    }
-
-    /**
-     * Getter & Setter for the dummy allocation for Inc Support Lib.
-     *
-     */
-    public long getIncAllocID() {
-        return mIncCompatAllocation;
-    }
-    public void setIncAllocID(long id) {
-        mIncCompatAllocation = id;
-    }
-
-    private long getIDSafe() {
-        if (mAdaptedAllocation != null) {
-            return mAdaptedAllocation.getID(mRS);
-        }
-        return getID(mRS);
-    }
-
-
-   /**
-     * Get the {@link android.support.v8.renderscript.Element} of the {@link
-     * android.support.v8.renderscript.Type} of the Allocation.
-     *
-     * @return Element
-     *
-     */
-    public Element getElement() {
-        return mType.getElement();
-    }
-
-    /**
-     * Get the usage flags of the Allocation.
-     *
-     * @return usage this Allocation's set of the USAGE_* flags OR'd together
-     *
-     */
-    public int getUsage() {
-        return mUsage;
-    }
-
-    /**
-     * Specifies the mapping between the Allocation's cells and an array's elements
-     * when data is copied from the Allocation to the array, or vice-versa.
-     *
-     * Only applies to an Allocation whose Element is a vector of length 3 (such as
-     * {@link Element#U8_3} or {@link Element#RGB_888}). Enabling this feature may make
-     * copying data from the Allocation to an array or vice-versa less efficient.
-     *
-     * <p> Vec3 Element cells are stored in an Allocation as Vec4 Element cells with
-     * the same {@link android.support.v8.renderscript.Element.DataType}, with the fourth vector
-     * component treated as padding. When this feature is enabled, only the data components,
-     * i.e. the first 3 vector components of each cell, will be mapped between the array
-     * and the Allocation. When disabled, explicit mapping of the padding components
-     * is required, as described in the following example.
-     *
-     * <p> For example, when copying an integer array to an Allocation of two {@link
-     * Element#I32_3} cells using {@link #copyFrom(int[])}:
-     * <p> When disabled:
-     *     The array must have at least 8 integers, with the first 4 integers copied
-     *     to the first cell of the Allocation, and the next 4 integers copied to
-     *     the second cell. The 4th and 8th integers are mapped as the padding components.
-     *
-     * <p> When enabled:
-     *     The array just needs to have at least 6 integers, with the first 3 integers
-     *     copied to the the first cell as data components, and the next 3 copied to
-     *     the second cell. There is no mapping for the padding components.
-     *
-     * <p> Similarly, when copying a byte array to an Allocation of two {@link
-     * Element#I32_3} cells, using {@link #copyFromUnchecked(int[])}:
-     * <p> When disabled:
-     *     The array must have at least 32 bytes, with the first 16 bytes copied
-     *     to the first cell of the Allocation, and the next 16 bytes copied to
-     *     the second cell. The 13th-16th and 29th-32nd bytes are mapped as padding
-     *     components.
-     *
-     * <p> When enabled:
-     *     The array just needs to have at least 24 bytes, with the first 12 bytes copied
-     *     to the first cell of the Allocation, and the next 12 bytes copied to
-     *     the second cell. There is no mapping for the padding components.
-     *
-     * <p> Similar to copying data to an Allocation from an array, when copying data from an
-     * Allocation to an array, the padding components for Vec3 Element cells will not be
-     * copied/mapped to the array if AutoPadding is enabled.
-     *
-     * <p> Default: Disabled.
-     *
-     * @param useAutoPadding True: enable AutoPadding; False: disable AutoPadding
-     *
-     */
-    public void setAutoPadding(boolean useAutoPadding) {
-        mAutoPadding = useAutoPadding;
-    }
-
-    /**
-     * Get the size of the Allocation in bytes.
-     *
-     * @return size of the Allocation in bytes.
-     *
-     */
-    public int getBytesSize() {
-        if (mType.mDimYuv != 0) {
-            return (int)Math.ceil(mType.getCount() * mType.getElement().getBytesSize() * 1.5);
-        }
-        return mType.getCount() * mType.getElement().getBytesSize();
-    }
-
-    private void updateCacheInfo(Type t) {
-        mCurrentDimX = t.getX();
-        mCurrentDimY = t.getY();
-        mCurrentDimZ = t.getZ();
-        mCurrentCount = mCurrentDimX;
-        if (mCurrentDimY > 1) {
-            mCurrentCount *= mCurrentDimY;
-        }
-        if (mCurrentDimZ > 1) {
-            mCurrentCount *= mCurrentDimZ;
-        }
-    }
-
-    private void setBitmap(Bitmap b) {
-        mBitmap = b;
-    }
-
-    Allocation(long id, RenderScript rs, Type t, int usage) {
-        super(id, rs);
-        if ((usage & ~(USAGE_SCRIPT |
-                       USAGE_GRAPHICS_TEXTURE |
-                       USAGE_IO_INPUT |
-                       USAGE_IO_OUTPUT |
-                       USAGE_SHARED)) != 0) {
-            throw new RSIllegalArgumentException("Unknown usage specified.");
-        }
-
-        if ((usage & USAGE_IO_INPUT) != 0) {
-            mWriteAllowed = false;
-
-            if ((usage & ~(USAGE_IO_INPUT |
-                           USAGE_GRAPHICS_TEXTURE |
-                           USAGE_SCRIPT)) != 0) {
-                throw new RSIllegalArgumentException("Invalid usage combination.");
-            }
-        }
-
-        mType = t;
-        mUsage = usage;
-        mIncCompatAllocation = 0;
-        mIncAllocDestroyed = false;
-
-        if (t != null) {
-            // TODO: A3D doesn't have Type info during creation, so we can't
-            // calculate the size ahead of time. We can possibly add a method
-            // to update the size in the future if it seems reasonable.
-            mSize = mType.getCount() * mType.getElement().getBytesSize();
-            updateCacheInfo(t);
-        }
-        if (RenderScript.sUseGCHooks == true) {
-            try {
-                RenderScript.registerNativeAllocation.invoke(RenderScript.sRuntime, mSize);
-            } catch (Exception e) {
-                Log.e(RenderScript.LOG_TAG, "Couldn't invoke registerNativeAllocation:" + e);
-                throw new RSRuntimeException("Couldn't invoke registerNativeAllocation:" + e);
-            }
-        }
-    }
-
-    protected void finalize() throws Throwable {
-        if (RenderScript.sUseGCHooks == true) {
-            RenderScript.registerNativeFree.invoke(RenderScript.sRuntime, mSize);
-        }
-        super.finalize();
-    }
-
-    private void validateIsInt64() {
-        if ((mType.mElement.mType == Element.DataType.SIGNED_64) ||
-            (mType.mElement.mType == Element.DataType.UNSIGNED_64)) {
-            return;
-        }
-        throw new RSIllegalArgumentException(
-            "64 bit integer source does not match allocation type " + mType.mElement.mType);
-    }
-
-    private void validateIsInt32() {
-        if ((mType.mElement.mType == Element.DataType.SIGNED_32) ||
-            (mType.mElement.mType == Element.DataType.UNSIGNED_32)) {
-            return;
-        }
-        throw new RSIllegalArgumentException(
-            "32 bit integer source does not match allocation type " + mType.mElement.mType);
-    }
-
-    private void validateIsInt16() {
-        if ((mType.mElement.mType == Element.DataType.SIGNED_16) ||
-            (mType.mElement.mType == Element.DataType.UNSIGNED_16)) {
-            return;
-        }
-        throw new RSIllegalArgumentException(
-            "16 bit integer source does not match allocation type " + mType.mElement.mType);
-    }
-
-    private void validateIsInt8() {
-        if ((mType.mElement.mType == Element.DataType.SIGNED_8) ||
-            (mType.mElement.mType == Element.DataType.UNSIGNED_8)) {
-            return;
-        }
-        throw new RSIllegalArgumentException(
-            "8 bit integer source does not match allocation type " + mType.mElement.mType);
-    }
-
-    private void validateIsFloat32() {
-        if (mType.mElement.mType == Element.DataType.FLOAT_32) {
-            return;
-        }
-        throw new RSIllegalArgumentException(
-            "32 bit float source does not match allocation type " + mType.mElement.mType);
-    }
-
-    private void validateIsFloat64() {
-        if (mType.mElement.mType == Element.DataType.FLOAT_64) {
-            return;
-        }
-        throw new RSIllegalArgumentException(
-            "64 bit float source does not match allocation type " + mType.mElement.mType);
-    }
-
-    private void validateIsObject() {
-        if ((mType.mElement.mType == Element.DataType.RS_ELEMENT) ||
-            (mType.mElement.mType == Element.DataType.RS_TYPE) ||
-            (mType.mElement.mType == Element.DataType.RS_ALLOCATION) ||
-            (mType.mElement.mType == Element.DataType.RS_SAMPLER) ||
-            (mType.mElement.mType == Element.DataType.RS_SCRIPT)) {
-            return;
-        }
-        throw new RSIllegalArgumentException(
-            "Object source does not match allocation type " + mType.mElement.mType);
-    }
-
-    /**
-     * Get the {@link android.support.v8.renderscript.Type} of the Allocation.
-     *
-     * @return Type
-     *
-     */
-    public Type getType() {
-        return mType;
-    }
-
-    /**
-     * Propagate changes from one usage of the Allocation to the
-     * other usages of the Allocation.
-     *
-     */
-    public void syncAll(int srcLocation) {
-        switch (srcLocation) {
-        case USAGE_SCRIPT:
-        case USAGE_GRAPHICS_TEXTURE:
-            break;
-        default:
-            throw new RSIllegalArgumentException("Source must be exactly one usage type.");
-        }
-        mRS.validate();
-        mRS.nAllocationSyncAll(getIDSafe(), srcLocation);
-    }
-
-    /**
-     * Send a buffer to the output stream.  The contents of the Allocation will
-     * be undefined after this operation. This operation is only valid if {@link
-     * #USAGE_IO_OUTPUT} is set on the Allocation.
-     *
-     *
-     */
-    public void ioSend() {
-        if ((mUsage & USAGE_IO_OUTPUT) == 0) {
-            throw new RSIllegalArgumentException(
-                "Can only send buffer if IO_OUTPUT usage specified.");
-        }
-        mRS.validate();
-        mRS.nAllocationIoSend(getID(mRS));
-    }
-
-    /**
-     * Delete once code is updated.
-     */
-    public void ioSendOutput() {
-        ioSend();
-    }
-    /**
-     * Gets or creates a ByteBuffer that contains the raw data of the current Allocation.
-     * <p> If the Allocation is created with USAGE_IO_INPUT, the returned ByteBuffer
-     * would contain the up-to-date data as READ ONLY.
-     * For a 2D or 3D Allocation, the raw data maybe padded so that each row of
-     * the Allocation has certain alignment. The size of each row including padding,
-     * called stride, can be queried using the {@link #getStride()} method.
-     *
-     * Note: Operating on the ByteBuffer of a destroyed Allocation will triger errors.
-     *       The ByteBuffer will be Read-Only for devices before Lollopop (API 21).
-     *
-     * @return ByteBuffer The ByteBuffer associated with raw data pointer of the Allocation.
-     */
-    public ByteBuffer getByteBuffer() {
-        int xBytesSize = mType.getX() * mType.getElement().getBytesSize();
-        // When running on devices before L, we need to construct the ByteBuffer
-        // and explicitly copy the data from the allocation to it.
-        if (mRS.getDispatchAPILevel() < 21) {
-            byte[] data = null;
-            if (mType.getZ() > 0) {
-                // TODO: add support for 3D allocations.
-                return null;
-            } else if (mType.getY() > 0) {
-                // 2D Allocation
-                data = new byte[xBytesSize * mType.getY()];
-                copy2DRangeToUnchecked(0, 0, mType.getX(), mType.getY(), data,
-                                       Element.DataType.SIGNED_8, xBytesSize * mType.getY());
-            } else {
-                // 1D Allocation
-                data = new byte[xBytesSize];
-                copy1DRangeToUnchecked(0, mType.getX(), data);
-            }
-            ByteBuffer bBuffer = ByteBuffer.wrap(data).asReadOnlyBuffer();
-            mByteBufferStride = xBytesSize;
-            return bBuffer;
-        }
-        // Create a new ByteBuffer if it is not initialized or using IO_INPUT.
-        if (mByteBuffer == null || (mUsage & USAGE_IO_INPUT) != 0) {
-            mByteBuffer = mRS.nAllocationGetByteBuffer(getID(mRS), xBytesSize, mType.getY(), mType.getZ());
-        }
-        return mByteBuffer;
-    }
-
-    /**
-     * Gets the stride of the Allocation.
-     * For a 2D or 3D Allocation, the raw data maybe padded so that each row of
-     * the Allocation has certain alignment. The size of each row including such
-     * padding is called stride.
-     *
-     * @return the stride. For 1D Allocation, the stride will be the number of
-     *         bytes of this Allocation. For 2D and 3D Allocations, the stride
-     *         will be the stride in X dimension measuring in bytes.
-     */
-    public long getStride() {
-        if (mByteBufferStride ==0) {
-            if (mRS.getDispatchAPILevel() > 21) {
-                mByteBufferStride = mRS.nAllocationGetStride(getID(mRS));
-            } else {
-                mByteBufferStride = mType.getX() * mType.getElement().getBytesSize();
-            }
-        }
-        return mByteBufferStride;
-    }
-
-    /**
-     * Receive the latest input into the Allocation. This operation
-     * is only valid if {@link #USAGE_IO_INPUT} is set on the Allocation.
-     *
-     */
-    public void ioReceive() {
-        if ((mUsage & USAGE_IO_INPUT) == 0) {
-            throw new RSIllegalArgumentException(
-                "Can only receive if IO_INPUT usage specified.");
-        }
-        mRS.validate();
-        mRS.nAllocationIoReceive(getID(mRS));
-    }
-
-    /**
-     * Copy an array of RS objects to the Allocation.
-     *
-     * @param d Source array.
-     */
-    public void copyFrom(BaseObj[] d) {
-        mRS.validate();
-        validateIsObject();
-        if (d.length != mCurrentCount) {
-            throw new RSIllegalArgumentException("Array size mismatch, allocation sizeX = " +
-                                                 mCurrentCount + ", array length = " + d.length);
-        }
-
-        if (RenderScript.sPointerSize == 8) {
-            long i[] = new long[d.length * 4];
-            for (int ct=0; ct < d.length; ct++) {
-                i[ct * 4] = d[ct].getID(mRS);
-            }
-            copy1DRangeFromUnchecked(0, mCurrentCount, i);
-        } else {
-            int i[] = new int[d.length];
-            for (int ct=0; ct < d.length; ct++) {
-                i[ct] = (int)d[ct].getID(mRS);
-            }
-            copy1DRangeFromUnchecked(0, mCurrentCount, i);
-        }
-    }
-
-    private void validateBitmapFormat(Bitmap b) {
-        Bitmap.Config bc = b.getConfig();
-        if (bc == null) {
-            throw new RSIllegalArgumentException("Bitmap has an unsupported format for this operation");
-        }
-        switch (bc) {
-        case ALPHA_8:
-            if (mType.getElement().mKind != Element.DataKind.PIXEL_A) {
-                throw new RSIllegalArgumentException("Allocation kind is " +
-                                                     mType.getElement().mKind + ", type " +
-                                                     mType.getElement().mType +
-                                                     " of " + mType.getElement().getBytesSize() +
-                                                     " bytes, passed bitmap was " + bc);
-            }
-            break;
-        case ARGB_8888:
-            if ((mType.getElement().mKind != Element.DataKind.PIXEL_RGBA) ||
-                (mType.getElement().getBytesSize() != 4)) {
-                throw new RSIllegalArgumentException("Allocation kind is " +
-                                                     mType.getElement().mKind + ", type " +
-                                                     mType.getElement().mType +
-                                                     " of " + mType.getElement().getBytesSize() +
-                                                     " bytes, passed bitmap was " + bc);
-            }
-            break;
-        case RGB_565:
-            if ((mType.getElement().mKind != Element.DataKind.PIXEL_RGB) ||
-                (mType.getElement().getBytesSize() != 2)) {
-                throw new RSIllegalArgumentException("Allocation kind is " +
-                                                     mType.getElement().mKind + ", type " +
-                                                     mType.getElement().mType +
-                                                     " of " + mType.getElement().getBytesSize() +
-                                                     " bytes, passed bitmap was " + bc);
-            }
-            break;
-        case ARGB_4444:
-            if ((mType.getElement().mKind != Element.DataKind.PIXEL_RGBA) ||
-                (mType.getElement().getBytesSize() != 2)) {
-                throw new RSIllegalArgumentException("Allocation kind is " +
-                                                     mType.getElement().mKind + ", type " +
-                                                     mType.getElement().mType +
-                                                     " of " + mType.getElement().getBytesSize() +
-                                                     " bytes, passed bitmap was " + bc);
-            }
-            break;
-
-        }
-    }
-
-    private void validateBitmapSize(Bitmap b) {
-        if((mCurrentDimX != b.getWidth()) || (mCurrentDimY != b.getHeight())) {
-            throw new RSIllegalArgumentException("Cannot update allocation from bitmap, sizes mismatch");
-        }
-    }
-
-    private void copyFromUnchecked(Object array, Element.DataType dt, int arrayLen) {
-        mRS.validate();
-        if (mCurrentDimZ > 0) {
-            copy3DRangeFromUnchecked(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, array, dt, arrayLen);
-        } else if (mCurrentDimY > 0) {
-            copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, array, dt, arrayLen);
-        } else {
-            copy1DRangeFromUnchecked(0, mCurrentCount, array, dt, arrayLen);
-        }
-    }
-
-    /**
-     * Copy into this Allocation from an array. This method does not guarantee
-     * that the Allocation is compatible with the input buffer; it copies memory
-     * without reinterpretation.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param array The source array
-     */
-    public void copyFromUnchecked(Object array) {
-        copyFromUnchecked(array, validateObjectIsPrimitiveArray(array, false),
-                          java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy into this Allocation from an array. This method does not guarantee
-     * that the Allocation is compatible with the input buffer; it copies memory
-     * without reinterpretation.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d the source array
-     */
-    public void copyFromUnchecked(int[] d) {
-        copyFromUnchecked(d, Element.DataType.SIGNED_32, d.length);
-    }
-
-    /**
-     * Copy into this Allocation from an array. This method does not guarantee
-     * that the Allocation is compatible with the input buffer; it copies memory
-     * without reinterpretation.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d the source array
-     */
-    public void copyFromUnchecked(short[] d) {
-        copyFromUnchecked(d, Element.DataType.SIGNED_16, d.length);
-    }
-
-    /**
-     * Copy into this Allocation from an array. This method does not guarantee
-     * that the Allocation is compatible with the input buffer; it copies memory
-     * without reinterpretation.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d the source array
-     */
-    public void copyFromUnchecked(byte[] d) {
-        copyFromUnchecked(d, Element.DataType.SIGNED_8, d.length);
-    }
-
-    /**
-     * Copy into this Allocation from an array. This method does not guarantee
-     * that the Allocation is compatible with the input buffer; it copies memory
-     * without reinterpretation.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d the source array
-     */
-    public void copyFromUnchecked(float[] d) {
-        copyFromUnchecked(d, Element.DataType.FLOAT_32, d.length);
-    }
-
-
-    /**
-     * Copy into this Allocation from an array.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the array's
-     * primitive type.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param array The source array
-     */
-    public void copyFrom(Object array) {
-        copyFromUnchecked(array, validateObjectIsPrimitiveArray(array, true),
-                          java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy into this Allocation from an array.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d the source array
-     */
-    public void copyFrom(int[] d) {
-        validateIsInt32();
-        copyFromUnchecked(d, Element.DataType.SIGNED_32, d.length);
-    }
-
-    /**
-     * Copy into this Allocation from an array.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d the source array
-     */
-    public void copyFrom(short[] d) {
-        validateIsInt16();
-        copyFromUnchecked(d, Element.DataType.SIGNED_16, d.length);
-    }
-
-    /**
-     * Copy into this Allocation from an array.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d the source array
-     */
-    public void copyFrom(byte[] d) {
-        validateIsInt8();
-        copyFromUnchecked(d, Element.DataType.SIGNED_8, d.length);
-    }
-
-    /**
-     * Copy into this Allocation from an array.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d the source array
-     */
-    public void copyFrom(float[] d) {
-        validateIsFloat32();
-        copyFromUnchecked(d, Element.DataType.FLOAT_32, d.length);
-    }
-
-    /**
-     * Copy into an Allocation from a {@link android.graphics.Bitmap}.  The
-     * height, width, and format of the bitmap must match the existing
-     * allocation.
-     *
-     * <p>If the {@link android.graphics.Bitmap} is the same as the {@link
-     * android.graphics.Bitmap} used to create the Allocation with {@link
-     * #createFromBitmap} and {@link #USAGE_SHARED} is set on the Allocation,
-     * this will synchronize the Allocation with the latest data from the {@link
-     * android.graphics.Bitmap}, potentially avoiding the actual copy.</p>
-     *
-     * @param b the source bitmap
-     */
-    public void copyFrom(Bitmap b) {
-        mRS.validate();
-        if (b.getConfig() == null) {
-            Bitmap newBitmap = Bitmap.createBitmap(b.getWidth(), b.getHeight(), Bitmap.Config.ARGB_8888);
-            Canvas c = new Canvas(newBitmap);
-            c.drawBitmap(b, 0, 0, null);
-            copyFrom(newBitmap);
-            return;
-        }
-        validateBitmapSize(b);
-        validateBitmapFormat(b);
-        mRS.nAllocationCopyFromBitmap(getID(mRS), b);
-    }
-
-    /**
-     * Copy an Allocation from an Allocation.  The types of both allocations
-     * must be identical.
-     *
-     * @param a the source allocation
-     */
-    public void copyFrom(Allocation a) {
-        mRS.validate();
-        if (!mType.equals(a.getType())) {
-            throw new RSIllegalArgumentException("Types of allocations must match.");
-        }
-        copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, a, 0, 0);
-    }
-
-
-    /**
-     * This is only intended to be used by auto-generated code reflected from
-     * the RenderScript script files and should not be used by developers.
-     *
-     * @param xoff
-     * @param fp
-     */
-    public void setFromFieldPacker(int xoff, FieldPacker fp) {
-        mRS.validate();
-        int eSize = mType.mElement.getBytesSize();
-        final byte[] data = fp.getData();
-        int data_length = fp.getPos();
-
-        int count = data_length / eSize;
-        if ((eSize * count) != data_length) {
-            throw new RSIllegalArgumentException("Field packer length " + data_length +
-                                               " not divisible by element size " + eSize + ".");
-        }
-        copy1DRangeFromUnchecked(xoff, count, data);
-    }
-
-    /**
-     * This is only intended to be used by auto-generated code reflected from
-     * the RenderScript script files.
-     *
-     * @param xoff
-     * @param component_number
-     * @param fp
-     */
-    public void setFromFieldPacker(int xoff, int component_number, FieldPacker fp) {
-        mRS.validate();
-        if (component_number >= mType.mElement.mElements.length) {
-            throw new RSIllegalArgumentException("Component_number " + component_number + " out of range.");
-        }
-        if(xoff < 0) {
-            throw new RSIllegalArgumentException("Offset must be >= 0.");
-        }
-
-        final byte[] data = fp.getData();
-        int data_length = fp.getPos();
-        int eSize = mType.mElement.mElements[component_number].getBytesSize();
-        eSize *= mType.mElement.mArraySizes[component_number];
-
-        if (data_length != eSize) {
-            throw new RSIllegalArgumentException("Field packer sizelength " + data_length +
-                                               " does not match component size " + eSize + ".");
-        }
-
-        mRS.nAllocationElementData1D(getIDSafe(), xoff, mSelectedLOD,
-                                     component_number, data, data_length);
-    }
-
-    /**
-     * @hide
-     * This is only intended to be used by auto-generated code reflected from
-     * the RenderScript script files.
-     *
-     * @param xoff
-     * @param yoff
-     * @param zoff
-     * @param component_number
-     * @param fp
-     */
-    /*
-    public void setFromFieldPacker(int xoff, int yoff, int zoff, int component_number, FieldPacker fp) {
-        mRS.validate();
-        if (component_number >= mType.mElement.mElements.length) {
-            throw new RSIllegalArgumentException("Component_number " + component_number + " out of range.");
-        }
-        if(xoff < 0) {
-            throw new RSIllegalArgumentException("Offset x must be >= 0.");
-        }
-        if(yoff < 0) {
-            throw new RSIllegalArgumentException("Offset y must be >= 0.");
-        }
-        if(zoff < 0) {
-            throw new RSIllegalArgumentException("Offset z must be >= 0.");
-        }
-
-        final byte[] data = fp.getData();
-        int data_length = fp.getPos();
-        int eSize = mType.mElement.mElements[component_number].getBytesSize();
-        eSize *= mType.mElement.mArraySizes[component_number];
-
-        if (data_length != eSize) {
-            throw new RSIllegalArgumentException("Field packer sizelength " + data_length +
-                                               " does not match component size " + eSize + ".");
-        }
-
-        mRS.nAllocationElementData(getIDSafe(), xoff, yoff, zoff, mSelectedLOD,
-                                   component_number, data, data_length);
-    }
-    */
-
-    private void data1DChecks(int off, int count, int len, int dataSize, boolean usePadding) {
-        mRS.validate();
-        if(off < 0) {
-            throw new RSIllegalArgumentException("Offset must be >= 0.");
-        }
-        if(count < 1) {
-            throw new RSIllegalArgumentException("Count must be >= 1.");
-        }
-        if((off + count) > mCurrentCount) {
-            throw new RSIllegalArgumentException("Overflow, Available count " + mCurrentCount +
-                                               ", got " + count + " at offset " + off + ".");
-        }
-        if(usePadding) {
-            if(len < dataSize / 4 * 3) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-        } else {
-            if(len < dataSize) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-        }
-    }
-
-    /**
-     * Generate a mipmap chain. This is only valid if the Type of the Allocation
-     * includes mipmaps.
-     *
-     * <p>This function will generate a complete set of mipmaps from the top
-     * level LOD and place them into the script memory space.</p>
-     *
-     * <p>If the Allocation is also using other memory spaces, a call to {@link
-     * #syncAll syncAll(Allocation.USAGE_SCRIPT)} is required.</p>
-     */
-    public void generateMipmaps() {
-        mRS.nAllocationGenerateMipmaps(getID(mRS));
-    }
-
-    private void copy1DRangeFromUnchecked(int off, int count, Object array,
-                                          Element.DataType dt, int arrayLen) {
-        final int dataSize = mType.mElement.getBytesSize() * count;
-        // AutoPadding for Vec3 Element
-        boolean usePadding = false;
-        if (mAutoPadding && (mType.getElement().getVectorSize() == 3)) {
-            usePadding = true;
-        }
-        data1DChecks(off, count, arrayLen * dt.mSize, dataSize, usePadding);
-        mRS.nAllocationData1D(getIDSafe(), off, mSelectedLOD, count, array, dataSize, dt,
-                              mType.mElement.mType.mSize, usePadding);
-    }
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param array The source array
-     */
-    public void copy1DRangeFromUnchecked(int off, int count, Object array) {
-        copy1DRangeFromUnchecked(off, count, array,
-                                 validateObjectIsPrimitiveArray(array, false),
-                                 java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeFromUnchecked(int off, int count, int[] d) {
-        copy1DRangeFromUnchecked(off, count, (Object)d, Element.DataType.SIGNED_32, d.length);
-    }
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeFromUnchecked(int off, int count, short[] d) {
-        copy1DRangeFromUnchecked(off, count, (Object)d, Element.DataType.SIGNED_16, d.length);
-    }
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeFromUnchecked(int off, int count, byte[] d) {
-        copy1DRangeFromUnchecked(off, count, (Object)d, Element.DataType.SIGNED_8, d.length);
-    }
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeFromUnchecked(int off, int count, float[] d) {
-        copy1DRangeFromUnchecked(off, count, (Object)d, Element.DataType.FLOAT_32, d.length);
-    }
-
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the component type
-     * of the array passed in.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param array The source array.
-     */
-    public void copy1DRangeFrom(int off, int count, Object array) {
-        copy1DRangeFromUnchecked(off, count, array,
-                                 validateObjectIsPrimitiveArray(array, true),
-                                 java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeFrom(int off, int count, int[] d) {
-        validateIsInt32();
-        copy1DRangeFromUnchecked(off, count, d, Element.DataType.SIGNED_32, d.length);
-    }
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeFrom(int off, int count, short[] d) {
-        validateIsInt16();
-        copy1DRangeFromUnchecked(off, count, d, Element.DataType.SIGNED_16, d.length);
-    }
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeFrom(int off, int count, byte[] d) {
-        validateIsInt8();
-        copy1DRangeFromUnchecked(off, count, d, Element.DataType.SIGNED_8, d.length);
-    }
-
-    /**
-     * Copy an array into a 1D region of this Allocation.  This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array.
-     */
-    public void copy1DRangeFrom(int off, int count, float[] d) {
-        validateIsFloat32();
-        copy1DRangeFromUnchecked(off, count, d, Element.DataType.FLOAT_32, d.length);
-    }
-
-     /**
-     * Copy part of an Allocation into this Allocation.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param data the source data allocation.
-     * @param dataOff off The offset of the first element in data to
-     *          be copied.
-     */
-    public void copy1DRangeFrom(int off, int count, Allocation data, int dataOff) {
-        mRS.nAllocationData2D(getIDSafe(), off, 0,
-                              mSelectedLOD, mSelectedFace.mID,
-                              count, 1, data.getID(mRS), dataOff, 0,
-                              data.mSelectedLOD, data.mSelectedFace.mID);
-    }
-
-    private void validate2DRange(int xoff, int yoff, int w, int h) {
-        if (mAdaptedAllocation != null) {
-
-        } else {
-
-            if (xoff < 0 || yoff < 0) {
-                throw new RSIllegalArgumentException("Offset cannot be negative.");
-            }
-            if (h < 0 || w < 0) {
-                throw new RSIllegalArgumentException("Height or width cannot be negative.");
-            }
-            if (((xoff + w) > mCurrentDimX) || ((yoff + h) > mCurrentDimY)) {
-                throw new RSIllegalArgumentException("Updated region larger than allocation.");
-            }
-        }
-    }
-
-    void copy2DRangeFromUnchecked(int xoff, int yoff, int w, int h, Object array,
-                                  Element.DataType dt, int arrayLen) {
-        mRS.validate();
-        validate2DRange(xoff, yoff, w, h);
-        final int dataSize = mType.mElement.getBytesSize() * w * h;
-        // AutoPadding for Vec3 Element
-        boolean usePadding = false;
-        int sizeBytes = arrayLen * dt.mSize;
-        if (mAutoPadding && (mType.getElement().getVectorSize() == 3)) {
-            if (dataSize / 4 * 3 > sizeBytes) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-            usePadding = true;
-            sizeBytes = dataSize;
-        } else {
-            if (dataSize > sizeBytes) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-        }
-        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID, w, h,
-                              array, sizeBytes, dt,
-                              mType.mElement.mType.mSize, usePadding);
-    }
-
-    /**
-     * Copy from an array into a rectangular region in this Allocation.  The
-     * array is assumed to be tightly packed. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the input data type.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to update in this Allocation
-     * @param yoff Y offset of the region to update in this Allocation
-     * @param w Width of the region to update
-     * @param h Height of the region to update
-     * @param array Data to be placed into the Allocation
-     */
-    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, Object array) {
-        copy2DRangeFromUnchecked(xoff, yoff, w, h, array,
-                                 validateObjectIsPrimitiveArray(array, true),
-                                 java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy from an array into a rectangular region in this Allocation.  The
-     * array is assumed to be tightly packed. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to update in this Allocation
-     * @param yoff Y offset of the region to update in this Allocation
-     * @param w Width of the region to update
-     * @param h Height of the region to update
-     * @param data to be placed into the Allocation
-     */
-    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, byte[] data) {
-        validateIsInt8();
-        copy2DRangeFromUnchecked(xoff, yoff, w, h, data,
-                                 Element.DataType.SIGNED_8, data.length);
-    }
-
-    /**
-     * Copy from an array into a rectangular region in this Allocation.  The
-     * array is assumed to be tightly packed. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to update in this Allocation
-     * @param yoff Y offset of the region to update in this Allocation
-     * @param w Width of the region to update
-     * @param h Height of the region to update
-     * @param data to be placed into the Allocation
-     */
-    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, short[] data) {
-        validateIsInt16();
-        copy2DRangeFromUnchecked(xoff, yoff, w, h, data,
-                                 Element.DataType.SIGNED_16, data.length);
-    }
-
-    /**
-     * Copy from an array into a rectangular region in this Allocation.  The
-     * array is assumed to be tightly packed. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to update in this Allocation
-     * @param yoff Y offset of the region to update in this Allocation
-     * @param w Width of the region to update
-     * @param h Height of the region to update
-     * @param data to be placed into the Allocation
-     */
-    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, int[] data) {
-        validateIsInt32();
-        copy2DRangeFromUnchecked(xoff, yoff, w, h, data,
-                                 Element.DataType.SIGNED_32, data.length);
-    }
-
-    /**
-     * Copy from an array into a rectangular region in this Allocation.  The
-     * array is assumed to be tightly packed. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to update in this Allocation
-     * @param yoff Y offset of the region to update in this Allocation
-     * @param w Width of the region to update
-     * @param h Height of the region to update
-     * @param data to be placed into the Allocation
-     */
-    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, float[] data) {
-        validateIsFloat32();
-        copy2DRangeFromUnchecked(xoff, yoff, w, h, data,
-                                 Element.DataType.FLOAT_32, data.length);
-    }
-
-    /**
-     * Copy a rectangular region from an Allocation into a rectangular region in
-     * this Allocation.
-     *
-     * @param xoff X offset of the region in this Allocation
-     * @param yoff Y offset of the region in this Allocation
-     * @param w Width of the region to update.
-     * @param h Height of the region to update.
-     * @param data source Allocation.
-     * @param dataXoff X offset in source Allocation
-     * @param dataYoff Y offset in source Allocation
-     */
-    public void copy2DRangeFrom(int xoff, int yoff, int w, int h,
-                                Allocation data, int dataXoff, int dataYoff) {
-        mRS.validate();
-        validate2DRange(xoff, yoff, w, h);
-        mRS.nAllocationData2D(getIDSafe(), xoff, yoff,
-                              mSelectedLOD, mSelectedFace.mID,
-                              w, h, data.getID(mRS), dataXoff, dataYoff,
-                              data.mSelectedLOD, data.mSelectedFace.mID);
-    }
-
-    /**
-     * Copy a {@link android.graphics.Bitmap} into an Allocation.  The height
-     * and width of the update will use the height and width of the {@link
-     * android.graphics.Bitmap}.
-     *
-     * @param xoff X offset of the region to update in this Allocation
-     * @param yoff Y offset of the region to update in this Allocation
-     * @param data the Bitmap to be copied
-     */
-    public void copy2DRangeFrom(int xoff, int yoff, Bitmap data) {
-        mRS.validate();
-        if (data.getConfig() == null) {
-            Bitmap newBitmap = Bitmap.createBitmap(data.getWidth(), data.getHeight(), Bitmap.Config.ARGB_8888);
-            Canvas c = new Canvas(newBitmap);
-            c.drawBitmap(data, 0, 0, null);
-            copy2DRangeFrom(xoff, yoff, newBitmap);
-            return;
-        }
-        validateBitmapFormat(data);
-        validate2DRange(xoff, yoff, data.getWidth(), data.getHeight());
-        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID, data);
-    }
-
-    private void validate3DRange(int xoff, int yoff, int zoff, int w, int h, int d) {
-        if (mAdaptedAllocation != null) {
-
-        } else {
-
-            if (xoff < 0 || yoff < 0 || zoff < 0) {
-                throw new RSIllegalArgumentException("Offset cannot be negative.");
-            }
-            if (h < 0 || w < 0 || d < 0) {
-                throw new RSIllegalArgumentException("Height or width cannot be negative.");
-            }
-            if (((xoff + w) > mCurrentDimX) || ((yoff + h) > mCurrentDimY) || ((zoff + d) > mCurrentDimZ)) {
-                throw new RSIllegalArgumentException("Updated region larger than allocation.");
-            }
-        }
-    }
-
-    /**
-     * Copy a rectangular region from the array into the allocation.
-     * The array is assumed to be tightly packed.
-     *
-     * The data type of the array is not required to be the same as
-     * the element data type.
-     */
-    private void copy3DRangeFromUnchecked(int xoff, int yoff, int zoff, int w, int h, int d,
-                                          Object array, Element.DataType dt, int arrayLen) {
-        mRS.validate();
-        validate3DRange(xoff, yoff, zoff, w, h, d);
-        final int dataSize = mType.mElement.getBytesSize() * w * h * d;
-        // AutoPadding for Vec3 Element
-        boolean usePadding = false;
-        int sizeBytes = arrayLen * dt.mSize;
-        if (mAutoPadding && (mType.getElement().getVectorSize() == 3)) {
-            if (dataSize / 4 * 3 > sizeBytes) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-            usePadding = true;
-            sizeBytes = dataSize;
-        } else {
-            if (dataSize > sizeBytes) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-        }
-        mRS.nAllocationData3D(getIDSafe(), xoff, yoff, zoff, mSelectedLOD, w, h, d,
-                              array, sizeBytes, dt,
-                              mType.mElement.mType.mSize, usePadding);
-    }
-
-    /**
-     * Copy from an array into a 3D region in this Allocation.  The
-     * array is assumed to be tightly packed. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the input data type.
-     *
-     * <p> The size of the region is: w * h * d * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to update in this Allocation
-     * @param yoff Y offset of the region to update in this Allocation
-     * @param zoff Z offset of the region to update in this Allocation
-     * @param w Width of the region to update
-     * @param h Height of the region to update
-     * @param d Depth of the region to update
-     * @param array to be placed into the allocation
-     */
-    public void copy3DRangeFrom(int xoff, int yoff, int zoff, int w, int h, int d, Object array) {
-        copy3DRangeFromUnchecked(xoff, yoff, zoff, w, h, d, array,
-                                 validateObjectIsPrimitiveArray(array, true),
-                                 java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy a rectangular region into the allocation from another
-     * allocation.
-     *
-     * @param xoff X offset of the region to update in this Allocation
-     * @param yoff Y offset of the region to update in this Allocation
-     * @param zoff Z offset of the region to update in this Allocation
-     * @param w Width of the region to update.
-     * @param h Height of the region to update.
-     * @param d Depth of the region to update.
-     * @param data source allocation.
-     * @param dataXoff X offset of the region in the source Allocation
-     * @param dataYoff Y offset of the region in the source Allocation
-     * @param dataZoff Z offset of the region in the source Allocation
-     */
-    public void copy3DRangeFrom(int xoff, int yoff, int zoff, int w, int h, int d,
-                                Allocation data, int dataXoff, int dataYoff, int dataZoff) {
-        mRS.validate();
-        validate3DRange(xoff, yoff, zoff, w, h, d);
-        mRS.nAllocationData3D(getIDSafe(), xoff, yoff, zoff, mSelectedLOD,
-                              w, h, d, data.getID(mRS), dataXoff, dataYoff, dataZoff,
-                              data.mSelectedLOD);
-    }
-
-
-    /**
-     * Copy from the Allocation into a {@link android.graphics.Bitmap}.  The
-     * bitmap must match the dimensions of the Allocation.
-     *
-     * @param b The bitmap to be set from the Allocation.
-     */
-    public void copyTo(Bitmap b) {
-        mRS.validate();
-        validateBitmapFormat(b);
-        validateBitmapSize(b);
-        mRS.nAllocationCopyToBitmap(getID(mRS), b);
-    }
-
-    private void copyTo(Object array, Element.DataType dt, int arrayLen) {
-        mRS.validate();
-        boolean usePadding = false;
-        if (mAutoPadding && (mType.getElement().getVectorSize() == 3)) {
-            usePadding = true;
-        }
-        if (usePadding) {
-            if (dt.mSize * arrayLen < mSize / 4 * 3) {
-                throw new RSIllegalArgumentException(
-                    "Size of output array cannot be smaller than size of allocation.");
-            }
-        } else {
-            if (dt.mSize * arrayLen < mSize) {
-                throw new RSIllegalArgumentException(
-                    "Size of output array cannot be smaller than size of allocation.");
-            }
-        }
-        mRS.nAllocationRead(getID(mRS), array, dt, mType.mElement.mType.mSize, usePadding);
-    }
-
-    /**
-     * Copy from the Allocation into an array. The method is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the input data type.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells will be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param array The array to be set from the Allocation.
-     */
-    public void copyTo(Object array) {
-        copyTo(array, validateObjectIsPrimitiveArray(array, true),
-               java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy from the Allocation into a byte array. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells will be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d The array to be set from the Allocation.
-     */
-    public void copyTo(byte[] d) {
-        validateIsInt8();
-        copyTo(d, Element.DataType.SIGNED_8, d.length);
-    }
-
-    /**
-     * Copy from the Allocation into a short array. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells will be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d The array to be set from the Allocation.
-     */
-    public void copyTo(short[] d) {
-        validateIsInt16();
-        copyTo(d, Element.DataType.SIGNED_16, d.length);
-    }
-
-    /**
-     * Copy from the Allocation into a int array. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells will be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d The array to be set from the Allocation.
-     */
-    public void copyTo(int[] d) {
-        validateIsInt32();
-        copyTo(d, Element.DataType.SIGNED_32, d.length);
-    }
-
-    /**
-     * Copy from the Allocation into a float array. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the Allocation {@link
-     * #getBytesSize getBytesSize()}.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells will be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the Allocation {@link #getBytesSize getBytesSize()}. The padding bytes for
-     * the cells must not be part of the array.
-     *
-     * @param d The array to be set from the Allocation.
-     */
-    public void copyTo(float[] d) {
-        validateIsFloat32();
-        copyTo(d, Element.DataType.FLOAT_32, d.length);
-    }
-
-    /**
-     * @hide
-     * This is only intended to be used by auto-generated code reflected from
-     * the RenderScript script files and should not be used by developers.
-     *
-     * @param xoff
-     * @param yoff
-     * @param zoff
-     * @param component_number
-     * @param fp
-     */
-    /*
-    public void copyToFieldPacker(int xoff, int yoff, int zoff, int component_number, FieldPacker fp) {
-        mRS.validate();
-        if (component_number >= mType.mElement.mElements.length) {
-            throw new RSIllegalArgumentException("Component_number " + component_number + " out of range.");
-        }
-        if(xoff < 0) {
-            throw new RSIllegalArgumentException("Offset x must be >= 0.");
-        }
-        if(yoff < 0) {
-            throw new RSIllegalArgumentException("Offset y must be >= 0.");
-        }
-        if(zoff < 0) {
-            throw new RSIllegalArgumentException("Offset z must be >= 0.");
-        }
-
-        final byte[] data = fp.getData();
-        int data_length = data.length;
-        int eSize = mType.mElement.mElements[component_number].getBytesSize();
-        eSize *= mType.mElement.mArraySizes[component_number];
-
-        if (data_length != eSize) {
-            throw new RSIllegalArgumentException("Field packer sizelength " + data_length +
-                                               " does not match component size " + eSize + ".");
-        }
-
-        mRS.nAllocationElementRead(getIDSafe(), xoff, yoff, zoff, mSelectedLOD,
-                                   component_number, data, data_length);
-    }
-    */
-
-    private void copy1DRangeToUnchecked(int off, int count, Object array,
-                                        Element.DataType dt, int arrayLen) {
-        final int dataSize = mType.mElement.getBytesSize() * count;
-        // AutoPadding for Vec3 Element
-        boolean usePadding = false;
-        if (mAutoPadding && (mType.getElement().getVectorSize() == 3)) {
-            usePadding = true;
-        }
-        data1DChecks(off, count, arrayLen * dt.mSize, dataSize, usePadding);
-        mRS.nAllocationRead1D(getIDSafe(), off, mSelectedLOD, count, array, dataSize, dt,
-                              mType.mElement.mType.mSize, usePadding);
-    }
-
-    /**
-     * Copy a 1D region of this Allocation into an array.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param array The dest array
-     */
-    public void copy1DRangeToUnchecked(int off, int count, Object array) {
-        copy1DRangeToUnchecked(off, count, array,
-                               validateObjectIsPrimitiveArray(array, false),
-                               java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy a 1D region of this Allocation into an array.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeToUnchecked(int off, int count, int[] d) {
-        copy1DRangeToUnchecked(off, count, (Object)d, Element.DataType.SIGNED_32, d.length);
-    }
-
-    /**
-     * Copy a 1D region of this Allocation into an array.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeToUnchecked(int off, int count, short[] d) {
-        copy1DRangeToUnchecked(off, count, (Object)d, Element.DataType.SIGNED_16, d.length);
-    }
-
-    /**
-     * Copy a 1D region of this Allocation into an array.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeToUnchecked(int off, int count, byte[] d) {
-        copy1DRangeToUnchecked(off, count, (Object)d, Element.DataType.SIGNED_8, d.length);
-    }
-
-    /**
-     * Copy a 1D region of this Allocation into an array.  This method does not
-     * guarantee that the Allocation is compatible with the input buffer.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeToUnchecked(int off, int count, float[] d) {
-        copy1DRangeToUnchecked(off, count, (Object)d, Element.DataType.FLOAT_32, d.length);
-    }
-
-
-    /**
-     * Copy a 1D region of this Allocation into an array.  This method is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the component type
-     * of the array passed in.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param array The source array.
-     */
-    public void copy1DRangeTo(int off, int count, Object array) {
-        copy1DRangeToUnchecked(off, count, array,
-                               validateObjectIsPrimitiveArray(array, true),
-                               java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy a 1D region of this Allocation into an array. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeTo(int off, int count, int[] d) {
-        validateIsInt32();
-        copy1DRangeToUnchecked(off, count, d, Element.DataType.SIGNED_32, d.length);
-    }
-
-    /**
-     * Copy a 1D region of this Allocation into an array. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeTo(int off, int count, short[] d) {
-        validateIsInt16();
-        copy1DRangeToUnchecked(off, count, d, Element.DataType.SIGNED_16, d.length);
-    }
-
-    /**
-     * Copy a 1D region of this Allocation into an array. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array
-     */
-    public void copy1DRangeTo(int off, int count, byte[] d) {
-        validateIsInt8();
-        copy1DRangeToUnchecked(off, count, d, Element.DataType.SIGNED_8, d.length);
-    }
-
-    /**
-     * Copy a 1D region of this Allocation into an array. This variant is type checked
-     * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: count * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param off The offset of the first element to be copied.
-     * @param count The number of elements to be copied.
-     * @param d the source array.
-     */
-    public void copy1DRangeTo(int off, int count, float[] d) {
-        validateIsFloat32();
-        copy1DRangeToUnchecked(off, count, d, Element.DataType.FLOAT_32, d.length);
-    }
-
-
-    void copy2DRangeToUnchecked(int xoff, int yoff, int w, int h, Object array,
-                                Element.DataType dt, int arrayLen) {
-        mRS.validate();
-        validate2DRange(xoff, yoff, w, h);
-        final int dataSize = mType.mElement.getBytesSize() * w * h;
-        // AutoPadding for Vec3 Element
-        boolean usePadding = false;
-        int sizeBytes = arrayLen * dt.mSize;
-        if (mAutoPadding && (mType.getElement().getVectorSize() == 3)) {
-            if (dataSize / 4 * 3 > sizeBytes) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-            usePadding = true;
-            sizeBytes = dataSize;
-        } else {
-            if (dataSize > sizeBytes) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-        }
-        mRS.nAllocationRead2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID, w, h,
-                              array, sizeBytes, dt, mType.mElement.mType.mSize, usePadding);
-    }
-
-    /**
-     * Copy from a rectangular region in this Allocation into an array. This
-     * method is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} does not match the component type
-     * of the array passed in.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to copy in this Allocation
-     * @param yoff Y offset of the region to copy in this Allocation
-     * @param w Width of the region to copy
-     * @param h Height of the region to copy
-     * @param array Dest Array to be copied into
-     */
-    public void copy2DRangeTo(int xoff, int yoff, int w, int h, Object array) {
-        copy2DRangeToUnchecked(xoff, yoff, w, h, array,
-                               validateObjectIsPrimitiveArray(array, true),
-                               java.lang.reflect.Array.getLength(array));
-    }
-
-    /**
-     * Copy from a rectangular region in this Allocation into an array. This
-     * variant is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} is neither an 8 bit integer nor a vector
-     * of 8 bit integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to copy in this Allocation
-     * @param yoff Y offset of the region to copy in this Allocation
-     * @param w Width of the region to copy
-     * @param h Height of the region to copy
-     * @param data Dest Array to be copied into
-     */
-    public void copy2DRangeTo(int xoff, int yoff, int w, int h, byte[] data) {
-        validateIsInt8();
-        copy2DRangeToUnchecked(xoff, yoff, w, h, data,
-                               Element.DataType.SIGNED_8, data.length);
-    }
-
-    /**
-     * Copy from a rectangular region in this Allocation into an array. This
-     * variant is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} is neither a 16 bit integer nor a vector
-     * of 16 bit integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to copy in this Allocation
-     * @param yoff Y offset of the region to copy in this Allocation
-     * @param w Width of the region to copy
-     * @param h Height of the region to copy
-     * @param data Dest Array to be copied into
-     */
-    public void copy2DRangeTo(int xoff, int yoff, int w, int h, short[] data) {
-        validateIsInt16();
-        copy2DRangeToUnchecked(xoff, yoff, w, h, data,
-                               Element.DataType.SIGNED_16, data.length);
-    }
-
-    /**
-     * Copy from a rectangular region in this Allocation into an array. This
-     * variant is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} is neither a 32 bit integer nor a vector
-     * of 32 bit integers {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to copy in this Allocation
-     * @param yoff Y offset of the region to copy in this Allocation
-     * @param w Width of the region to copy
-     * @param h Height of the region to copy
-     * @param data Dest Array to be copied into
-     */
-    public void copy2DRangeTo(int xoff, int yoff, int w, int h, int[] data) {
-        validateIsInt32();
-        copy2DRangeToUnchecked(xoff, yoff, w, h, data,
-                               Element.DataType.SIGNED_32, data.length);
-    }
-
-    /**
-     * Copy from a rectangular region in this Allocation into an array. This
-     * variant is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector
-     * of 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
-     *
-     * <p> The size of the region is: w * h * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to copy in this Allocation
-     * @param yoff Y offset of the region to copy in this Allocation
-     * @param w Width of the region to copy
-     * @param h Height of the region to copy
-     * @param data Dest Array to be copied into
-     */
-    public void copy2DRangeTo(int xoff, int yoff, int w, int h, float[] data) {
-        validateIsFloat32();
-        copy2DRangeToUnchecked(xoff, yoff, w, h, data,
-                               Element.DataType.FLOAT_32, data.length);
-    }
-
-
-    /**
-     * Copy from a 3D region in this Allocation into an array. This method does
-     * not guarantee that the Allocation is compatible with the input buffer.
-     * The array is assumed to be tightly packed.
-     *
-     * The data type of the array is not required to be the same as
-     * the element data type.
-     */
-    /*
-    private void copy3DRangeToUnchecked(int xoff, int yoff, int zoff, int w, int h, int d,
-                                        Object array, Element.DataType dt, int arrayLen) {
-        mRS.validate();
-        validate3DRange(xoff, yoff, zoff, w, h, d);
-        final int dataSize = mType.mElement.getBytesSize() * w * h * d;
-        // AutoPadding for Vec3 Element
-        boolean usePadding = false;
-        int sizeBytes = arrayLen * dt.mSize;
-        if (mAutoPadding && (mType.getElement().getVectorSize() == 3)) {
-            if (dataSize / 4 * 3 > sizeBytes) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-            usePadding = true;
-            sizeBytes = dataSize;
-        } else {
-            if (dataSize > sizeBytes) {
-                throw new RSIllegalArgumentException("Array too small for allocation type.");
-            }
-        }
-        mRS.nAllocationRead3D(getIDSafe(), xoff, yoff, zoff, mSelectedLOD, w, h, d,
-                              array, sizeBytes, dt, mType.mElement.mType.mSize, usePadding);
-    }
-    */
-
-    /**
-     * @hide
-     * Copy from a 3D region in this Allocation into an array. This
-     * method is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} does not match the component type
-     * of the array passed in.
-     *
-     * <p> The size of the region is: w * h * d * {@link #getElement}.{@link
-     * Element#getBytesSize}.
-     *
-     * <p> If the Allocation does not have Vec3 Elements, then the size of the
-     * array in bytes must be at least the size of the region.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is disabled, then the size of the array in bytes must be at least the size
-     * of the region. The padding bytes for the cells must be part of the array.
-     *
-     * <p> If the Allocation has Vec3 Elements and {@link #setAutoPadding AutoPadding}
-     * is enabled, then the size of the array in bytes must be at least 3/4 the size
-     * of the region. The padding bytes for the cells must not be part of the array.
-     *
-     * @param xoff X offset of the region to copy in this Allocation
-     * @param yoff Y offset of the region to copy in this Allocation
-     * @param zoff Z offset of the region to copy in this Allocation
-     * @param w Width of the region to copy
-     * @param h Height of the region to copy
-     * @param d Depth of the region to copy
-     * @param array Dest Array to be copied into
-     */
-    /*
-    public void copy3DRangeTo(int xoff, int yoff, int zoff, int w, int h, int d, Object array) {
-        copy3DRangeToUnchecked(xoff, yoff, zoff, w, h, d, array,
-                                 validateObjectIsPrimitiveArray(array, true),
-                                 java.lang.reflect.Array.getLength(array));
-    }
-    */
-
-    // creation
-
-    static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
-    static {
-        mBitmapOptions.inScaled = false;
-    }
-
-    /**
-     * Creates a new Allocation with the given {@link
-     * android.support.v8.renderscript.Type}, mipmap flag, and usage flags.
-     *
-     * @param type RenderScript type describing data layout
-     * @param mips specifies desired mipmap behaviour for the
-     *             allocation
-     * @param usage bit field specifying how the Allocation is
-     *              utilized
-     */
-    static public Allocation createTyped(RenderScript rs, Type type, MipmapControl mips, int usage) {
-        rs.validate();
-        if (type.getID(rs) == 0) {
-            throw new RSInvalidStateException("Bad Type");
-        }
-
-        if(!rs.usingIO() && (usage & (USAGE_IO_INPUT | USAGE_IO_INPUT)) != 0) {
-            throw new RSRuntimeException("USAGE_IO not supported, Allocation creation failed.");
-        }
-
-        long id = rs.nAllocationCreateTyped(type.getID(rs), mips.mID, usage, 0);
-        if (id == 0) {
-            throw new RSRuntimeException("Allocation creation failed.");
-        }
-        return new Allocation(id, rs, type, usage);
-    }
-
-    /**
-     * Creates an Allocation with the size specified by the type and no mipmaps
-     * generated by default
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param type renderscript type describing data layout
-     * @param usage bit field specifying how the allocation is
-     *              utilized
-     *
-     * @return allocation
-     */
-    static public Allocation createTyped(RenderScript rs, Type type, int usage) {
-        return createTyped(rs, type, MipmapControl.MIPMAP_NONE, usage);
-    }
-
-    /**
-     * Creates an Allocation for use by scripts with a given {@link
-     * android.support.v8.renderscript.Type} and no mipmaps
-     *
-     * @param rs Context to which the Allocation will belong.
-     * @param type RenderScript Type describing data layout
-     *
-     * @return allocation
-     */
-    static public Allocation createTyped(RenderScript rs, Type type) {
-        return createTyped(rs, type, MipmapControl.MIPMAP_NONE, USAGE_SCRIPT);
-    }
-
-    /**
-     * Creates an Allocation with a specified number of given elements
-     *
-     * @param rs Context to which the Allocation will belong.
-     * @param e Element to use in the Allocation
-     * @param count the number of Elements in the Allocation
-     * @param usage bit field specifying how the Allocation is
-     *              utilized
-     *
-     * @return allocation
-     */
-    static public Allocation createSized(RenderScript rs, Element e,
-                                         int count, int usage) {
-        rs.validate();
-        Type.Builder b = new Type.Builder(rs, e);
-        b.setX(count);
-        Type t = b.create();
-
-        long id = rs.nAllocationCreateTyped(t.getID(rs), MipmapControl.MIPMAP_NONE.mID, usage, 0);
-        if (id == 0) {
-            throw new RSRuntimeException("Allocation creation failed.");
-        }
-        return new Allocation(id, rs, t, usage);
-    }
-
-    /**
-     * Creates an Allocation with a specified number of given elements
-     *
-     * @param rs Context to which the Allocation will belong.
-     * @param e Element to use in the Allocation
-     * @param count the number of Elements in the Allocation
-     *
-     * @return allocation
-     */
-    static public Allocation createSized(RenderScript rs, Element e, int count) {
-        return createSized(rs, e, count, USAGE_SCRIPT);
-    }
-
-    static Element elementFromBitmap(RenderScript rs, Bitmap b) {
-        final Bitmap.Config bc = b.getConfig();
-        if (bc == Bitmap.Config.ALPHA_8) {
-            return Element.A_8(rs);
-        }
-        if (bc == Bitmap.Config.ARGB_4444) {
-            return Element.RGBA_4444(rs);
-        }
-        if (bc == Bitmap.Config.ARGB_8888) {
-            return Element.RGBA_8888(rs);
-        }
-        if (bc == Bitmap.Config.RGB_565) {
-            return Element.RGB_565(rs);
-        }
-        throw new RSInvalidStateException("Bad bitmap type: " + bc);
-    }
-
-    static Type typeFromBitmap(RenderScript rs, Bitmap b,
-                                       MipmapControl mip) {
-        Element e = elementFromBitmap(rs, b);
-        Type.Builder tb = new Type.Builder(rs, e);
-        tb.setX(b.getWidth());
-        tb.setY(b.getHeight());
-        tb.setMipmaps(mip == MipmapControl.MIPMAP_FULL);
-        return tb.create();
-    }
-
-    /**
-     * Creates an Allocation from a {@link android.graphics.Bitmap}.
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param b Bitmap source for the allocation data
-     * @param mips specifies desired mipmap behaviour for the
-     *             allocation
-     * @param usage bit field specifying how the allocation is
-     *              utilized
-     *
-     * @return Allocation containing bitmap data
-     *
-     */
-    static public Allocation createFromBitmap(RenderScript rs, Bitmap b,
-                                              MipmapControl mips,
-                                              int usage) {
-        rs.validate();
-
-        // WAR undocumented color formats
-        if (b.getConfig() == null) {
-            if ((usage & USAGE_SHARED) != 0) {
-                throw new RSIllegalArgumentException("USAGE_SHARED cannot be used with a Bitmap that has a null config.");
-            }
-            Bitmap newBitmap = Bitmap.createBitmap(b.getWidth(), b.getHeight(), Bitmap.Config.ARGB_8888);
-            Canvas c = new Canvas(newBitmap);
-            c.drawBitmap(b, 0, 0, null);
-            return createFromBitmap(rs, newBitmap, mips, usage);
-        }
-
-        Type t = typeFromBitmap(rs, b, mips);
-
-        // enable optimized bitmap path only with no mipmap and script-only usage
-        if (mips == MipmapControl.MIPMAP_NONE &&
-            t.getElement().isCompatible(Element.RGBA_8888(rs)) &&
-            usage == (USAGE_SHARED | USAGE_SCRIPT | USAGE_GRAPHICS_TEXTURE)) {
-            long id = rs.nAllocationCreateBitmapBackedAllocation(t.getID(rs), mips.mID, b, usage);
-            if (id == 0) {
-                throw new RSRuntimeException("Load failed.");
-            }
-
-            // keep a reference to the Bitmap around to prevent GC
-            Allocation alloc = new Allocation(id, rs, t, usage);
-            alloc.setBitmap(b);
-            return alloc;
-        }
-
-
-        long id = rs.nAllocationCreateFromBitmap(t.getID(rs), mips.mID, b, usage);
-        if (id == 0) {
-            throw new RSRuntimeException("Load failed.");
-        }
-        return new Allocation(id, rs, t, usage);
-    }
-
-    /**
-     * Associate a {@link android.view.Surface} with this Allocation. This
-     * operation is only valid for Allocations with {@link #USAGE_IO_OUTPUT}.
-     *
-     * @param sur Surface to associate with allocation
-     */
-    public void setSurface(Surface sur) {
-        mRS.validate();
-        if ((mUsage & USAGE_IO_OUTPUT) == 0) {
-            throw new RSInvalidStateException("Allocation is not USAGE_IO_OUTPUT.");
-        }
-
-        mRS.nAllocationSetSurface(getID(mRS), sur);
-    }
-
-    /**
-     * Creates an Allocation from a {@link android.graphics.Bitmap}.
-     *
-     * <p>This Allocation will be created with {@link #USAGE_SHARED}, and
-     * {@link #USAGE_SCRIPT}.</p>
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param b bitmap source for the allocation data
-     *
-     * @return Allocation containing bitmap data
-     *
-     */
-    static public Allocation createFromBitmap(RenderScript rs, Bitmap b) {
-        return createFromBitmap(rs, b, MipmapControl.MIPMAP_NONE,
-                                USAGE_SHARED | USAGE_SCRIPT | USAGE_GRAPHICS_TEXTURE);
-    }
-
-    /**
-     * Creates a cubemap Allocation from a {@link android.graphics.Bitmap}
-     * containing the horizontal list of cube faces. Each face must be a square,
-     * have the same size as all other faces, and have a width that is a power
-     * of 2.
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param b Bitmap with cubemap faces layed out in the following
-     *          format: right, left, top, bottom, front, back
-     * @param mips specifies desired mipmap behaviour for the cubemap
-     * @param usage bit field specifying how the cubemap is utilized
-     *
-     * @return allocation containing cubemap data
-     *
-     */
-    static public Allocation createCubemapFromBitmap(RenderScript rs, Bitmap b,
-                                                     MipmapControl mips,
-                                                     int usage) {
-        rs.validate();
-
-        int height = b.getHeight();
-        int width = b.getWidth();
-
-        if (width % 6 != 0) {
-            throw new RSIllegalArgumentException("Cubemap height must be multiple of 6");
-        }
-        if (width / 6 != height) {
-            throw new RSIllegalArgumentException("Only square cube map faces supported");
-        }
-        boolean isPow2 = (height & (height - 1)) == 0;
-        if (!isPow2) {
-            throw new RSIllegalArgumentException("Only power of 2 cube faces supported");
-        }
-
-        Element e = elementFromBitmap(rs, b);
-        Type.Builder tb = new Type.Builder(rs, e);
-        tb.setX(height);
-        tb.setY(height);
-        tb.setFaces(true);
-        tb.setMipmaps(mips == MipmapControl.MIPMAP_FULL);
-        Type t = tb.create();
-
-        long id = rs.nAllocationCubeCreateFromBitmap(t.getID(rs), mips.mID, b, usage);
-        if(id == 0) {
-            throw new RSRuntimeException("Load failed for bitmap " + b + " element " + e);
-        }
-        return new Allocation(id, rs, t, usage);
-    }
-
-    /**
-     * Creates a non-mipmapped cubemap Allocation for use as a graphics texture
-     * from a {@link android.graphics.Bitmap} containing the horizontal list of
-     * cube faces. Each face must be a square, have the same size as all other
-     * faces, and have a width that is a power of 2.
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param b bitmap with cubemap faces layed out in the following
-     *          format: right, left, top, bottom, front, back
-     *
-     * @return allocation containing cubemap data
-     *
-     */
-    static public Allocation createCubemapFromBitmap(RenderScript rs,
-                                                     Bitmap b) {
-        return createCubemapFromBitmap(rs, b, MipmapControl.MIPMAP_NONE,
-                                       USAGE_GRAPHICS_TEXTURE);
-    }
-
-    /**
-     * Creates a cubemap Allocation from 6 {@link android.graphics.Bitmap}
-     * objects containing the cube faces. Each face must be a square, have the
-     * same size as all other faces, and have a width that is a power of 2.
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param xpos cubemap face in the positive x direction
-     * @param xneg cubemap face in the negative x direction
-     * @param ypos cubemap face in the positive y direction
-     * @param yneg cubemap face in the negative y direction
-     * @param zpos cubemap face in the positive z direction
-     * @param zneg cubemap face in the negative z direction
-     * @param mips specifies desired mipmap behaviour for the cubemap
-     * @param usage bit field specifying how the cubemap is utilized
-     *
-     * @return allocation containing cubemap data
-     *
-     */
-    static public Allocation createCubemapFromCubeFaces(RenderScript rs,
-                                                        Bitmap xpos,
-                                                        Bitmap xneg,
-                                                        Bitmap ypos,
-                                                        Bitmap yneg,
-                                                        Bitmap zpos,
-                                                        Bitmap zneg,
-                                                        MipmapControl mips,
-                                                        int usage) {
-        /*
-        int height = xpos.getHeight();
-        if (xpos.getWidth() != height ||
-            xneg.getWidth() != height || xneg.getHeight() != height ||
-            ypos.getWidth() != height || ypos.getHeight() != height ||
-            yneg.getWidth() != height || yneg.getHeight() != height ||
-            zpos.getWidth() != height || zpos.getHeight() != height ||
-            zneg.getWidth() != height || zneg.getHeight() != height) {
-            throw new RSIllegalArgumentException("Only square cube map faces supported");
-        }
-        boolean isPow2 = (height & (height - 1)) == 0;
-        if (!isPow2) {
-            throw new RSIllegalArgumentException("Only power of 2 cube faces supported");
-        }
-
-        Element e = elementFromBitmap(rs, xpos);
-        Type.Builder tb = new Type.Builder(rs, e);
-        tb.setX(height);
-        tb.setY(height);
-        tb.setFaces(true);
-        tb.setMipmaps(mips == MipmapControl.MIPMAP_FULL);
-        Type t = tb.create();
-        Allocation cubemap = Allocation.createTyped(rs, t, mips, usage);
-
-        AllocationAdapter adapter = AllocationAdapter.create2D(rs, cubemap);
-        adapter.setFace(Type.CubemapFace.POSITIVE_X);
-        adapter.copyFrom(xpos);
-        adapter.setFace(Type.CubemapFace.NEGATIVE_X);
-        adapter.copyFrom(xneg);
-        adapter.setFace(Type.CubemapFace.POSITIVE_Y);
-        adapter.copyFrom(ypos);
-        adapter.setFace(Type.CubemapFace.NEGATIVE_Y);
-        adapter.copyFrom(yneg);
-        adapter.setFace(Type.CubemapFace.POSITIVE_Z);
-        adapter.copyFrom(zpos);
-        adapter.setFace(Type.CubemapFace.NEGATIVE_Z);
-        adapter.copyFrom(zneg);
-
-        return cubemap;
-        */
-        return null;
-    }
-
-    /**
-     * Creates a non-mipmapped cubemap Allocation for use as a sampler input
-     * from 6 {@link android.graphics.Bitmap} objects containing the cube
-     * faces. Each face must be a square, have the same size as all other faces,
-     * and have a width that is a power of 2.
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param xpos cubemap face in the positive x direction
-     * @param xneg cubemap face in the negative x direction
-     * @param ypos cubemap face in the positive y direction
-     * @param yneg cubemap face in the negative y direction
-     * @param zpos cubemap face in the positive z direction
-     * @param zneg cubemap face in the negative z direction
-     *
-     * @return allocation containing cubemap data
-     *
-     */
-    static public Allocation createCubemapFromCubeFaces(RenderScript rs,
-                                                        Bitmap xpos,
-                                                        Bitmap xneg,
-                                                        Bitmap ypos,
-                                                        Bitmap yneg,
-                                                        Bitmap zpos,
-                                                        Bitmap zneg) {
-        return createCubemapFromCubeFaces(rs, xpos, xneg, ypos, yneg,
-                                          zpos, zneg, MipmapControl.MIPMAP_NONE,
-                                          USAGE_GRAPHICS_TEXTURE);
-    }
-
-    /**
-     * Creates an Allocation from the Bitmap referenced
-     * by resource ID.
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param res application resources
-     * @param id resource id to load the data from
-     * @param mips specifies desired mipmap behaviour for the
-     *             allocation
-     * @param usage bit field specifying how the allocation is
-     *              utilized
-     *
-     * @return Allocation containing resource data
-     *
-     */
-    static public Allocation createFromBitmapResource(RenderScript rs,
-                                                      Resources res,
-                                                      int id,
-                                                      MipmapControl mips,
-                                                      int usage) {
-
-        rs.validate();
-        if ((usage & (USAGE_SHARED | USAGE_IO_INPUT | USAGE_IO_OUTPUT)) != 0) {
-            throw new RSIllegalArgumentException("Unsupported usage specified.");
-        }
-        Bitmap b = BitmapFactory.decodeResource(res, id);
-        Allocation alloc = createFromBitmap(rs, b, mips, usage);
-        b.recycle();
-        return alloc;
-    }
-
-    /**
-     * Creates a non-mipmapped Allocation to use as a graphics texture from the
-     * {@link android.graphics.Bitmap} referenced by resource ID.
-     *
-     * <p>This allocation will be created with {@link #USAGE_SCRIPT} and
-     * {@link #USAGE_GRAPHICS_TEXTURE}.</p>
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param res application resources
-     * @param id resource id to load the data from
-     *
-     * @return Allocation containing resource data
-     *
-     */
-    static public Allocation createFromBitmapResource(RenderScript rs,
-                                                      Resources res,
-                                                      int id) {
-        return createFromBitmapResource(rs, res, id,
-                                        MipmapControl.MIPMAP_NONE,
-                                        USAGE_SCRIPT | USAGE_GRAPHICS_TEXTURE);
-    }
-
-    /**
-     * Creates an Allocation containing string data encoded in UTF-8 format.
-     *
-     * @param rs Context to which the allocation will belong.
-     * @param str string to create the allocation from
-     * @param usage bit field specifying how the allocaiton is
-     *              utilized
-     *
-     */
-    static public Allocation createFromString(RenderScript rs,
-                                              String str,
-                                              int usage) {
-        rs.validate();
-        byte[] allocArray = null;
-        try {
-            allocArray = str.getBytes("UTF-8");
-            Allocation alloc = Allocation.createSized(rs, Element.U8(rs), allocArray.length, usage);
-            alloc.copyFrom(allocArray);
-            return alloc;
-        }
-        catch (Exception e) {
-            throw new RSRuntimeException("Could not convert string to utf-8.");
-        }
-    }
-
-    /**
-     * Frees any native resources associated with this object.  The
-     * primary use is to force immediate cleanup of resources when it is
-     * believed the GC will not respond quickly enough.
-     * For USAGE_IO_OUTPUT, destroy() implies setSurface(null).
-     */
-    @Override
-    public void destroy() {
-        if (mIncCompatAllocation != 0) {
-            boolean shouldDestroy = false;
-            synchronized(this) {
-                if (!mIncAllocDestroyed) {
-                    shouldDestroy = true;
-                    mIncAllocDestroyed = true;
-                }
-            }
-
-            if (shouldDestroy) {
-                // must include nObjDestroy in the critical section
-                ReentrantReadWriteLock.ReadLock rlock = mRS.mRWLock.readLock();
-                rlock.lock();
-                if(mRS.isAlive()) {
-                    mRS.nIncObjDestroy(mIncCompatAllocation);
-                }
-                rlock.unlock();
-                mIncCompatAllocation = 0;
-            }
-        }
-        if ((mUsage & (USAGE_IO_INPUT | USAGE_IO_OUTPUT)) != 0) {
-            setSurface(null);
-        }
-        super.destroy();
-    }
-
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/BaseObj.java b/v8/renderscript/java/src/android/support/v8/renderscript/BaseObj.java
deleted file mode 100644
index bb49600..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/BaseObj.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.Log;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-/**
- * BaseObj is the base class for all RenderScript objects owned by a RS context.
- * It is responsible for lifetime management and resource tracking. This class
- * should not be used by a user application.
- *
- **/
-public class BaseObj {
-    BaseObj(long id, RenderScript rs) {
-        rs.validate();
-        mRS = rs;
-        mID = id;
-        mDestroyed = false;
-    }
-
-    void setID(long id) {
-        if (mID != 0) {
-            throw new RSRuntimeException("Internal Error, reset of object ID.");
-        }
-        mID = id;
-    }
-
-    /**
-     * Lookup the native object ID for this object.  Primarily used by the
-     * generated reflected code.
-     *
-     * @param rs Context to verify against internal context for
-     *           match.
-     *
-     * @return long
-     */
-    long getID(RenderScript rs) {
-        mRS.validate();
-        if (mDestroyed) {
-            throw new RSInvalidStateException("using a destroyed object.");
-        }
-        if (mID == 0) {
-            throw new RSRuntimeException("Internal error: Object id 0.");
-        }
-        if ((rs != null) && (rs != mRS)) {
-            throw new RSInvalidStateException("using object with mismatched context.");
-        }
-        return mID;
-    }
-
-    android.renderscript.BaseObj getNObj() {
-        return null;
-    }
-
-    void checkValid() {
-        if ((mID == 0) && (getNObj() == null)) {
-            throw new RSIllegalArgumentException("Invalid object.");
-        }
-    }
-
-    private long mID;
-    private boolean mDestroyed;
-    RenderScript mRS;
-
-    private void helpDestroy() {
-        boolean shouldDestroy = false;
-        synchronized(this) {
-            if (!mDestroyed) {
-                shouldDestroy = true;
-                mDestroyed = true;
-            }
-        }
-
-        if (shouldDestroy) {
-            // must include nObjDestroy in the critical section
-            ReentrantReadWriteLock.ReadLock rlock = mRS.mRWLock.readLock();
-            rlock.lock();
-            if(mRS.isAlive()) {
-                mRS.nObjDestroy(mID);
-            }
-            rlock.unlock();
-            mRS = null;
-            mID = 0;
-        }
-    }
-
-
-    protected void finalize() throws Throwable {
-        helpDestroy();
-        super.finalize();
-    }
-
-    /**
-     * Frees any native resources associated with this object.  The
-     * primary use is to force immediate cleanup of resources when it is
-     * believed the GC will not respond quickly enough.
-     */
-    public void destroy() {
-        if(mDestroyed) {
-            throw new RSInvalidStateException("Object already destroyed.");
-        }
-        helpDestroy();
-    }
-
-    /**
-     * Calculates the hash code value for a BaseObj.
-     *
-     * @return int
-     */
-    @Override
-    public int hashCode() {
-        return (int)((mID & 0xfffffff) ^ (mID >> 32));
-    }
-
-    /**
-     * Compare the current BaseObj with another BaseObj for equality.
-     *
-     * @param obj The object to check equality with.
-     *
-     * @return boolean
-     */
-    @Override
-    public boolean equals(Object obj) {
-        // Early-out check to see if both BaseObjs are actually the same
-        if (this == obj)
-            return true;
-
-        if (obj == null) {
-            return false;
-        }
-
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-
-        BaseObj b = (BaseObj) obj;
-        return mID == b.mID;
-    }
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Byte2.java b/v8/renderscript/java/src/android/support/v8/renderscript/Byte2.java
deleted file mode 100644
index 2371077..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Byte2.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript byte2 type back to the Android system.
- *
- **/
-public class Byte2 {
-    public Byte2() {
-    }
-
-    public Byte2(byte initX, byte initY) {
-        x = initX;
-        y = initY;
-    }
-
-    public byte x;
-    public byte y;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Byte3.java b/v8/renderscript/java/src/android/support/v8/renderscript/Byte3.java
deleted file mode 100644
index 4ed6af6..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Byte3.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript byte3 type back to the Android system.
- *
- **/
-public class Byte3 {
-    public Byte3() {
-    }
-
-    public Byte3(byte initX, byte initY, byte initZ) {
-        x = initX;
-        y = initY;
-        z = initZ;
-    }
-
-    public byte x;
-    public byte y;
-    public byte z;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Byte4.java b/v8/renderscript/java/src/android/support/v8/renderscript/Byte4.java
deleted file mode 100644
index 715a718..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Byte4.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript byte4 type back to the Android system.
- *
- **/
-public class Byte4 {
-    public Byte4() {
-    }
-
-    public Byte4(byte initX, byte initY, byte initZ, byte initW) {
-        x = initX;
-        y = initY;
-        z = initZ;
-        w = initW;
-    }
-
-    public byte x;
-    public byte y;
-    public byte z;
-    public byte w;
-}
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Double2.java b/v8/renderscript/java/src/android/support/v8/renderscript/Double2.java
deleted file mode 100644
index cd73363..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Double2.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript double2 type back
- * to the Android system.
- *
- **/
-public class Double2 {
-    public Double2() {
-    }
-
-    public Double2(double initX, double initY) {
-        x = initX;
-        y = initY;
-    }
-
-    public double x;
-    public double y;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Double3.java b/v8/renderscript/java/src/android/support/v8/renderscript/Double3.java
deleted file mode 100644
index 38a46a6..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Double3.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript double3 type back
- * to the Android system.
- *
- **/
-public class Double3 {
-    public Double3() {
-    }
-
-    public Double3(double initX, double initY, double initZ) {
-        x = initX;
-        y = initY;
-        z = initZ;
-    }
-
-    public double x;
-    public double y;
-    public double z;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Double4.java b/v8/renderscript/java/src/android/support/v8/renderscript/Double4.java
deleted file mode 100644
index 6de0fa8..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Double4.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript double4 type back
- * to the Android system.
- *
- **/
-public class Double4 {
-    public Double4() {
-    }
-
-    public Double4(double initX, double initY, double initZ, double initW) {
-        x = initX;
-        y = initY;
-        z = initZ;
-        w = initW;
-    }
-
-    public double x;
-    public double y;
-    public double z;
-    public double w;
-}
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Element.java b/v8/renderscript/java/src/android/support/v8/renderscript/Element.java
deleted file mode 100644
index 135d854..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Element.java
+++ /dev/null
@@ -1,1020 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.reflect.Field;
-
-import android.util.Log;
-
-/**
- * <p>An Element represents one item within an {@link
- * android.support.v8.renderscript.Allocation}.  An Element is roughly
- * equivalent to a C type in a RenderScript kernel. Elements may be basic or
- * complex. Some basic elements are</p> <ul> <li>A single float value
- * (equivalent to a float in a kernel)</li> <li>A four-element float vector
- * (equivalent to a float4 in a kernel)</li> <li>An unsigned 32-bit integer
- * (equivalent to an unsigned int in a kernel)</li> <li>A single signed 8-bit
- * integer (equivalent to a char in a kernel)</li> </ul> <p>A complex element is
- * roughly equivalent to a C struct and contains a number of basic or complex
- * Elements. From Java code, a complex element contains a list of sub-elements
- * and names that represents a particular data structure. Structs used in RS
- * scripts are available to Java code by using the
- * {@code ScriptField_structname} class that is reflected from a particular
- * script.</p>
- *
- * <p>Basic Elements are comprised of a {@link
- * android.support.v8.renderscript.Element.DataType} and a {@link
- * android.support.v8.renderscript.Element.DataKind}. The DataType encodes C
- * type information of an Element, while the DataKind encodes how that Element
- * should be interpreted by a {@link android.support.v8.renderscript.Sampler}.
- * Note that {@link android.support.v8.renderscript.Allocation} objects with
- * DataKind {@link android.support.v8.renderscript.Element.DataKind#USER} cannot
- * be used as input for a {@link android.support.v8.renderscript.Sampler}. In
- * general, {@link android.support.v8.renderscript.Allocation} objects that are
- * intended for use with a {@link android.support.v8.renderscript.Sampler}
- * should use bitmap-derived Elements such as
- * {@link android.support.v8.renderscript.Element#RGBA_8888} or {@link
- * android.support.v8.renderscript#Element.A_8}.</p>
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses RenderScript,
- * read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a>
- * developer guide.</p>
- * </div>
- **/
-public class Element extends BaseObj {
-    int mSize;
-    Element[] mElements;
-    String[] mElementNames;
-    int[] mArraySizes;
-    int[] mOffsetInBytes;
-    int[] mVisibleElementMap;
-
-    DataType mType;
-    DataKind mKind;
-    boolean mNormalized;
-    int mVectorSize;
-
-    private void updateVisibleSubElements() {
-        if (mElements == null) {
-            return;
-        }
-
-        int noPaddingFieldCount = 0;
-        int fieldCount = mElementNames.length;
-        // Find out how many elements are not padding
-        for (int ct = 0; ct < fieldCount; ct ++) {
-            if (mElementNames[ct].charAt(0) != '#') {
-                noPaddingFieldCount ++;
-            }
-        }
-        mVisibleElementMap = new int[noPaddingFieldCount];
-
-        // Make a map that points us at non-padding elements
-        for (int ct = 0, ctNoPadding = 0; ct < fieldCount; ct ++) {
-            if (mElementNames[ct].charAt(0) != '#') {
-                mVisibleElementMap[ctNoPadding ++] = ct;
-            }
-        }
-    }
-
-    /**
-    * @return element size in bytes
-    */
-    public int getBytesSize() {
-        return mSize;
-    }
-
-    /**
-    * Returns the number of vector components. 2 for float2, 4 for
-    * float4, etc.
-    * @return element vector size
-    */
-    public int getVectorSize() {
-        return mVectorSize;
-    }
-
-
-    /**
-     * DataType represents the basic type information for a basic element.  The
-     * naming convention follows.  For numeric types it is FLOAT,
-     * SIGNED, or UNSIGNED followed by the _BITS where BITS is the
-     * size of the data.  BOOLEAN is a true / false (1,0)
-     * represented in an 8 bit container.  The UNSIGNED variants
-     * with multiple bit definitions are for packed graphical data
-     * formats and represent vectors with per vector member sizes
-     * which are treated as a single unit for packing and alignment
-     * purposes.
-     *
-     * MATRIX the three matrix types contain FLOAT_32 elements and are treated
-     * as 32 bits for alignment purposes.
-     *
-     * RS_* objects.  32 bit opaque handles.
-     */
-    public enum DataType {
-        NONE (0, 0),
-        //FLOAT_16 (1, 2),
-        FLOAT_32 (2, 4),
-        FLOAT_64 (3, 8),
-        SIGNED_8 (4, 1),
-        SIGNED_16 (5, 2),
-        SIGNED_32 (6, 4),
-        SIGNED_64 (7, 8),
-        UNSIGNED_8 (8, 1),
-        UNSIGNED_16 (9, 2),
-        UNSIGNED_32 (10, 4),
-        UNSIGNED_64 (11, 8),
-
-        BOOLEAN(12, 1),
-
-        UNSIGNED_5_6_5 (13, 2),
-        UNSIGNED_5_5_5_1 (14, 2),
-        UNSIGNED_4_4_4_4 (15, 2),
-
-        MATRIX_4X4 (16, 64),
-        MATRIX_3X3 (17, 36),
-        MATRIX_2X2 (18, 16),
-
-        RS_ELEMENT (1000),
-        RS_TYPE (1001),
-        RS_ALLOCATION (1002),
-        RS_SAMPLER (1003),
-        RS_SCRIPT (1004);
-
-        int mID;
-        int mSize;
-        DataType(int id, int size) {
-            mID = id;
-            mSize = size;
-        }
-
-        DataType(int id) {
-            mID = id;
-            mSize = 4;
-            if (RenderScript.sPointerSize == 8) {
-                mSize = 32;
-            }
-        }
-    }
-
-    /**
-     * The special interpretation of the data if required.  This is primarly
-     * useful for graphical data.  USER indicates no special interpretation is
-     * expected.  PIXEL is used in conjunction with the standard data types for
-     * representing texture formats.
-     */
-    public enum DataKind {
-        USER (0),
-
-        PIXEL_L (7),
-        PIXEL_A (8),
-        PIXEL_LA (9),
-        PIXEL_RGB (10),
-        PIXEL_RGBA (11),
-        PIXEL_DEPTH (12),
-        PIXEL_YUV(13);
-
-        int mID;
-        DataKind(int id) {
-            mID = id;
-        }
-    }
-
-    /**
-     * Return if a element is too complex for use as a data source for a Mesh or
-     * a Program.
-     *
-     * @return boolean
-     */
-    public boolean isComplex() {
-        if (mElements == null) {
-            return false;
-        }
-        for (int ct=0; ct < mElements.length; ct++) {
-            if (mElements[ct].mElements != null) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-    * Elements could be simple, such as an int or a float, or a
-    * structure with multiple sub elements, such as a collection of
-    * floats, float2, float4. This function returns zero for simple
-    * elements or the number of sub-elements otherwise.
-    * @return number of sub-elements in this element
-    */
-    public int getSubElementCount() {
-        if (mVisibleElementMap == null) {
-            return 0;
-        }
-        return mVisibleElementMap.length;
-    }
-
-    /**
-    * For complex elements, this function will return the
-    * sub-element at index
-    * @param index index of the sub-element to return
-    * @return sub-element in this element at given index
-    */
-    public Element getSubElement(int index) {
-        if (mVisibleElementMap == null) {
-            throw new RSIllegalArgumentException("Element contains no sub-elements");
-        }
-        if (index < 0 || index >= mVisibleElementMap.length) {
-            throw new RSIllegalArgumentException("Illegal sub-element index");
-        }
-        return mElements[mVisibleElementMap[index]];
-    }
-
-    /**
-    * For complex elements, this function will return the
-    * sub-element name at index
-    * @param index index of the sub-element
-    * @return sub-element in this element at given index
-    */
-    public String getSubElementName(int index) {
-        if (mVisibleElementMap == null) {
-            throw new RSIllegalArgumentException("Element contains no sub-elements");
-        }
-        if (index < 0 || index >= mVisibleElementMap.length) {
-            throw new RSIllegalArgumentException("Illegal sub-element index");
-        }
-        return mElementNames[mVisibleElementMap[index]];
-    }
-
-    /**
-    * For complex elements, some sub-elements could be statically
-    * sized arrays. This function will return the array size for
-    * sub-element at index
-    * @param index index of the sub-element
-    * @return array size of sub-element in this element at given index
-    */
-    public int getSubElementArraySize(int index) {
-        if (mVisibleElementMap == null) {
-            throw new RSIllegalArgumentException("Element contains no sub-elements");
-        }
-        if (index < 0 || index >= mVisibleElementMap.length) {
-            throw new RSIllegalArgumentException("Illegal sub-element index");
-        }
-        return mArraySizes[mVisibleElementMap[index]];
-    }
-
-    /**
-    * This function specifies the location of a sub-element within
-    * the element
-    * @param index index of the sub-element
-    * @return offset in bytes of sub-element in this element at given index
-    */
-    public int getSubElementOffsetBytes(int index) {
-        if (mVisibleElementMap == null) {
-            throw new RSIllegalArgumentException("Element contains no sub-elements");
-        }
-        if (index < 0 || index >= mVisibleElementMap.length) {
-            throw new RSIllegalArgumentException("Illegal sub-element index");
-        }
-        return mOffsetInBytes[mVisibleElementMap[index]];
-    }
-
-    /**
-    * @return element data type
-    */
-    public DataType getDataType() {
-        return mType;
-    }
-
-    /**
-    * @return element data kind
-    */
-    public DataKind getDataKind() {
-        return mKind;
-    }
-
-    /**
-     * Utility function for returning an Element containing a single Boolean.
-     *
-     * @param rs Context to which the element will belong.
-     *
-     * @return Element
-     */
-    public static Element BOOLEAN(RenderScript rs) {
-        if(rs.mElement_BOOLEAN == null) {
-            rs.mElement_BOOLEAN = createUser(rs, DataType.BOOLEAN);
-        }
-        return rs.mElement_BOOLEAN;
-    }
-
-    /**
-     * Utility function for returning an Element containing a single UNSIGNED_8.
-     *
-     * @param rs Context to which the element will belong.
-     *
-     * @return Element
-     */
-    public static Element U8(RenderScript rs) {
-        if(rs.mElement_U8 == null) {
-            rs.mElement_U8 = createUser(rs, DataType.UNSIGNED_8);
-        }
-        return rs.mElement_U8;
-    }
-
-    /**
-     * Utility function for returning an Element containing a single SIGNED_8.
-     *
-     * @param rs Context to which the element will belong.
-     *
-     * @return Element
-     */
-    public static Element I8(RenderScript rs) {
-        if(rs.mElement_I8 == null) {
-            rs.mElement_I8 = createUser(rs, DataType.SIGNED_8);
-        }
-        return rs.mElement_I8;
-    }
-
-    public static Element U16(RenderScript rs) {
-        if(rs.mElement_U16 == null) {
-            rs.mElement_U16 = createUser(rs, DataType.UNSIGNED_16);
-        }
-        return rs.mElement_U16;
-    }
-
-    public static Element I16(RenderScript rs) {
-        if(rs.mElement_I16 == null) {
-            rs.mElement_I16 = createUser(rs, DataType.SIGNED_16);
-        }
-        return rs.mElement_I16;
-    }
-
-    public static Element U32(RenderScript rs) {
-        if(rs.mElement_U32 == null) {
-            rs.mElement_U32 = createUser(rs, DataType.UNSIGNED_32);
-        }
-        return rs.mElement_U32;
-    }
-
-    public static Element I32(RenderScript rs) {
-        if(rs.mElement_I32 == null) {
-            rs.mElement_I32 = createUser(rs, DataType.SIGNED_32);
-        }
-        return rs.mElement_I32;
-    }
-
-    public static Element U64(RenderScript rs) {
-        if(rs.mElement_U64 == null) {
-            rs.mElement_U64 = createUser(rs, DataType.UNSIGNED_64);
-        }
-        return rs.mElement_U64;
-    }
-
-    public static Element I64(RenderScript rs) {
-        if(rs.mElement_I64 == null) {
-            rs.mElement_I64 = createUser(rs, DataType.SIGNED_64);
-        }
-        return rs.mElement_I64;
-    }
-
-    public static Element F32(RenderScript rs) {
-        if(rs.mElement_F32 == null) {
-            rs.mElement_F32 = createUser(rs, DataType.FLOAT_32);
-        }
-        return rs.mElement_F32;
-    }
-
-    public static Element F64(RenderScript rs) {
-        if(rs.mElement_F64 == null) {
-            rs.mElement_F64 = createUser(rs, DataType.FLOAT_64);
-        }
-        return rs.mElement_F64;
-    }
-
-    public static Element ELEMENT(RenderScript rs) {
-        if(rs.mElement_ELEMENT == null) {
-            rs.mElement_ELEMENT = createUser(rs, DataType.RS_ELEMENT);
-        }
-        return rs.mElement_ELEMENT;
-    }
-
-    public static Element TYPE(RenderScript rs) {
-        if(rs.mElement_TYPE == null) {
-            rs.mElement_TYPE = createUser(rs, DataType.RS_TYPE);
-        }
-        return rs.mElement_TYPE;
-    }
-
-    public static Element ALLOCATION(RenderScript rs) {
-        if(rs.mElement_ALLOCATION == null) {
-            rs.mElement_ALLOCATION = createUser(rs, DataType.RS_ALLOCATION);
-        }
-        return rs.mElement_ALLOCATION;
-    }
-
-    public static Element SAMPLER(RenderScript rs) {
-        if(rs.mElement_SAMPLER == null) {
-            rs.mElement_SAMPLER = createUser(rs, DataType.RS_SAMPLER);
-        }
-        return rs.mElement_SAMPLER;
-    }
-
-    public static Element SCRIPT(RenderScript rs) {
-        if(rs.mElement_SCRIPT == null) {
-            rs.mElement_SCRIPT = createUser(rs, DataType.RS_SCRIPT);
-        }
-        return rs.mElement_SCRIPT;
-    }
-
-
-    public static Element A_8(RenderScript rs) {
-        if(rs.mElement_A_8 == null) {
-            rs.mElement_A_8 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_A);
-        }
-        return rs.mElement_A_8;
-    }
-
-    public static Element RGB_565(RenderScript rs) {
-        if(rs.mElement_RGB_565 == null) {
-            rs.mElement_RGB_565 = createPixel(rs, DataType.UNSIGNED_5_6_5, DataKind.PIXEL_RGB);
-        }
-        return rs.mElement_RGB_565;
-    }
-
-    public static Element RGB_888(RenderScript rs) {
-        if(rs.mElement_RGB_888 == null) {
-            rs.mElement_RGB_888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGB);
-        }
-        return rs.mElement_RGB_888;
-    }
-
-    public static Element RGBA_5551(RenderScript rs) {
-        if(rs.mElement_RGBA_5551 == null) {
-            rs.mElement_RGBA_5551 = createPixel(rs, DataType.UNSIGNED_5_5_5_1, DataKind.PIXEL_RGBA);
-        }
-        return rs.mElement_RGBA_5551;
-    }
-
-    public static Element RGBA_4444(RenderScript rs) {
-        if(rs.mElement_RGBA_4444 == null) {
-            rs.mElement_RGBA_4444 = createPixel(rs, DataType.UNSIGNED_4_4_4_4, DataKind.PIXEL_RGBA);
-        }
-        return rs.mElement_RGBA_4444;
-    }
-
-    public static Element RGBA_8888(RenderScript rs) {
-        if(rs.mElement_RGBA_8888 == null) {
-            rs.mElement_RGBA_8888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGBA);
-        }
-        return rs.mElement_RGBA_8888;
-    }
-
-    public static Element F32_2(RenderScript rs) {
-        if(rs.mElement_FLOAT_2 == null) {
-            rs.mElement_FLOAT_2 = createVector(rs, DataType.FLOAT_32, 2);
-        }
-        return rs.mElement_FLOAT_2;
-    }
-
-    public static Element F32_3(RenderScript rs) {
-        if(rs.mElement_FLOAT_3 == null) {
-            rs.mElement_FLOAT_3 = createVector(rs, DataType.FLOAT_32, 3);
-        }
-        return rs.mElement_FLOAT_3;
-    }
-
-    public static Element F32_4(RenderScript rs) {
-        if(rs.mElement_FLOAT_4 == null) {
-            rs.mElement_FLOAT_4 = createVector(rs, DataType.FLOAT_32, 4);
-        }
-        return rs.mElement_FLOAT_4;
-    }
-
-    public static Element F64_2(RenderScript rs) {
-        if(rs.mElement_DOUBLE_2 == null) {
-            rs.mElement_DOUBLE_2 = createVector(rs, DataType.FLOAT_64, 2);
-        }
-        return rs.mElement_DOUBLE_2;
-    }
-
-    public static Element F64_3(RenderScript rs) {
-        if(rs.mElement_DOUBLE_3 == null) {
-            rs.mElement_DOUBLE_3 = createVector(rs, DataType.FLOAT_64, 3);
-        }
-        return rs.mElement_DOUBLE_3;
-    }
-
-    public static Element F64_4(RenderScript rs) {
-        if(rs.mElement_DOUBLE_4 == null) {
-            rs.mElement_DOUBLE_4 = createVector(rs, DataType.FLOAT_64, 4);
-        }
-        return rs.mElement_DOUBLE_4;
-    }
-
-    public static Element U8_2(RenderScript rs) {
-        if(rs.mElement_UCHAR_2 == null) {
-            rs.mElement_UCHAR_2 = createVector(rs, DataType.UNSIGNED_8, 2);
-        }
-        return rs.mElement_UCHAR_2;
-    }
-
-    public static Element U8_3(RenderScript rs) {
-        if(rs.mElement_UCHAR_3 == null) {
-            rs.mElement_UCHAR_3 = createVector(rs, DataType.UNSIGNED_8, 3);
-        }
-        return rs.mElement_UCHAR_3;
-    }
-
-    public static Element U8_4(RenderScript rs) {
-        if(rs.mElement_UCHAR_4 == null) {
-            rs.mElement_UCHAR_4 = createVector(rs, DataType.UNSIGNED_8, 4);
-        }
-        return rs.mElement_UCHAR_4;
-    }
-
-    public static Element I8_2(RenderScript rs) {
-        if(rs.mElement_CHAR_2 == null) {
-            rs.mElement_CHAR_2 = createVector(rs, DataType.SIGNED_8, 2);
-        }
-        return rs.mElement_CHAR_2;
-    }
-
-    public static Element I8_3(RenderScript rs) {
-        if(rs.mElement_CHAR_3 == null) {
-            rs.mElement_CHAR_3 = createVector(rs, DataType.SIGNED_8, 3);
-        }
-        return rs.mElement_CHAR_3;
-    }
-
-    public static Element I8_4(RenderScript rs) {
-        if(rs.mElement_CHAR_4 == null) {
-            rs.mElement_CHAR_4 = createVector(rs, DataType.SIGNED_8, 4);
-        }
-        return rs.mElement_CHAR_4;
-    }
-
-    public static Element U16_2(RenderScript rs) {
-        if(rs.mElement_USHORT_2 == null) {
-            rs.mElement_USHORT_2 = createVector(rs, DataType.UNSIGNED_16, 2);
-        }
-        return rs.mElement_USHORT_2;
-    }
-
-    public static Element U16_3(RenderScript rs) {
-        if(rs.mElement_USHORT_3 == null) {
-            rs.mElement_USHORT_3 = createVector(rs, DataType.UNSIGNED_16, 3);
-        }
-        return rs.mElement_USHORT_3;
-    }
-
-    public static Element U16_4(RenderScript rs) {
-        if(rs.mElement_USHORT_4 == null) {
-            rs.mElement_USHORT_4 = createVector(rs, DataType.UNSIGNED_16, 4);
-        }
-        return rs.mElement_USHORT_4;
-    }
-
-    public static Element I16_2(RenderScript rs) {
-        if(rs.mElement_SHORT_2 == null) {
-            rs.mElement_SHORT_2 = createVector(rs, DataType.SIGNED_16, 2);
-        }
-        return rs.mElement_SHORT_2;
-    }
-
-    public static Element I16_3(RenderScript rs) {
-        if(rs.mElement_SHORT_3 == null) {
-            rs.mElement_SHORT_3 = createVector(rs, DataType.SIGNED_16, 3);
-        }
-        return rs.mElement_SHORT_3;
-    }
-
-    public static Element I16_4(RenderScript rs) {
-        if(rs.mElement_SHORT_4 == null) {
-            rs.mElement_SHORT_4 = createVector(rs, DataType.SIGNED_16, 4);
-        }
-        return rs.mElement_SHORT_4;
-    }
-
-    public static Element U32_2(RenderScript rs) {
-        if(rs.mElement_UINT_2 == null) {
-            rs.mElement_UINT_2 = createVector(rs, DataType.UNSIGNED_32, 2);
-        }
-        return rs.mElement_UINT_2;
-    }
-
-    public static Element U32_3(RenderScript rs) {
-        if(rs.mElement_UINT_3 == null) {
-            rs.mElement_UINT_3 = createVector(rs, DataType.UNSIGNED_32, 3);
-        }
-        return rs.mElement_UINT_3;
-    }
-
-    public static Element U32_4(RenderScript rs) {
-        if(rs.mElement_UINT_4 == null) {
-            rs.mElement_UINT_4 = createVector(rs, DataType.UNSIGNED_32, 4);
-        }
-        return rs.mElement_UINT_4;
-    }
-
-    public static Element I32_2(RenderScript rs) {
-        if(rs.mElement_INT_2 == null) {
-            rs.mElement_INT_2 = createVector(rs, DataType.SIGNED_32, 2);
-        }
-        return rs.mElement_INT_2;
-    }
-
-    public static Element I32_3(RenderScript rs) {
-        if(rs.mElement_INT_3 == null) {
-            rs.mElement_INT_3 = createVector(rs, DataType.SIGNED_32, 3);
-        }
-        return rs.mElement_INT_3;
-    }
-
-    public static Element I32_4(RenderScript rs) {
-        if(rs.mElement_INT_4 == null) {
-            rs.mElement_INT_4 = createVector(rs, DataType.SIGNED_32, 4);
-        }
-        return rs.mElement_INT_4;
-    }
-
-    public static Element U64_2(RenderScript rs) {
-        if(rs.mElement_ULONG_2 == null) {
-            rs.mElement_ULONG_2 = createVector(rs, DataType.UNSIGNED_64, 2);
-        }
-        return rs.mElement_ULONG_2;
-    }
-
-    public static Element U64_3(RenderScript rs) {
-        if(rs.mElement_ULONG_3 == null) {
-            rs.mElement_ULONG_3 = createVector(rs, DataType.UNSIGNED_64, 3);
-        }
-        return rs.mElement_ULONG_3;
-    }
-
-    public static Element U64_4(RenderScript rs) {
-        if(rs.mElement_ULONG_4 == null) {
-            rs.mElement_ULONG_4 = createVector(rs, DataType.UNSIGNED_64, 4);
-        }
-        return rs.mElement_ULONG_4;
-    }
-
-    public static Element I64_2(RenderScript rs) {
-        if(rs.mElement_LONG_2 == null) {
-            rs.mElement_LONG_2 = createVector(rs, DataType.SIGNED_64, 2);
-        }
-        return rs.mElement_LONG_2;
-    }
-
-    public static Element I64_3(RenderScript rs) {
-        if(rs.mElement_LONG_3 == null) {
-            rs.mElement_LONG_3 = createVector(rs, DataType.SIGNED_64, 3);
-        }
-        return rs.mElement_LONG_3;
-    }
-
-    public static Element I64_4(RenderScript rs) {
-        if(rs.mElement_LONG_4 == null) {
-            rs.mElement_LONG_4 = createVector(rs, DataType.SIGNED_64, 4);
-        }
-        return rs.mElement_LONG_4;
-    }
-
-    public static Element MATRIX_4X4(RenderScript rs) {
-        if(rs.mElement_MATRIX_4X4 == null) {
-            rs.mElement_MATRIX_4X4 = createUser(rs, DataType.MATRIX_4X4);
-        }
-        return rs.mElement_MATRIX_4X4;
-    }
-
-    public static Element MATRIX_3X3(RenderScript rs) {
-        if(rs.mElement_MATRIX_3X3 == null) {
-            rs.mElement_MATRIX_3X3 = createUser(rs, DataType.MATRIX_3X3);
-        }
-        return rs.mElement_MATRIX_3X3;
-    }
-
-    public static Element MATRIX_2X2(RenderScript rs) {
-        if(rs.mElement_MATRIX_2X2 == null) {
-            rs.mElement_MATRIX_2X2 = createUser(rs, DataType.MATRIX_2X2);
-        }
-        return rs.mElement_MATRIX_2X2;
-    }
-
-    Element(long id, RenderScript rs, Element[] e, String[] n, int[] as) {
-        super(id, rs);
-        mSize = 0;
-        mVectorSize = 1;
-        mElements = e;
-        mElementNames = n;
-        mArraySizes = as;
-        mType = DataType.NONE;
-        mKind = DataKind.USER;
-        mOffsetInBytes = new int[mElements.length];
-        for (int ct = 0; ct < mElements.length; ct++ ) {
-            mOffsetInBytes[ct] = mSize;
-            mSize += mElements[ct].mSize * mArraySizes[ct];
-        }
-        updateVisibleSubElements();
-    }
-
-    Element(long id, RenderScript rs, DataType dt, DataKind dk, boolean norm, int size) {
-        super(id, rs);
-        if ((dt != DataType.UNSIGNED_5_6_5) &&
-            (dt != DataType.UNSIGNED_4_4_4_4) &&
-            (dt != DataType.UNSIGNED_5_5_5_1)) {
-            if (size == 3) {
-                mSize = dt.mSize * 4;
-            } else {
-                mSize = dt.mSize * size;
-            }
-        } else {
-            mSize = dt.mSize;
-        }
-        mType = dt;
-        mKind = dk;
-        mNormalized = norm;
-        mVectorSize = size;
-    }
-
-    Element(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /*
-     * Get an identical dummy Element for Compat Context
-     *
-     */
-    public long getDummyElement(RenderScript mRS) {
-        return mRS.nIncElementCreate(mType.mID, mKind.mID, mNormalized, mVectorSize);
-    }
-    /**
-     * Create a custom Element of the specified DataType.  The DataKind will be
-     * set to USER and the vector size to 1 indicating non-vector.
-     *
-     * @param rs The context associated with the new Element.
-     * @param dt The DataType for the new element.
-     * @return Element
-     */
-    static Element createUser(RenderScript rs, DataType dt) {
-        DataKind dk = DataKind.USER;
-        boolean norm = false;
-        int vecSize = 1;
-        long id = rs.nElementCreate(dt.mID, dk.mID, norm, vecSize);
-        return new Element(id, rs, dt, dk, norm, vecSize);
-    }
-
-    /**
-     * Create a custom vector element of the specified DataType and vector size.
-     * DataKind will be set to USER. Only primitive types (FLOAT_32, FLOAT_64,
-     * SIGNED_8, SIGNED_16, SIGNED_32, SIGNED_64, UNSIGNED_8, UNSIGNED_16,
-     * UNSIGNED_32, UNSIGNED_64, BOOLEAN) are supported.
-     *
-     * @param rs The context associated with the new Element.
-     * @param dt The DataType for the new Element.
-     * @param size Vector size for the new Element.  Range 2-4 inclusive
-     *             supported.
-     *
-     * @return Element
-     */
-    public static Element createVector(RenderScript rs, DataType dt, int size) {
-        if (size < 2 || size > 4) {
-            throw new RSIllegalArgumentException("Vector size out of range 2-4.");
-        }
-
-        switch (dt) {
-        // Support only primitive integer/float/boolean types as vectors.
-        case FLOAT_32:
-        case FLOAT_64:
-        case SIGNED_8:
-        case SIGNED_16:
-        case SIGNED_32:
-        case SIGNED_64:
-        case UNSIGNED_8:
-        case UNSIGNED_16:
-        case UNSIGNED_32:
-        case UNSIGNED_64:
-        case BOOLEAN: {
-            DataKind dk = DataKind.USER;
-            boolean norm = false;
-            long id = rs.nElementCreate(dt.mID, dk.mID, norm, size);
-            return new Element(id, rs, dt, dk, norm, size);
-        }
-
-        default: {
-            throw new RSIllegalArgumentException("Cannot create vector of " +
-                "non-primitive type.");
-        }
-        }
-    }
-
-    /**
-     * Create a new pixel Element type.  A matching DataType and DataKind must
-     * be provided.  The DataType and DataKind must contain the same number of
-     * components.  Vector size will be set to 1.
-     *
-     * @param rs The context associated with the new Element.
-     * @param dt The DataType for the new element.
-     * @param dk The DataKind to specify the mapping of each component in the
-     *           DataType.
-     *
-     * @return Element
-     */
-    public static Element createPixel(RenderScript rs, DataType dt, DataKind dk) {
-        if (!(dk == DataKind.PIXEL_L ||
-              dk == DataKind.PIXEL_A ||
-              dk == DataKind.PIXEL_LA ||
-              dk == DataKind.PIXEL_RGB ||
-              dk == DataKind.PIXEL_RGBA ||
-              dk == DataKind.PIXEL_DEPTH ||
-              dk == DataKind.PIXEL_YUV)) {
-            throw new RSIllegalArgumentException("Unsupported DataKind");
-        }
-        if (!(dt == DataType.UNSIGNED_8 ||
-              dt == DataType.UNSIGNED_16 ||
-              dt == DataType.UNSIGNED_5_6_5 ||
-              dt == DataType.UNSIGNED_4_4_4_4 ||
-              dt == DataType.UNSIGNED_5_5_5_1)) {
-            throw new RSIllegalArgumentException("Unsupported DataType");
-        }
-        if (dt == DataType.UNSIGNED_5_6_5 && dk != DataKind.PIXEL_RGB) {
-            throw new RSIllegalArgumentException("Bad kind and type combo");
-        }
-        if (dt == DataType.UNSIGNED_5_5_5_1 && dk != DataKind.PIXEL_RGBA) {
-            throw new RSIllegalArgumentException("Bad kind and type combo");
-        }
-        if (dt == DataType.UNSIGNED_4_4_4_4 && dk != DataKind.PIXEL_RGBA) {
-            throw new RSIllegalArgumentException("Bad kind and type combo");
-        }
-        if (dt == DataType.UNSIGNED_16 &&
-            dk != DataKind.PIXEL_DEPTH) {
-            throw new RSIllegalArgumentException("Bad kind and type combo");
-        }
-
-        int size = 1;
-        switch (dk) {
-        case PIXEL_LA:
-            size = 2;
-            break;
-        case PIXEL_RGB:
-            size = 3;
-            break;
-        case PIXEL_RGBA:
-            size = 4;
-            break;
-        }
-
-        boolean norm = true;
-        long id = rs.nElementCreate(dt.mID, dk.mID, norm, size);
-        return new Element(id, rs, dt, dk, norm, size);
-    }
-
-    /**
-     * Check if the current Element is compatible with another Element.
-     * Primitive Elements are compatible if they share the same underlying
-     * size and type (i.e. U8 is compatible with A_8). User-defined Elements
-     * must be equal in order to be compatible. This requires strict name
-     * equivalence for all sub-Elements (in addition to structural equivalence).
-     *
-     * @param e The Element to check compatibility with.
-     *
-     * @return boolean true if the Elements are compatible, otherwise false.
-     */
-    public boolean isCompatible(Element e) {
-        // Try strict BaseObj equality to start with.
-        if (this.equals(e)) {
-            return true;
-        }
-
-        // Ignore mKind because it is allowed to be different (user vs. pixel).
-        // We also ignore mNormalized because it can be different. The mType
-        // field must not be NONE since we require name equivalence for
-        // all user-created Elements.
-        return ((mSize == e.mSize) &&
-                (mType != DataType.NONE) &&
-                (mType == e.mType) &&
-                (mVectorSize == e.mVectorSize));
-    }
-
-    /**
-     * Builder class for producing complex elements with matching field and name
-     * pairs.  The builder starts empty.  The order in which elements are added
-     * is retained for the layout in memory.
-     *
-     */
-    public static class Builder {
-
-        RenderScript mRS;
-        Element[] mElements;
-        String[] mElementNames;
-        int[] mArraySizes;
-        int mCount;
-        int mSkipPadding;
-
-        /**
-         * Create a builder object.
-         *
-         * @param rs
-         */
-        public Builder(RenderScript rs) {
-            mRS = rs;
-            mCount = 0;
-            mElements = new Element[8];
-            mElementNames = new String[8];
-            mArraySizes = new int[8];
-        }
-
-        /**
-         * Add an array of elements to this element.
-         *
-         * @param element
-         * @param name
-         * @param arraySize
-         */
-        public Builder add(Element element, String name, int arraySize) {
-            if (arraySize < 1) {
-                throw new RSIllegalArgumentException("Array size cannot be less than 1.");
-            }
-
-            // Skip padding fields after a vector 3 type.
-            if (mSkipPadding != 0) {
-                if (name.startsWith("#padding_")) {
-                    mSkipPadding = 0;
-                    return this;
-                }
-            }
-
-            if (element.mVectorSize == 3) {
-                mSkipPadding = 1;
-            } else {
-                mSkipPadding = 0;
-            }
-
-            if(mCount == mElements.length) {
-                Element[] e = new Element[mCount + 8];
-                String[] s = new String[mCount + 8];
-                int[] as = new int[mCount + 8];
-                System.arraycopy(mElements, 0, e, 0, mCount);
-                System.arraycopy(mElementNames, 0, s, 0, mCount);
-                System.arraycopy(mArraySizes, 0, as, 0, mCount);
-                mElements = e;
-                mElementNames = s;
-                mArraySizes = as;
-            }
-            mElements[mCount] = element;
-            mElementNames[mCount] = name;
-            mArraySizes[mCount] = arraySize;
-            mCount++;
-
-            return this;
-        }
-
-        /**
-         * Add a single element to this Element.
-         *
-         * @param element
-         * @param name
-         */
-        public Builder add(Element element, String name) {
-            return add(element, name, 1);
-        }
-
-        /**
-         * Create the element from this builder.
-         *
-         *
-         * @return Element
-         */
-        public Element create() {
-            mRS.validate();
-            Element[] ein = new Element[mCount];
-            String[] sin = new String[mCount];
-            int[] asin = new int[mCount];
-            java.lang.System.arraycopy(mElements, 0, ein, 0, mCount);
-            java.lang.System.arraycopy(mElementNames, 0, sin, 0, mCount);
-            java.lang.System.arraycopy(mArraySizes, 0, asin, 0, mCount);
-
-            long[] ids = new long[ein.length];
-            for (int ct = 0; ct < ein.length; ct++ ) {
-                ids[ct] = ein[ct].getID(mRS);
-            }
-
-            long id = mRS.nElementCreate2(ids, sin, asin);
-            return new Element(id, mRS, ein, sin, asin);
-        }
-    }
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/FieldPacker.java b/v8/renderscript/java/src/android/support/v8/renderscript/FieldPacker.java
deleted file mode 100644
index 5f61920..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/FieldPacker.java
+++ /dev/null
@@ -1,946 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.support.v8.renderscript.RenderScript;
-import java.util.BitSet;
-
-/**
- * Utility class for packing arguments and structures from Android system objects to
- * RenderScript objects.
- *
- * This class is only intended to be used to support the
- * reflected code generated by the RS tool chain.  It should not
- * be called directly.
- *
- **/
-public class FieldPacker {
-    public FieldPacker(int len) {
-        mPos = 0;
-        mLen = len;
-        mData = new byte[len];
-        mAlignment = new BitSet();
-    }
-
-    public FieldPacker(byte[] data) {
-        // Advance mPos to the end of the buffer, since we are copying in the
-        // full data input.
-        mPos = data.length;
-        mLen = data.length;
-        mData = data;
-        mAlignment = new BitSet();
-        // TODO: We should either have an actual FieldPacker copy constructor
-        // or drop support for computing alignment like this. As it stands,
-        // subAlign() can never work correctly for copied FieldPacker objects.
-    }
-
-    static FieldPacker createFromArray(Object[] args) {
-        FieldPacker fp = new FieldPacker(RenderScript.sPointerSize * 8);
-        for (Object arg : args) {
-            fp.addSafely(arg);
-        }
-        fp.resize(fp.mPos);
-        return fp;
-    }
-
-    public void align(int v) {
-        if ((v <= 0) || ((v & (v - 1)) != 0)) {
-            throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
-        }
-
-        while ((mPos & (v - 1)) != 0) {
-            mAlignment.flip(mPos);
-            mData[mPos++] = 0;
-        }
-    }
-
-    public void subalign(int v) {
-        if ((v & (v - 1)) != 0) {
-            throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
-        }
-
-        while ((mPos & (v - 1)) != 0) {
-            mPos--;
-        }
-
-        if (mPos > 0) {
-            while (mAlignment.get(mPos - 1) == true) {
-                mPos--;
-                mAlignment.flip(mPos);
-            }
-        }
-
-    }
-
-    public void reset() {
-        mPos = 0;
-    }
-    public void reset(int i) {
-        if ((i < 0) || (i > mLen)) {
-            throw new RSIllegalArgumentException("out of range argument: " + i);
-        }
-        mPos = i;
-    }
-
-    public void skip(int i) {
-        int res = mPos + i;
-        if ((res < 0) || (res > mLen)) {
-            throw new RSIllegalArgumentException("out of range argument: " + i);
-        }
-        mPos = res;
-    }
-
-    public void addI8(byte v) {
-        mData[mPos++] = v;
-    }
-
-    public byte subI8() {
-        subalign(1);
-        return mData[--mPos];
-    }
-
-    public void addI16(short v) {
-        align(2);
-        mData[mPos++] = (byte)(v & 0xff);
-        mData[mPos++] = (byte)(v >> 8);
-    }
-
-    public short subI16() {
-        subalign(2);
-        short v = 0;
-        v = (short)((mData[--mPos] & 0xff) << 8);
-        v = (short)(v | (short)(mData[--mPos] & 0xff));
-        return v;
-    }
-
-
-    public void addI32(int v) {
-        align(4);
-        mData[mPos++] = (byte)(v & 0xff);
-        mData[mPos++] = (byte)((v >> 8) & 0xff);
-        mData[mPos++] = (byte)((v >> 16) & 0xff);
-        mData[mPos++] = (byte)((v >> 24) & 0xff);
-    }
-
-    public int subI32() {
-        subalign(4);
-        int v = 0;
-        v = ((mData[--mPos] & 0xff) << 24);
-        v = v | ((mData[--mPos] & 0xff) << 16);
-        v = v | ((mData[--mPos] & 0xff) << 8);
-        v = v | ((mData[--mPos] & 0xff));
-        return v;
-    }
-
-
-    public void addI64(long v) {
-        align(8);
-        mData[mPos++] = (byte)(v & 0xff);
-        mData[mPos++] = (byte)((v >> 8) & 0xff);
-        mData[mPos++] = (byte)((v >> 16) & 0xff);
-        mData[mPos++] = (byte)((v >> 24) & 0xff);
-        mData[mPos++] = (byte)((v >> 32) & 0xff);
-        mData[mPos++] = (byte)((v >> 40) & 0xff);
-        mData[mPos++] = (byte)((v >> 48) & 0xff);
-        mData[mPos++] = (byte)((v >> 56) & 0xff);
-    }
-
-    public long subI64() {
-        subalign(8);
-        long v = 0;
-        byte x = 0;
-        x = ((mData[--mPos]));
-        v = (long)(v | (((long)x) & 0xff) << 56l);
-        x = ((mData[--mPos]));
-        v = (long)(v | (((long)x) & 0xff) << 48l);
-        x = ((mData[--mPos]));
-        v = (long)(v | (((long)x) & 0xff) << 40l);
-        x = ((mData[--mPos]));
-        v = (long)(v | (((long)x) & 0xff) << 32l);
-        x = ((mData[--mPos]));
-        v = (long)(v | (((long)x) & 0xff) << 24l);
-        x = ((mData[--mPos]));
-        v = (long)(v | (((long)x) & 0xff) << 16l);
-        x = ((mData[--mPos]));
-        v = (long)(v | (((long)x) & 0xff) << 8l);
-        x = ((mData[--mPos]));
-        v = (long)(v | (((long)x) & 0xff));
-        return v;
-    }
-
-    public void addU8(short v) {
-        if ((v < 0) || (v > 0xff)) {
-            android.util.Log.e("rs", "FieldPacker.addU8( " + v + " )");
-            throw new IllegalArgumentException("Saving value out of range for type");
-        }
-        mData[mPos++] = (byte)v;
-    }
-
-    public void addU16(int v) {
-        if ((v < 0) || (v > 0xffff)) {
-            android.util.Log.e("rs", "FieldPacker.addU16( " + v + " )");
-            throw new IllegalArgumentException("Saving value out of range for type");
-        }
-        align(2);
-        mData[mPos++] = (byte)(v & 0xff);
-        mData[mPos++] = (byte)(v >> 8);
-    }
-
-    public void addU32(long v) {
-        if ((v < 0) || (v > 0xffffffffL)) {
-            android.util.Log.e("rs", "FieldPacker.addU32( " + v + " )");
-            throw new IllegalArgumentException("Saving value out of range for type");
-        }
-        align(4);
-        mData[mPos++] = (byte)(v & 0xff);
-        mData[mPos++] = (byte)((v >> 8) & 0xff);
-        mData[mPos++] = (byte)((v >> 16) & 0xff);
-        mData[mPos++] = (byte)((v >> 24) & 0xff);
-    }
-
-    public void addU64(long v) {
-        if (v < 0) {
-            android.util.Log.e("rs", "FieldPacker.addU64( " + v + " )");
-            throw new IllegalArgumentException("Saving value out of range for type");
-        }
-        align(8);
-        mData[mPos++] = (byte)(v & 0xff);
-        mData[mPos++] = (byte)((v >> 8) & 0xff);
-        mData[mPos++] = (byte)((v >> 16) & 0xff);
-        mData[mPos++] = (byte)((v >> 24) & 0xff);
-        mData[mPos++] = (byte)((v >> 32) & 0xff);
-        mData[mPos++] = (byte)((v >> 40) & 0xff);
-        mData[mPos++] = (byte)((v >> 48) & 0xff);
-        mData[mPos++] = (byte)((v >> 56) & 0xff);
-    }
-
-    public void addF32(float v) {
-        addI32(Float.floatToRawIntBits(v));
-    }
-
-    public float subF32() {
-        return Float.intBitsToFloat(subI32());
-    }
-
-    public void addF64(double v) {
-        addI64(Double.doubleToRawLongBits(v));
-    }
-
-    public double subF64() {
-        return Double.longBitsToDouble(subI64());
-    }
-
-    public void addObj(BaseObj obj) {
-        if (obj != null) {
-            if (RenderScript.sPointerSize == 8) {
-                addI64(obj.getID(null));
-                addI64(0);
-                addI64(0);
-                addI64(0);
-            } else {
-                addI32((int)obj.getID(null));
-            }
-        } else {
-            if (RenderScript.sPointerSize == 8) {
-                addI64(0);
-                addI64(0);
-                addI64(0);
-                addI64(0);
-            } else {
-                addI32(0);
-            }
-        }
-    }
-
-    public void addF32(Float2 v) {
-        addF32(v.x);
-        addF32(v.y);
-    }
-    public void addF32(Float3 v) {
-        addF32(v.x);
-        addF32(v.y);
-        addF32(v.z);
-    }
-    public void addF32(Float4 v) {
-        addF32(v.x);
-        addF32(v.y);
-        addF32(v.z);
-        addF32(v.w);
-    }
-
-    public void addF64(Double2 v) {
-        addF64(v.x);
-        addF64(v.y);
-    }
-    public void addF64(Double3 v) {
-        addF64(v.x);
-        addF64(v.y);
-        addF64(v.z);
-    }
-    public void addF64(Double4 v) {
-        addF64(v.x);
-        addF64(v.y);
-        addF64(v.z);
-        addF64(v.w);
-    }
-
-    public void addI8(Byte2 v) {
-        addI8(v.x);
-        addI8(v.y);
-    }
-    public void addI8(Byte3 v) {
-        addI8(v.x);
-        addI8(v.y);
-        addI8(v.z);
-    }
-    public void addI8(Byte4 v) {
-        addI8(v.x);
-        addI8(v.y);
-        addI8(v.z);
-        addI8(v.w);
-    }
-
-    public void addU8(Short2 v) {
-        addU8(v.x);
-        addU8(v.y);
-    }
-    public void addU8(Short3 v) {
-        addU8(v.x);
-        addU8(v.y);
-        addU8(v.z);
-    }
-    public void addU8(Short4 v) {
-        addU8(v.x);
-        addU8(v.y);
-        addU8(v.z);
-        addU8(v.w);
-    }
-
-    public void addI16(Short2 v) {
-        addI16(v.x);
-        addI16(v.y);
-    }
-    public void addI16(Short3 v) {
-        addI16(v.x);
-        addI16(v.y);
-        addI16(v.z);
-    }
-    public void addI16(Short4 v) {
-        addI16(v.x);
-        addI16(v.y);
-        addI16(v.z);
-        addI16(v.w);
-    }
-
-    public void addU16(Int2 v) {
-        addU16(v.x);
-        addU16(v.y);
-    }
-    public void addU16(Int3 v) {
-        addU16(v.x);
-        addU16(v.y);
-        addU16(v.z);
-    }
-    public void addU16(Int4 v) {
-        addU16(v.x);
-        addU16(v.y);
-        addU16(v.z);
-        addU16(v.w);
-    }
-
-    public void addI32(Int2 v) {
-        addI32(v.x);
-        addI32(v.y);
-    }
-    public void addI32(Int3 v) {
-        addI32(v.x);
-        addI32(v.y);
-        addI32(v.z);
-    }
-    public void addI32(Int4 v) {
-        addI32(v.x);
-        addI32(v.y);
-        addI32(v.z);
-        addI32(v.w);
-    }
-
-    public void addU32(Long2 v) {
-        addU32(v.x);
-        addU32(v.y);
-    }
-    public void addU32(Long3 v) {
-        addU32(v.x);
-        addU32(v.y);
-        addU32(v.z);
-    }
-    public void addU32(Long4 v) {
-        addU32(v.x);
-        addU32(v.y);
-        addU32(v.z);
-        addU32(v.w);
-    }
-
-    public void addI64(Long2 v) {
-        addI64(v.x);
-        addI64(v.y);
-    }
-    public void addI64(Long3 v) {
-        addI64(v.x);
-        addI64(v.y);
-        addI64(v.z);
-    }
-    public void addI64(Long4 v) {
-        addI64(v.x);
-        addI64(v.y);
-        addI64(v.z);
-        addI64(v.w);
-    }
-
-    public void addU64(Long2 v) {
-        addU64(v.x);
-        addU64(v.y);
-    }
-    public void addU64(Long3 v) {
-        addU64(v.x);
-        addU64(v.y);
-        addU64(v.z);
-    }
-    public void addU64(Long4 v) {
-        addU64(v.x);
-        addU64(v.y);
-        addU64(v.z);
-        addU64(v.w);
-    }
-
-
-    public Float2 subFloat2() {
-        Float2 v = new Float2();
-        v.y = subF32();
-        v.x = subF32();
-        return v;
-    }
-    public Float3 subFloat3() {
-        Float3 v = new Float3();
-        v.z = subF32();
-        v.y = subF32();
-        v.x = subF32();
-        return v;
-    }
-    public Float4 subFloat4() {
-        Float4 v = new Float4();
-        v.w = subF32();
-        v.z = subF32();
-        v.y = subF32();
-        v.x = subF32();
-        return v;
-    }
-
-    public Double2 subDouble2() {
-        Double2 v = new Double2();
-        v.y = subF64();
-        v.x = subF64();
-        return v;
-    }
-    public Double3 subDouble3() {
-        Double3 v = new Double3();
-        v.z = subF64();
-        v.y = subF64();
-        v.x = subF64();
-        return v;
-    }
-    public Double4 subDouble4() {
-        Double4 v = new Double4();
-        v.w = subF64();
-        v.z = subF64();
-        v.y = subF64();
-        v.x = subF64();
-        return v;
-    }
-
-    public Byte2 subByte2() {
-        Byte2 v = new Byte2();
-        v.y = subI8();
-        v.x = subI8();
-        return v;
-    }
-    public Byte3 subByte3() {
-        Byte3 v = new Byte3();
-        v.z = subI8();
-        v.y = subI8();
-        v.x = subI8();
-        return v;
-    }
-    public Byte4 subByte4() {
-        Byte4 v = new Byte4();
-        v.w = subI8();
-        v.z = subI8();
-        v.y = subI8();
-        v.x = subI8();
-        return v;
-    }
-
-    public Short2 subShort2() {
-        Short2 v = new Short2();
-        v.y = subI16();
-        v.x = subI16();
-        return v;
-    }
-    public Short3 subShort3() {
-        Short3 v = new Short3();
-        v.z = subI16();
-        v.y = subI16();
-        v.x = subI16();
-        return v;
-    }
-    public Short4 subShort4() {
-        Short4 v = new Short4();
-        v.w = subI16();
-        v.z = subI16();
-        v.y = subI16();
-        v.x = subI16();
-        return v;
-    }
-
-    public Int2 subInt2() {
-        Int2 v = new Int2();
-        v.y = subI32();
-        v.x = subI32();
-        return v;
-    }
-    public Int3 subInt3() {
-        Int3 v = new Int3();
-        v.z = subI32();
-        v.y = subI32();
-        v.x = subI32();
-        return v;
-    }
-    public Int4 subInt4() {
-        Int4 v = new Int4();
-        v.w = subI32();
-        v.z = subI32();
-        v.y = subI32();
-        v.x = subI32();
-        return v;
-    }
-
-    public Long2 subLong2() {
-        Long2 v = new Long2();
-        v.y = subI64();
-        v.x = subI64();
-        return v;
-    }
-    public Long3 subLong3() {
-        Long3 v = new Long3();
-        v.z = subI64();
-        v.y = subI64();
-        v.x = subI64();
-        return v;
-    }
-    public Long4 subLong4() {
-        Long4 v = new Long4();
-        v.w = subI64();
-        v.z = subI64();
-        v.y = subI64();
-        v.x = subI64();
-        return v;
-    }
-
-
-
-    public void addMatrix(Matrix4f v) {
-        for (int i=0; i < v.mMat.length; i++) {
-            addF32(v.mMat[i]);
-        }
-    }
-
-    public Matrix4f subMatrix4f() {
-        Matrix4f v = new Matrix4f();
-        for (int i = v.mMat.length - 1; i >= 0; i--) {
-            v.mMat[i] = subF32();
-        }
-        return v;
-    }
-
-    public void addMatrix(Matrix3f v) {
-        for (int i=0; i < v.mMat.length; i++) {
-            addF32(v.mMat[i]);
-        }
-    }
-
-    public Matrix3f subMatrix3f() {
-        Matrix3f v = new Matrix3f();
-        for (int i = v.mMat.length - 1; i >= 0; i--) {
-            v.mMat[i] = subF32();
-        }
-        return v;
-    }
-
-    public void addMatrix(Matrix2f v) {
-        for (int i=0; i < v.mMat.length; i++) {
-            addF32(v.mMat[i]);
-        }
-    }
-
-    public Matrix2f subMatrix2f() {
-        Matrix2f v = new Matrix2f();
-        for (int i = v.mMat.length - 1; i >= 0; i--) {
-            v.mMat[i] = subF32();
-        }
-        return v;
-    }
-
-    public void addBoolean(boolean v) {
-        addI8((byte)(v ? 1 : 0));
-    }
-
-    public boolean subBoolean() {
-        byte v = subI8();
-        if (v == 1) {
-            return true;
-        }
-        return false;
-    }
-
-    public final byte[] getData() {
-        return mData;
-    }
-
-    /**
-     * Get the actual length used for the FieldPacker.
-     *
-     * @hide
-     */
-    public int getPos() {
-        return mPos;
-    }
-
-    private static void addToPack(FieldPacker fp, Object obj) {
-        if (obj instanceof Boolean) {
-            fp.addBoolean(((Boolean)obj).booleanValue());
-            return;
-        }
-
-        if (obj instanceof Byte) {
-            fp.addI8(((Byte)obj).byteValue());
-            return;
-        }
-
-        if (obj instanceof Short) {
-            fp.addI16(((Short)obj).shortValue());
-            return;
-        }
-
-        if (obj instanceof Integer) {
-            fp.addI32(((Integer)obj).intValue());
-            return;
-        }
-
-        if (obj instanceof Long) {
-            fp.addI64(((Long)obj).longValue());
-            return;
-        }
-
-        if (obj instanceof Float) {
-            fp.addF32(((Float)obj).floatValue());
-            return;
-        }
-
-        if (obj instanceof Double) {
-            fp.addF64(((Double)obj).doubleValue());
-            return;
-        }
-
-        if (obj instanceof Byte2) {
-            fp.addI8((Byte2)obj);
-            return;
-        }
-
-        if (obj instanceof Byte3) {
-            fp.addI8((Byte3)obj);
-            return;
-        }
-
-        if (obj instanceof Byte4) {
-            fp.addI8((Byte4)obj);
-            return;
-        }
-
-        if (obj instanceof Short2) {
-            fp.addI16((Short2)obj);
-            return;
-        }
-
-        if (obj instanceof Short3) {
-            fp.addI16((Short3)obj);
-            return;
-        }
-
-        if (obj instanceof Short4) {
-            fp.addI16((Short4)obj);
-            return;
-        }
-
-        if (obj instanceof Int2) {
-            fp.addI32((Int2)obj);
-            return;
-        }
-
-        if (obj instanceof Int3) {
-            fp.addI32((Int3)obj);
-            return;
-        }
-
-        if (obj instanceof Int4) {
-            fp.addI32((Int4)obj);
-            return;
-        }
-
-        if (obj instanceof Long2) {
-            fp.addI64((Long2)obj);
-            return;
-        }
-
-        if (obj instanceof Long3) {
-            fp.addI64((Long3)obj);
-            return;
-        }
-
-        if (obj instanceof Long4) {
-            fp.addI64((Long4)obj);
-            return;
-        }
-
-        if (obj instanceof Float2) {
-            fp.addF32((Float2)obj);
-            return;
-        }
-
-        if (obj instanceof Float3) {
-            fp.addF32((Float3)obj);
-            return;
-        }
-
-        if (obj instanceof Float4) {
-            fp.addF32((Float4)obj);
-            return;
-        }
-
-        if (obj instanceof Double2) {
-            fp.addF64((Double2)obj);
-            return;
-        }
-
-        if (obj instanceof Double3) {
-            fp.addF64((Double3)obj);
-            return;
-        }
-
-        if (obj instanceof Double4) {
-            fp.addF64((Double4)obj);
-            return;
-        }
-
-        if (obj instanceof Matrix2f) {
-            fp.addMatrix((Matrix2f)obj);
-            return;
-        }
-
-        if (obj instanceof Matrix3f) {
-            fp.addMatrix((Matrix3f)obj);
-            return;
-        }
-
-        if (obj instanceof Matrix4f) {
-            fp.addMatrix((Matrix4f)obj);
-            return;
-        }
-
-        if (obj instanceof BaseObj) {
-            fp.addObj((BaseObj)obj);
-            return;
-        }
-    }
-
-    private static int getPackedSize(Object obj) {
-        if (obj instanceof Boolean) {
-            return 1;
-        }
-
-        if (obj instanceof Byte) {
-            return 1;
-        }
-
-        if (obj instanceof Short) {
-            return 2;
-        }
-
-        if (obj instanceof Integer) {
-            return 4;
-        }
-
-        if (obj instanceof Long) {
-            return 8;
-        }
-
-        if (obj instanceof Float) {
-            return 4;
-        }
-
-        if (obj instanceof Double) {
-            return 8;
-        }
-
-        if (obj instanceof Byte2) {
-            return 2;
-        }
-
-        if (obj instanceof Byte3) {
-            return 3;
-        }
-
-        if (obj instanceof Byte4) {
-            return 4;
-        }
-
-        if (obj instanceof Short2) {
-            return 4;
-        }
-
-        if (obj instanceof Short3) {
-            return 6;
-        }
-
-        if (obj instanceof Short4) {
-            return 8;
-        }
-
-        if (obj instanceof Int2) {
-            return 8;
-        }
-
-        if (obj instanceof Int3) {
-            return 12;
-        }
-
-        if (obj instanceof Int4) {
-            return 16;
-        }
-
-        if (obj instanceof Long2) {
-            return 16;
-        }
-
-        if (obj instanceof Long3) {
-            return 24;
-        }
-
-        if (obj instanceof Long4) {
-            return 32;
-        }
-
-        if (obj instanceof Float2) {
-            return 8;
-        }
-
-        if (obj instanceof Float3) {
-            return 12;
-        }
-
-        if (obj instanceof Float4) {
-            return 16;
-        }
-
-        if (obj instanceof Double2) {
-            return 16;
-        }
-
-        if (obj instanceof Double3) {
-            return 24;
-        }
-
-        if (obj instanceof Double4) {
-            return 32;
-        }
-
-        if (obj instanceof Matrix2f) {
-            return 16;
-        }
-
-        if (obj instanceof Matrix3f) {
-            return 36;
-        }
-
-        if (obj instanceof Matrix4f) {
-            return 64;
-        }
-
-        if (obj instanceof BaseObj) {
-            if (RenderScript.sPointerSize == 8) {
-                return 32;
-            } else {
-                return 4;
-            }
-        }
-
-        return 0;
-    }
-
-    static FieldPacker createFieldPack(Object[] args) {
-        int len = 0;
-        for (Object arg : args) {
-            len += getPackedSize(arg);
-        }
-        FieldPacker fp = new FieldPacker(len);
-        for (Object arg : args) {
-            addToPack(fp, arg);
-        }
-        return fp;
-    }
-
-
-    private boolean resize(int newSize) {
-        if (newSize == mLen) {
-            return false;
-        }
-
-        byte[] newData = new byte[newSize];
-        System.arraycopy(mData, 0, newData, 0, mPos);
-        mData = newData;
-        mLen = newSize;
-        return true;
-    }
-
-    private void addSafely(Object obj) {
-        boolean retry;
-        final int oldPos = mPos;
-        do {
-            retry = false;
-            try {
-                addToPack(this, obj);
-            } catch (ArrayIndexOutOfBoundsException e) {
-                mPos = oldPos;
-                resize(mLen * 2);
-                retry = true;
-            }
-        } while (retry);
-    }
-
-    private byte mData[];
-    private int mPos;
-    private int mLen;
-    private BitSet mAlignment;
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Float2.java b/v8/renderscript/java/src/android/support/v8/renderscript/Float2.java
deleted file mode 100644
index edbc5aa..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Float2.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript float2 type back to the Android system.
- *
- **/
-public class Float2 {
-    public Float2() {
-    }
-
-    public Float2(float initX, float initY) {
-        x = initX;
-        y = initY;
-    }
-
-    public float x;
-    public float y;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Float3.java b/v8/renderscript/java/src/android/support/v8/renderscript/Float3.java
deleted file mode 100644
index 90162a1..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Float3.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript float2 type back to the Android system.
- *
- **/
-public class Float3 {
-    public Float3() {
-    }
-    public Float3(float initX, float initY, float initZ) {
-        x = initX;
-        y = initY;
-        z = initZ;
-    }
-
-    public float x;
-    public float y;
-    public float z;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Float4.java b/v8/renderscript/java/src/android/support/v8/renderscript/Float4.java
deleted file mode 100644
index d0dc568..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Float4.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript float2 type back to the Android system.
- *
- **/
-public class Float4 {
-    public Float4() {
-    }
-
-    public Float4(float initX, float initY, float initZ, float initW) {
-        x = initX;
-        y = initY;
-        z = initZ;
-        w = initW;
-    }
-
-    public float x;
-    public float y;
-    public float z;
-    public float w;
-}
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Int2.java b/v8/renderscript/java/src/android/support/v8/renderscript/Int2.java
deleted file mode 100644
index e5d04b8..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Int2.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript int2 type back to the Android system.
- *
- **/
-public class Int2 {
-    public Int2() {
-    }
-
-    public Int2(int initX, int initY) {
-        x = initX;
-        y = initY;
-    }
-
-    public int x;
-    public int y;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Int3.java b/v8/renderscript/java/src/android/support/v8/renderscript/Int3.java
deleted file mode 100644
index 12f59e8..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Int3.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript int3 type back to the Android system.
- *
- **/
-public class Int3 {
-    public Int3() {
-    }
-
-    public Int3(int initX, int initY, int initZ) {
-        x = initX;
-        y = initY;
-        z = initZ;
-    }
-
-    public int x;
-    public int y;
-    public int z;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Int4.java b/v8/renderscript/java/src/android/support/v8/renderscript/Int4.java
deleted file mode 100644
index bb49fb1..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Int4.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript int4 type back to the Android system.
- *
- **/
-public class Int4 {
-    public Int4() {
-    }
-
-    public Int4(int initX, int initY, int initZ, int initW) {
-        x = initX;
-        y = initY;
-        z = initZ;
-        w = initW;
-    }
-
-    public int x;
-    public int y;
-    public int z;
-    public int w;
-}
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Long2.java b/v8/renderscript/java/src/android/support/v8/renderscript/Long2.java
deleted file mode 100644
index b3c95f2..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Long2.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript long2 type back to the Android system.
- **/
-public class Long2 {
-    public Long2() {
-    }
-
-    public Long2(long initX, long initY) {
-        x = initX;
-        y = initY;
-    }
-
-    public long x;
-    public long y;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Long3.java b/v8/renderscript/java/src/android/support/v8/renderscript/Long3.java
deleted file mode 100644
index 6ce0f83..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Long3.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript long3 type back to the Android system.
- **/
-public class Long3 {
-    public Long3() {
-    }
-
-    public Long3(long initX, long initY, long initZ) {
-        x = initX;
-        y = initY;
-        z = initZ;
-    }
-
-    public long x;
-    public long y;
-    public long z;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Long4.java b/v8/renderscript/java/src/android/support/v8/renderscript/Long4.java
deleted file mode 100644
index d44a321..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Long4.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript long4 type back to the Android system.
- **/
-public class Long4 {
-    public Long4() {
-    }
-
-    public Long4(long initX, long initY, long initZ, long initW) {
-        x = initX;
-        y = initY;
-        z = initZ;
-        w = initW;
-    }
-
-    public long x;
-    public long y;
-    public long z;
-    public long w;
-}
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Matrix2f.java b/v8/renderscript/java/src/android/support/v8/renderscript/Matrix2f.java
deleted file mode 100644
index 9a8b5bf..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Matrix2f.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (C) 2009-2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript rs_matrix2x2 type back to the Android system.
- *
- **/
-public class Matrix2f {
-
-    /**
-    * Creates a new identity 2x2 matrix
-    */
-    public Matrix2f() {
-        mMat = new float[4];
-        loadIdentity();
-    }
-
-    /**
-    * Creates a new matrix and sets its values from the given
-    * parameter
-    *
-    * @param dataArray values to set the matrix to, must be 4
-    *                  floats long
-    */
-    public Matrix2f(float[] dataArray) {
-        mMat = new float[4];
-        System.arraycopy(dataArray, 0, mMat, 0, mMat.length);
-    }
-
-    /**
-    * Return a reference to the internal array representing matrix
-    * values. Modifying this array will also change the matrix
-    *
-    * @return internal array representing the matrix
-    */
-    public float[] getArray() {
-        return mMat;
-    }
-
-    /**
-    * Returns the value for a given row and column
-    *
-    * @param x column of the value to return
-    * @param y row of the value to return
-    *
-    * @return value in the yth row and xth column
-    */
-    public float get(int x, int y) {
-        return mMat[x*2 + y];
-    }
-
-    /**
-    * Sets the value for a given row and column
-    *
-    * @param x column of the value to set
-    * @param y row of the value to set
-    */
-    public void set(int x, int y, float v) {
-        mMat[x*2 + y] = v;
-    }
-
-    /**
-    * Sets the matrix values to identity
-    */
-    public void loadIdentity() {
-        mMat[0] = 1;
-        mMat[1] = 0;
-
-        mMat[2] = 0;
-        mMat[3] = 1;
-    }
-
-    /**
-    * Sets the values of the matrix to those of the parameter
-    *
-    * @param src matrix to load the values from
-    */
-    public void load(Matrix2f src) {
-        System.arraycopy(src.getArray(), 0, mMat, 0, mMat.length);
-    }
-
-    /**
-    * Sets current values to be a rotation matrix of given angle
-    *
-    * @param rot rotation angle
-    */
-    public void loadRotate(float rot) {
-        float c, s;
-        rot *= (float)(java.lang.Math.PI / 180.0f);
-        c = (float)java.lang.Math.cos(rot);
-        s = (float)java.lang.Math.sin(rot);
-        mMat[0] = c;
-        mMat[1] = -s;
-        mMat[2] = s;
-        mMat[3] = c;
-    }
-
-    /**
-    * Sets current values to be a scale matrix of given dimensions
-    *
-    * @param x scale component x
-    * @param y scale component y
-    */
-    public void loadScale(float x, float y) {
-        loadIdentity();
-        mMat[0] = x;
-        mMat[3] = y;
-    }
-
-    /**
-    * Sets current values to be the result of multiplying two given
-    * matrices
-    *
-    * @param lhs left hand side matrix
-    * @param rhs right hand side matrix
-    */
-    public void loadMultiply(Matrix2f lhs, Matrix2f rhs) {
-        for (int i=0 ; i<2 ; i++) {
-            float ri0 = 0;
-            float ri1 = 0;
-            for (int j=0 ; j<2 ; j++) {
-                float rhs_ij = rhs.get(i,j);
-                ri0 += lhs.get(j,0) * rhs_ij;
-                ri1 += lhs.get(j,1) * rhs_ij;
-            }
-            set(i,0, ri0);
-            set(i,1, ri1);
-        }
-    }
-
-    /**
-    * Post-multiplies the current matrix by a given parameter
-    *
-    * @param rhs right hand side to multiply by
-    */
-    public void multiply(Matrix2f rhs) {
-        Matrix2f tmp = new Matrix2f();
-        tmp.loadMultiply(this, rhs);
-        load(tmp);
-    }
-    /**
-    * Modifies the current matrix by post-multiplying it with a
-    * rotation matrix of given angle
-    *
-    * @param rot angle of rotation
-    */
-    public void rotate(float rot) {
-        Matrix2f tmp = new Matrix2f();
-        tmp.loadRotate(rot);
-        multiply(tmp);
-    }
-    /**
-    * Modifies the current matrix by post-multiplying it with a
-    * scale matrix of given dimensions
-    *
-    * @param x scale component x
-    * @param y scale component y
-    */
-    public void scale(float x, float y) {
-        Matrix2f tmp = new Matrix2f();
-        tmp.loadScale(x, y);
-        multiply(tmp);
-    }
-    /**
-    * Sets the current matrix to its transpose
-    */
-    public void transpose() {
-        float temp = mMat[1];
-        mMat[1] = mMat[2];
-        mMat[2] = temp;
-    }
-
-    final float[] mMat;
-}
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Matrix3f.java b/v8/renderscript/java/src/android/support/v8/renderscript/Matrix3f.java
deleted file mode 100644
index 4528543..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Matrix3f.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Copyright (C) 2009-2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript rs_matrix3x3 type back to the Android system.
- *
- **/
-public class Matrix3f {
-
-    /**
-    * Creates a new identity 3x3 matrix
-    */
-    public Matrix3f() {
-        mMat = new float[9];
-        loadIdentity();
-    }
-
-    /**
-    * Creates a new matrix and sets its values from the given
-    * parameter
-    *
-    * @param dataArray values to set the matrix to, must be 9
-    *                  floats long
-    */
-    public Matrix3f(float[] dataArray) {
-        mMat = new float[9];
-        System.arraycopy(dataArray, 0, mMat, 0, mMat.length);
-    }
-
-    /**
-    * Return a reference to the internal array representing matrix
-    * values. Modifying this array will also change the matrix
-    *
-    * @return internal array representing the matrix
-    */
-    public float[] getArray() {
-        return mMat;
-    }
-
-    /**
-    * Returns the value for a given row and column
-    *
-    * @param x column of the value to return
-    * @param y row of the value to return
-    *
-    * @return value in the yth row and xth column
-    */
-    public float get(int x, int y) {
-        return mMat[x*3 + y];
-    }
-
-    /**
-    * Sets the value for a given row and column
-    *
-    * @param x column of the value to set
-    * @param y row of the value to set
-    */
-    public void set(int x, int y, float v) {
-        mMat[x*3 + y] = v;
-    }
-
-    /**
-    * Sets the matrix values to identity
-    */
-    public void loadIdentity() {
-        mMat[0] = 1;
-        mMat[1] = 0;
-        mMat[2] = 0;
-
-        mMat[3] = 0;
-        mMat[4] = 1;
-        mMat[5] = 0;
-
-        mMat[6] = 0;
-        mMat[7] = 0;
-        mMat[8] = 1;
-    }
-
-    /**
-    * Sets the values of the matrix to those of the parameter
-    *
-    * @param src matrix to load the values from
-    */
-    public void load(Matrix3f src) {
-        System.arraycopy(src.getArray(), 0, mMat, 0, mMat.length);
-    }
-
-    /**
-    * Sets current values to be a rotation matrix of certain angle
-    * about a given axis
-    *
-    * @param rot angle of rotation
-    * @param x rotation axis x
-    * @param y rotation axis y
-    * @param z rotation axis z
-    */
-    public void loadRotate(float rot, float x, float y, float z) {
-        float c, s;
-        rot *= (float)(java.lang.Math.PI / 180.0f);
-        c = (float)java.lang.Math.cos(rot);
-        s = (float)java.lang.Math.sin(rot);
-
-        float len = (float)java.lang.Math.sqrt(x*x + y*y + z*z);
-        if (!(len != 1)) {
-            float recipLen = 1.f / len;
-            x *= recipLen;
-            y *= recipLen;
-            z *= recipLen;
-        }
-        float nc = 1.0f - c;
-        float xy = x * y;
-        float yz = y * z;
-        float zx = z * x;
-        float xs = x * s;
-        float ys = y * s;
-        float zs = z * s;
-        mMat[0] = x*x*nc +  c;
-        mMat[3] =  xy*nc - zs;
-        mMat[6] =  zx*nc + ys;
-        mMat[1] =  xy*nc + zs;
-        mMat[4] = y*y*nc +  c;
-        mMat[7] =  yz*nc - xs;
-        mMat[2] =  zx*nc - ys;
-        mMat[5] =  yz*nc + xs;
-        mMat[8] = z*z*nc +  c;
-    }
-
-    /**
-    * Makes the upper 2x2 a rotation matrix of the given angle
-    *
-    * @param rot rotation angle
-    */
-    public void loadRotate(float rot) {
-        loadIdentity();
-        float c, s;
-        rot *= (float)(java.lang.Math.PI / 180.0f);
-        c = (float)java.lang.Math.cos(rot);
-        s = (float)java.lang.Math.sin(rot);
-        mMat[0] = c;
-        mMat[1] = -s;
-        mMat[3] = s;
-        mMat[4] = c;
-    }
-
-    /**
-    * Makes the upper 2x2 a scale matrix of given dimensions
-    *
-    * @param x scale component x
-    * @param y scale component y
-    */
-    public void loadScale(float x, float y) {
-        loadIdentity();
-        mMat[0] = x;
-        mMat[4] = y;
-    }
-
-    /**
-    * Sets current values to be a scale matrix of given dimensions
-    *
-    * @param x scale component x
-    * @param y scale component y
-    * @param z scale component z
-    */
-    public void loadScale(float x, float y, float z) {
-        loadIdentity();
-        mMat[0] = x;
-        mMat[4] = y;
-        mMat[8] = z;
-    }
-
-    /**
-    * Sets current values to be a translation matrix of given
-    * dimensions
-    *
-    * @param x translation component x
-    * @param y translation component y
-    */
-    public void loadTranslate(float x, float y) {
-        loadIdentity();
-        mMat[6] = x;
-        mMat[7] = y;
-    }
-
-    /**
-    * Sets current values to be the result of multiplying two given
-    * matrices
-    *
-    * @param lhs left hand side matrix
-    * @param rhs right hand side matrix
-    */
-    public void loadMultiply(Matrix3f lhs, Matrix3f rhs) {
-        for (int i=0 ; i<3 ; i++) {
-            float ri0 = 0;
-            float ri1 = 0;
-            float ri2 = 0;
-            for (int j=0 ; j<3 ; j++) {
-                float rhs_ij = rhs.get(i,j);
-                ri0 += lhs.get(j,0) * rhs_ij;
-                ri1 += lhs.get(j,1) * rhs_ij;
-                ri2 += lhs.get(j,2) * rhs_ij;
-            }
-            set(i,0, ri0);
-            set(i,1, ri1);
-            set(i,2, ri2);
-        }
-    }
-
-    /**
-    * Post-multiplies the current matrix by a given parameter
-    *
-    * @param rhs right hand side to multiply by
-    */
-    public void multiply(Matrix3f rhs) {
-        Matrix3f tmp = new Matrix3f();
-        tmp.loadMultiply(this, rhs);
-        load(tmp);
-    }
-
-    /**
-    * Modifies the current matrix by post-multiplying it with a
-    * rotation matrix of certain angle about a given axis
-    *
-    * @param rot angle of rotation
-    * @param x rotation axis x
-    * @param y rotation axis y
-    * @param z rotation axis z
-    */
-    public void rotate(float rot, float x, float y, float z) {
-        Matrix3f tmp = new Matrix3f();
-        tmp.loadRotate(rot, x, y, z);
-        multiply(tmp);
-    }
-
-    /**
-    * Modifies the upper 2x2 of the current matrix by
-    * post-multiplying it with a rotation matrix of given angle
-    *
-    * @param rot angle of rotation
-    */
-    public void rotate(float rot) {
-        Matrix3f tmp = new Matrix3f();
-        tmp.loadRotate(rot);
-        multiply(tmp);
-    }
-
-    /**
-    * Modifies the upper 2x2 of the current matrix by
-    * post-multiplying it with a scale matrix of given dimensions
-    *
-    * @param x scale component x
-    * @param y scale component y
-    */
-    public void scale(float x, float y) {
-        Matrix3f tmp = new Matrix3f();
-        tmp.loadScale(x, y);
-        multiply(tmp);
-    }
-
-    /**
-    * Modifies the current matrix by post-multiplying it with a
-    * scale matrix of given dimensions
-    *
-    * @param x scale component x
-    * @param y scale component y
-    * @param z scale component z
-    */
-    public void scale(float x, float y, float z) {
-        Matrix3f tmp = new Matrix3f();
-        tmp.loadScale(x, y, z);
-        multiply(tmp);
-    }
-
-    /**
-    * Modifies the current matrix by post-multiplying it with a
-    * translation matrix of given dimensions
-    *
-    * @param x translation component x
-    * @param y translation component y
-    */
-    public void translate(float x, float y) {
-        Matrix3f tmp = new Matrix3f();
-        tmp.loadTranslate(x, y);
-        multiply(tmp);
-    }
-
-    /**
-    * Sets the current matrix to its transpose
-    */
-    public void transpose() {
-        for(int i = 0; i < 2; ++i) {
-            for(int j = i + 1; j < 3; ++j) {
-                float temp = mMat[i*3 + j];
-                mMat[i*3 + j] = mMat[j*3 + i];
-                mMat[j*3 + i] = temp;
-            }
-        }
-    }
-
-    final float[] mMat;
-}
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Matrix4f.java b/v8/renderscript/java/src/android/support/v8/renderscript/Matrix4f.java
deleted file mode 100644
index b9e5636..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Matrix4f.java
+++ /dev/null
@@ -1,494 +0,0 @@
-/*
- * Copyright (C) 2009-2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript rs_matrix4x4 type back to the Android system.
- *
- **/
-public class Matrix4f {
-
-    /**
-    * Creates a new identity 4x4 matrix
-    */
-    public Matrix4f() {
-        mMat = new float[16];
-        loadIdentity();
-    }
-
-    /**
-    * Creates a new matrix and sets its values from the given
-    * parameter
-    *
-    * @param dataArray values to set the matrix to, must be 16
-    *                  floats long
-    */
-    public Matrix4f(float[] dataArray) {
-        mMat = new float[16];
-        System.arraycopy(dataArray, 0, mMat, 0, mMat.length);
-    }
-
-    /**
-    * Return a reference to the internal array representing matrix
-    * values. Modifying this array will also change the matrix
-    *
-    * @return internal array representing the matrix
-    */
-    public float[] getArray() {
-        return mMat;
-    }
-
-    /**
-    * Returns the value for a given row and column
-    *
-    * @param x column of the value to return
-    * @param y row of the value to return
-    *
-    * @return value in the yth row and xth column
-    */
-    public float get(int x, int y) {
-        return mMat[x*4 + y];
-    }
-
-    /**
-    * Sets the value for a given row and column
-    *
-    * @param x column of the value to set
-    * @param y row of the value to set
-    */
-    public void set(int x, int y, float v) {
-        mMat[x*4 + y] = v;
-    }
-
-    /**
-    * Sets the matrix values to identity
-    */
-    public void loadIdentity() {
-        mMat[0] = 1;
-        mMat[1] = 0;
-        mMat[2] = 0;
-        mMat[3] = 0;
-
-        mMat[4] = 0;
-        mMat[5] = 1;
-        mMat[6] = 0;
-        mMat[7] = 0;
-
-        mMat[8] = 0;
-        mMat[9] = 0;
-        mMat[10] = 1;
-        mMat[11] = 0;
-
-        mMat[12] = 0;
-        mMat[13] = 0;
-        mMat[14] = 0;
-        mMat[15] = 1;
-    }
-
-    /**
-    * Sets the values of the matrix to those of the parameter
-    *
-    * @param src matrix to load the values from
-    */
-    public void load(Matrix4f src) {
-        System.arraycopy(src.getArray(), 0, mMat, 0, mMat.length);
-    }
-
-    /**
-    * Sets the values of the matrix to those of the parameter
-    *
-    * @param src matrix to load the values from
-    * @hide
-    */
-    public void load(Matrix3f src) {
-        mMat[0] = src.mMat[0];
-        mMat[1] = src.mMat[1];
-        mMat[2] = src.mMat[2];
-        mMat[3] = 0;
-
-        mMat[4] = src.mMat[3];
-        mMat[5] = src.mMat[4];
-        mMat[6] = src.mMat[5];
-        mMat[7] = 0;
-
-        mMat[8] = src.mMat[6];
-        mMat[9] = src.mMat[7];
-        mMat[10] = src.mMat[8];
-        mMat[11] = 0;
-
-        mMat[12] = 0;
-        mMat[13] = 0;
-        mMat[14] = 0;
-        mMat[15] = 1;
-    }
-
-    /**
-    * Sets current values to be a rotation matrix of certain angle
-    * about a given axis
-    *
-    * @param rot angle of rotation
-    * @param x rotation axis x
-    * @param y rotation axis y
-    * @param z rotation axis z
-    */
-    public void loadRotate(float rot, float x, float y, float z) {
-        float c, s;
-        mMat[3] = 0;
-        mMat[7] = 0;
-        mMat[11]= 0;
-        mMat[12]= 0;
-        mMat[13]= 0;
-        mMat[14]= 0;
-        mMat[15]= 1;
-        rot *= (float)(java.lang.Math.PI / 180.0f);
-        c = (float)java.lang.Math.cos(rot);
-        s = (float)java.lang.Math.sin(rot);
-
-        float len = (float)java.lang.Math.sqrt(x*x + y*y + z*z);
-        if (!(len != 1)) {
-            float recipLen = 1.f / len;
-            x *= recipLen;
-            y *= recipLen;
-            z *= recipLen;
-        }
-        float nc = 1.0f - c;
-        float xy = x * y;
-        float yz = y * z;
-        float zx = z * x;
-        float xs = x * s;
-        float ys = y * s;
-        float zs = z * s;
-        mMat[ 0] = x*x*nc +  c;
-        mMat[ 4] =  xy*nc - zs;
-        mMat[ 8] =  zx*nc + ys;
-        mMat[ 1] =  xy*nc + zs;
-        mMat[ 5] = y*y*nc +  c;
-        mMat[ 9] =  yz*nc - xs;
-        mMat[ 2] =  zx*nc - ys;
-        mMat[ 6] =  yz*nc + xs;
-        mMat[10] = z*z*nc +  c;
-    }
-
-    /**
-    * Sets current values to be a scale matrix of given dimensions
-    *
-    * @param x scale component x
-    * @param y scale component y
-    * @param z scale component z
-    */
-    public void loadScale(float x, float y, float z) {
-        loadIdentity();
-        mMat[0] = x;
-        mMat[5] = y;
-        mMat[10] = z;
-    }
-
-    /**
-    * Sets current values to be a translation matrix of given
-    * dimensions
-    *
-    * @param x translation component x
-    * @param y translation component y
-    * @param z translation component z
-    */
-    public void loadTranslate(float x, float y, float z) {
-        loadIdentity();
-        mMat[12] = x;
-        mMat[13] = y;
-        mMat[14] = z;
-    }
-
-    /**
-    * Sets current values to be the result of multiplying two given
-    * matrices
-    *
-    * @param lhs left hand side matrix
-    * @param rhs right hand side matrix
-    */
-    public void loadMultiply(Matrix4f lhs, Matrix4f rhs) {
-        for (int i=0 ; i<4 ; i++) {
-            float ri0 = 0;
-            float ri1 = 0;
-            float ri2 = 0;
-            float ri3 = 0;
-            for (int j=0 ; j<4 ; j++) {
-                float rhs_ij = rhs.get(i,j);
-                ri0 += lhs.get(j,0) * rhs_ij;
-                ri1 += lhs.get(j,1) * rhs_ij;
-                ri2 += lhs.get(j,2) * rhs_ij;
-                ri3 += lhs.get(j,3) * rhs_ij;
-            }
-            set(i,0, ri0);
-            set(i,1, ri1);
-            set(i,2, ri2);
-            set(i,3, ri3);
-        }
-    }
-
-    /**
-    * Set current values to be an orthographic projection matrix
-    *
-    * @param l location of the left vertical clipping plane
-    * @param r location of the right vertical clipping plane
-    * @param b location of the bottom horizontal clipping plane
-    * @param t location of the top horizontal clipping plane
-    * @param n location of the near clipping plane
-    * @param f location of the far clipping plane
-    */
-    public void loadOrtho(float l, float r, float b, float t, float n, float f) {
-        loadIdentity();
-        mMat[0] = 2 / (r - l);
-        mMat[5] = 2 / (t - b);
-        mMat[10]= -2 / (f - n);
-        mMat[12]= -(r + l) / (r - l);
-        mMat[13]= -(t + b) / (t - b);
-        mMat[14]= -(f + n) / (f - n);
-    }
-
-    /**
-    * Set current values to be an orthographic projection matrix
-    * with the right and bottom clipping planes set to the given
-    * values. Left and top clipping planes are set to 0. Near and
-    * far are set to -1, 1 respectively
-    *
-    * @param w location of the right vertical clipping plane
-    * @param h location of the bottom horizontal clipping plane
-    *
-    */
-    public void loadOrthoWindow(int w, int h) {
-        loadOrtho(0,w, h,0, -1,1);
-    }
-
-    /**
-    * Sets current values to be a perspective projection matrix
-    *
-    * @param l location of the left vertical clipping plane
-    * @param r location of the right vertical clipping plane
-    * @param b location of the bottom horizontal clipping plane
-    * @param t location of the top horizontal clipping plane
-    * @param n location of the near clipping plane, must be positive
-    * @param f location of the far clipping plane, must be positive
-    *
-    */
-    public void loadFrustum(float l, float r, float b, float t, float n, float f) {
-        loadIdentity();
-        mMat[0] = 2 * n / (r - l);
-        mMat[5] = 2 * n / (t - b);
-        mMat[8] = (r + l) / (r - l);
-        mMat[9] = (t + b) / (t - b);
-        mMat[10]= -(f + n) / (f - n);
-        mMat[11]= -1;
-        mMat[14]= -2*f*n / (f - n);
-        mMat[15]= 0;
-    }
-
-    /**
-    * Sets current values to be a perspective projection matrix
-    *
-    * @param fovy vertical field of view angle in degrees
-    * @param aspect aspect ratio of the screen
-    * @param near near cliping plane, must be positive
-    * @param far far clipping plane, must be positive
-    */
-    public void loadPerspective(float fovy, float aspect, float near, float far) {
-        float top = near * (float)Math.tan((float) (fovy * Math.PI / 360.0f));
-        float bottom = -top;
-        float left = bottom * aspect;
-        float right = top * aspect;
-        loadFrustum(left, right, bottom, top, near, far);
-    }
-
-    /**
-    * Helper function to set the current values to a perspective
-    * projection matrix with aspect ratio defined by the parameters
-    * and (near, far), (bottom, top) mapping to (-1, 1) at z = 0
-    *
-    * @param w screen width
-    * @param h screen height
-    */
-    public void loadProjectionNormalized(int w, int h) {
-        // range -1,1 in the narrow axis at z = 0.
-        Matrix4f m1 = new Matrix4f();
-        Matrix4f m2 = new Matrix4f();
-
-        if(w > h) {
-            float aspect = ((float)w) / h;
-            m1.loadFrustum(-aspect,aspect,  -1,1,  1,100);
-        } else {
-            float aspect = ((float)h) / w;
-            m1.loadFrustum(-1,1, -aspect,aspect, 1,100);
-        }
-
-        m2.loadRotate(180, 0, 1, 0);
-        m1.loadMultiply(m1, m2);
-
-        m2.loadScale(-2, 2, 1);
-        m1.loadMultiply(m1, m2);
-
-        m2.loadTranslate(0, 0, 2);
-        m1.loadMultiply(m1, m2);
-
-        load(m1);
-    }
-
-    /**
-    * Post-multiplies the current matrix by a given parameter
-    *
-    * @param rhs right hand side to multiply by
-    */
-    public void multiply(Matrix4f rhs) {
-        Matrix4f tmp = new Matrix4f();
-        tmp.loadMultiply(this, rhs);
-        load(tmp);
-    }
-    /**
-    * Modifies the current matrix by post-multiplying it with a
-    * rotation matrix of certain angle about a given axis
-    *
-    * @param rot angle of rotation
-    * @param x rotation axis x
-    * @param y rotation axis y
-    * @param z rotation axis z
-    */
-    public void rotate(float rot, float x, float y, float z) {
-        Matrix4f tmp = new Matrix4f();
-        tmp.loadRotate(rot, x, y, z);
-        multiply(tmp);
-    }
-
-    /**
-    * Modifies the current matrix by post-multiplying it with a
-    * scale matrix of given dimensions
-    *
-    * @param x scale component x
-    * @param y scale component y
-    * @param z scale component z
-    */
-    public void scale(float x, float y, float z) {
-        Matrix4f tmp = new Matrix4f();
-        tmp.loadScale(x, y, z);
-        multiply(tmp);
-    }
-
-    /**
-    * Modifies the current matrix by post-multiplying it with a
-    * translation matrix of given dimensions
-    *
-    * @param x translation component x
-    * @param y translation component y
-    * @param z translation component z
-    */
-    public void translate(float x, float y, float z) {
-        Matrix4f tmp = new Matrix4f();
-        tmp.loadTranslate(x, y, z);
-        multiply(tmp);
-    }
-    private float computeCofactor(int i, int j) {
-        int c0 = (i+1) % 4;
-        int c1 = (i+2) % 4;
-        int c2 = (i+3) % 4;
-        int r0 = (j+1) % 4;
-        int r1 = (j+2) % 4;
-        int r2 = (j+3) % 4;
-
-        float minor = (mMat[c0 + 4*r0] * (mMat[c1 + 4*r1] * mMat[c2 + 4*r2] -
-                                            mMat[c1 + 4*r2] * mMat[c2 + 4*r1]))
-                     - (mMat[c0 + 4*r1] * (mMat[c1 + 4*r0] * mMat[c2 + 4*r2] -
-                                            mMat[c1 + 4*r2] * mMat[c2 + 4*r0]))
-                     + (mMat[c0 + 4*r2] * (mMat[c1 + 4*r0] * mMat[c2 + 4*r1] -
-                                            mMat[c1 + 4*r1] * mMat[c2 + 4*r0]));
-
-        float cofactor = ((i+j) & 1) != 0 ? -minor : minor;
-        return cofactor;
-    }
-
-    /**
-    * Sets the current matrix to its inverse
-    */
-    public boolean inverse() {
-
-        Matrix4f result = new Matrix4f();
-
-        for (int i = 0; i < 4; ++i) {
-            for (int j = 0; j < 4; ++j) {
-                result.mMat[4*i + j] = computeCofactor(i, j);
-            }
-        }
-
-        // Dot product of 0th column of source and 0th row of result
-        float det = mMat[0]*result.mMat[0] + mMat[4]*result.mMat[1] +
-                     mMat[8]*result.mMat[2] + mMat[12]*result.mMat[3];
-
-        if (Math.abs(det) < 1e-6) {
-            return false;
-        }
-
-        det = 1.0f / det;
-        for (int i = 0; i < 16; ++i) {
-            mMat[i] = result.mMat[i] * det;
-        }
-
-        return true;
-    }
-
-    /**
-    * Sets the current matrix to its inverse transpose
-    */
-    public boolean inverseTranspose() {
-
-        Matrix4f result = new Matrix4f();
-
-        for (int i = 0; i < 4; ++i) {
-            for (int j = 0; j < 4; ++j) {
-                result.mMat[4*j + i] = computeCofactor(i, j);
-            }
-        }
-
-        float det = mMat[0]*result.mMat[0] + mMat[4]*result.mMat[4] +
-                     mMat[8]*result.mMat[8] + mMat[12]*result.mMat[12];
-
-        if (Math.abs(det) < 1e-6) {
-            return false;
-        }
-
-        det = 1.0f / det;
-        for (int i = 0; i < 16; ++i) {
-            mMat[i] = result.mMat[i] * det;
-        }
-
-        return true;
-    }
-
-    /**
-    * Sets the current matrix to its transpose
-    */
-    public void transpose() {
-        for(int i = 0; i < 3; ++i) {
-            for(int j = i + 1; j < 4; ++j) {
-                float temp = mMat[i*4 + j];
-                mMat[i*4 + j] = mMat[j*4 + i];
-                mMat[j*4 + i] = temp;
-            }
-        }
-    }
-
-    final float[] mMat;
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/RSDriverException.java b/v8/renderscript/java/src/android/support/v8/renderscript/RSDriverException.java
deleted file mode 100644
index d4ae341..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/RSDriverException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-
-/**
- * Base class for all exceptions thrown by the Android
- * RenderScript
- */
-public class RSDriverException extends RSRuntimeException {
-    public RSDriverException(String string) {
-        super(string);
-    }
-}
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/RSIllegalArgumentException.java b/v8/renderscript/java/src/android/support/v8/renderscript/RSIllegalArgumentException.java
deleted file mode 100644
index 378a49c..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/RSIllegalArgumentException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-
-/**
- * Base class for all exceptions thrown by the Android
- * RenderScript
- */
-public class RSIllegalArgumentException extends RSRuntimeException {
-    public RSIllegalArgumentException(String string) {
-        super(string);
-    }
-}
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/RSInvalidStateException.java b/v8/renderscript/java/src/android/support/v8/renderscript/RSInvalidStateException.java
deleted file mode 100644
index a5676a3..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/RSInvalidStateException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-
-/**
- * Base class for all exceptions thrown by the Android
- * RenderScript
- */
-public class RSInvalidStateException extends RSRuntimeException {
-    public RSInvalidStateException(String string) {
-        super(string);
-    }
-}
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/RSRuntimeException.java b/v8/renderscript/java/src/android/support/v8/renderscript/RSRuntimeException.java
deleted file mode 100644
index ec83365..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/RSRuntimeException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-
-/**
- * Base class for all exceptions thrown by the Android
- * RenderScript
- */
-public class RSRuntimeException
-  extends java.lang.RuntimeException {
-    public RSRuntimeException(String string) {
-        super(string);
-    }
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/RenderScript.java b/v8/renderscript/java/src/android/support/v8/renderscript/RenderScript.java
deleted file mode 100644
index a5c6f93..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/RenderScript.java
+++ /dev/null
@@ -1,1721 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.io.File;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-import java.util.ArrayList;
-import java.nio.ByteBuffer;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.res.AssetManager;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Process;
-import android.util.Log;
-import android.view.Surface;
-
-/**
- * This class provides access to a RenderScript context, which controls RenderScript
- * initialization, resource management, and teardown. An instance of the RenderScript
- * class must be created before any other RS objects can be created.
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses RenderScript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
- * </div>
- **/
-public class RenderScript {
-    static final String LOG_TAG = "RenderScript_jni";
-    static final boolean DEBUG  = false;
-    @SuppressWarnings({"UnusedDeclaration", "deprecation"})
-    static final boolean LOG_ENABLED = false;
-    static final int SUPPORT_LIB_API = 23;
-    static final int SUPPORT_LIB_VERSION = 2301;
-
-    static private ArrayList<RenderScript> mProcessContextList = new ArrayList<RenderScript>();
-    private boolean mIsProcessContext = false;
-    private boolean mEnableMultiInput = false;
-    private int mDispatchAPILevel = 0;
-
-    private int mContextFlags = 0;
-    private int mContextSdkVersion = 0;
-
-    private Context mApplicationContext;
-    private String mNativeLibDir;
-
-    static private String mBlackList = "";
-     /**
-     * Sets the blackList of Models to only use support lib runtime.
-     * Should be used before context create.
-     *
-     * @param blackList User provided black list string.
-     *
-     * Format: "(MANUFACTURER1:PRODUCT1:MODEL1), (MANUFACTURER2:PRODUCT2:MODEL2)..."
-     * e.g. : To Blacklist Nexus 7(2013) and Nexus 5.
-     *        mBlackList = "(asus:razor:Nexus 7), (LGE:hammerhead:Nexus 5)";
-     */
-    static public void setBlackList(String blackList) {
-        if (blackList != null) {
-            mBlackList = blackList;
-        }
-    }
-     /**
-     * Force using support lib runtime.
-     * Should be used before context create.
-     *
-     */
-    static public void forceCompat() {
-        sNative = 0;
-    }
-    /*
-     * We use a class initializer to allow the native code to cache some
-     * field offsets.
-     */
-    @SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"})
-    static boolean sInitialized;
-    static boolean sUseGCHooks;
-    static Object sRuntime;
-    static Method registerNativeAllocation;
-    static Method registerNativeFree;
-
-    static Object lock = new Object();
-
-    // Non-threadsafe functions.
-    native boolean nLoadSO(boolean useNative, int deviceApi, String libPath);
-    native boolean nLoadIOSO();
-    native long nDeviceCreate();
-    native void nDeviceDestroy(long dev);
-    native void nDeviceSetConfig(long dev, int param, int value);
-    native int nContextGetUserMessage(long con, int[] data);
-    native String nContextGetErrorMessage(long con);
-    native int  nContextPeekMessage(long con, int[] subID);
-    native void nContextInitToClient(long con);
-    native void nContextDeinitToClient(long con);
-
-    static private int sNative = -1;
-    static private int sSdkVersion = -1;
-    static private boolean useIOlib = false;
-    static private boolean useNative;
-
-    /*
-     * Context creation flag that specifies a normal context.
-     * RenderScript Support lib only support normal context.
-     */
-    public static final int CREATE_FLAG_NONE = 0x0000;
-
-    int getDispatchAPILevel() {
-        return mDispatchAPILevel;
-    }
-
-    boolean isUseNative() {
-        return useNative;
-    }
-    /*
-     * Detect the bitness of the VM to allow FieldPacker to do the right thing.
-     */
-    static native int rsnSystemGetPointerSize();
-    static int sPointerSize;
-
-    /**
-     * Determines whether or not we should be thunking into the native
-     * RenderScript layer or actually using the compatibility library.
-     */
-    static private boolean setupNative(int sdkVersion, Context ctx) {
-        // if targetSdkVersion is higher than the device api version, always use compat mode.
-        // Workaround for KK
-        if (android.os.Build.VERSION.SDK_INT < sdkVersion &&
-            android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {
-            sNative = 0;
-        }
-
-        if (sNative == -1) {
-
-            // get the value of the debug.rs.forcecompat property
-            int forcecompat = 0;
-            try {
-                Class<?> sysprop = Class.forName("android.os.SystemProperties");
-                Class[] signature = {String.class, Integer.TYPE};
-                Method getint = sysprop.getDeclaredMethod("getInt", signature);
-                Object[] args = {"debug.rs.forcecompat", new Integer(0)};
-                forcecompat = ((java.lang.Integer)getint.invoke(null, args)).intValue();
-            } catch (Exception e) {
-
-            }
-
-            if ((android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
-                     && forcecompat == 0) {
-                sNative = 1;
-            } else {
-                sNative = 0;
-            }
-
-
-            if (sNative == 1) {
-                // Workarounds that may disable thunking go here
-                ApplicationInfo info;
-                try {
-                    info = ctx.getPackageManager().getApplicationInfo(ctx.getPackageName(),
-                                                                      PackageManager.GET_META_DATA);
-                } catch (PackageManager.NameNotFoundException e) {
-                    // assume no workarounds needed
-                    return true;
-                }
-                long minorVersion = 0;
-
-                // load minorID from reflection
-                try {
-                    Class<?> javaRS = Class.forName("android.renderscript.RenderScript");
-                    Method getMinorID = javaRS.getDeclaredMethod("getMinorID");
-                    minorVersion = ((java.lang.Long)getMinorID.invoke(null)).longValue();
-                } catch (Exception e) {
-                    // minor version remains 0 on devices with no possible WARs
-                }
-
-                if (info.metaData != null) {
-                    // asynchronous teardown: minor version 1+
-                    if (info.metaData.getBoolean("com.android.support.v8.renderscript.EnableAsyncTeardown") == true) {
-                        if (minorVersion == 0) {
-                            sNative = 0;
-                        }
-                    }
-
-                    // blur issues on some drivers with 4.4
-                    if (info.metaData.getBoolean("com.android.support.v8.renderscript.EnableBlurWorkaround") == true) {
-                        if (android.os.Build.VERSION.SDK_INT <= 19) {
-                            //android.util.Log.e("rs", "war on");
-                            sNative = 0;
-                        }
-                    }
-                }
-                // end of workarounds
-            }
-        }
-
-        if (sNative == 1) {
-            // check against the blacklist
-            if (mBlackList.length() > 0) {
-                String deviceInfo = '(' +
-                                    android.os.Build.MANUFACTURER +
-                                    ':' +
-                                    android.os.Build.PRODUCT +
-                                    ':' +
-                                    android.os.Build.MODEL +
-                                    ')';
-                if (mBlackList.contains(deviceInfo)) {
-                    sNative = 0;
-                    return false;
-                }
-            }
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Name of the file that holds the object cache.
-     */
-    private static final String CACHE_PATH = "com.android.renderscript.cache";
-    static String mCachePath;
-
-     /**
-     * Sets the directory to use as a persistent storage for the
-     * renderscript object file cache.
-     *
-     * @hide
-     * @param cacheDir A directory the current process can write to
-     */
-    public static void setupDiskCache(File cacheDir) {
-        File f = new File(cacheDir, CACHE_PATH);
-        mCachePath = f.getAbsolutePath();
-        f.mkdirs();
-    }
-
-    /**
-     * ContextType specifies the specific type of context to be created.
-     *
-     */
-    public enum ContextType {
-        /**
-         * NORMAL context, this is the default and what shipping apps should
-         * use.
-         */
-        NORMAL (0),
-
-        /**
-         * DEBUG context, perform extra runtime checks to validate the
-         * kernels and APIs are being used as intended.  Get and SetElementAt
-         * will be bounds checked in this mode.
-         */
-        DEBUG (1),
-
-        /**
-         * PROFILE context, Intended to be used once the first time an
-         * application is run on a new device.  This mode allows the runtime to
-         * do additional testing and performance tuning.
-         */
-        PROFILE (2);
-
-        int mID;
-        ContextType(int id) {
-            mID = id;
-        }
-    }
-
-    ContextType mContextType;
-    // Methods below are wrapped to protect the non-threadsafe
-    // lockless fifo.
-
-    native long  rsnContextCreate(long dev, int ver, int sdkVer, int contextType, String nativeLibDir);
-    synchronized long nContextCreate(long dev, int ver, int sdkVer, int contextType, String nativeLibDir) {
-        return rsnContextCreate(dev, ver, sdkVer, contextType, nativeLibDir);
-    }
-    native void rsnContextDestroy(long con);
-    synchronized void nContextDestroy() {
-        validate();
-
-        // take teardown lock
-        // teardown lock can only be taken when no objects are being destroyed
-        ReentrantReadWriteLock.WriteLock wlock = mRWLock.writeLock();
-        wlock.lock();
-
-        long curCon = mContext;
-        // context is considered dead as of this point
-        mContext = 0;
-
-        wlock.unlock();
-        rsnContextDestroy(curCon);
-    }
-    native void rsnContextSetPriority(long con, int p);
-    synchronized void nContextSetPriority(int p) {
-        validate();
-        rsnContextSetPriority(mContext, p);
-    }
-    native void rsnContextDump(long con, int bits);
-    synchronized void nContextDump(int bits) {
-        validate();
-        rsnContextDump(mContext, bits);
-    }
-    native void rsnContextFinish(long con);
-    synchronized void nContextFinish() {
-        validate();
-        rsnContextFinish(mContext);
-    }
-
-    native void rsnContextSendMessage(long con, int id, int[] data);
-    synchronized void nContextSendMessage(int id, int[] data) {
-        validate();
-        rsnContextSendMessage(mContext, id, data);
-    }
-
-    // nObjDestroy is explicitly _not_ synchronous to prevent crashes in finalizers
-    native void rsnObjDestroy(long con, long id);
-    void nObjDestroy(long id) {
-        // There is a race condition here.  The calling code may be run
-        // by the gc while teardown is occuring.  This protects againts
-        // deleting dead objects.
-        if (mContext != 0) {
-            rsnObjDestroy(mContext, id);
-        }
-    }
-
-    native long  rsnElementCreate(long con, long type, int kind, boolean norm, int vecSize);
-    synchronized long nElementCreate(long type, int kind, boolean norm, int vecSize) {
-        validate();
-        return rsnElementCreate(mContext, type, kind, norm, vecSize);
-    }
-    native long  rsnElementCreate2(long con, long[] elements, String[] names, int[] arraySizes);
-    synchronized long nElementCreate2(long[] elements, String[] names, int[] arraySizes) {
-        validate();
-        return rsnElementCreate2(mContext, elements, names, arraySizes);
-    }
-    native void rsnElementGetNativeData(long con, long id, int[] elementData);
-    synchronized void nElementGetNativeData(long id, int[] elementData) {
-        validate();
-        rsnElementGetNativeData(mContext, id, elementData);
-    }
-    native void rsnElementGetSubElements(long con, long id,
-                                         long[] IDs, String[] names, int[] arraySizes);
-    synchronized void nElementGetSubElements(long id, long[] IDs, String[] names, int[] arraySizes) {
-        validate();
-        rsnElementGetSubElements(mContext, id, IDs, names, arraySizes);
-    }
-
-    native long rsnTypeCreate(long con, long eid, int x, int y, int z, boolean mips, boolean faces, int yuv);
-    synchronized long nTypeCreate(long eid, int x, int y, int z, boolean mips, boolean faces, int yuv) {
-        validate();
-        return rsnTypeCreate(mContext, eid, x, y, z, mips, faces, yuv);
-    }
-
-    native void rsnTypeGetNativeData(long con, long id, long[] typeData);
-    synchronized void nTypeGetNativeData(long id, long[] typeData) {
-        validate();
-        rsnTypeGetNativeData(mContext, id, typeData);
-    }
-
-    native long  rsnAllocationCreateTyped(long con, long type, int mip, int usage, long pointer);
-    synchronized long nAllocationCreateTyped(long type, int mip, int usage, long pointer) {
-        validate();
-        return rsnAllocationCreateTyped(mContext, type, mip, usage, pointer);
-    }
-    native long  rsnAllocationCreateFromBitmap(long con, long type, int mip, Bitmap bmp, int usage);
-    synchronized long nAllocationCreateFromBitmap(long type, int mip, Bitmap bmp, int usage) {
-        validate();
-        return rsnAllocationCreateFromBitmap(mContext, type, mip, bmp, usage);
-    }
-
-    native long  rsnAllocationCreateBitmapBackedAllocation(long con, long type, int mip, Bitmap bmp, int usage);
-    synchronized long nAllocationCreateBitmapBackedAllocation(long type, int mip, Bitmap bmp, int usage) {
-        validate();
-        return rsnAllocationCreateBitmapBackedAllocation(mContext, type, mip, bmp, usage);
-    }
-
-
-    native long  rsnAllocationCubeCreateFromBitmap(long con, long type, int mip, Bitmap bmp, int usage);
-    synchronized long nAllocationCubeCreateFromBitmap(long type, int mip, Bitmap bmp, int usage) {
-        validate();
-        return rsnAllocationCubeCreateFromBitmap(mContext, type, mip, bmp, usage);
-    }
-    native long  rsnAllocationCreateBitmapRef(long con, long type, Bitmap bmp);
-    synchronized long nAllocationCreateBitmapRef(long type, Bitmap bmp) {
-        validate();
-        return rsnAllocationCreateBitmapRef(mContext, type, bmp);
-    }
-    native long  rsnAllocationCreateFromAssetStream(long con, int mips, int assetStream, int usage);
-    synchronized long nAllocationCreateFromAssetStream(int mips, int assetStream, int usage) {
-        validate();
-        return rsnAllocationCreateFromAssetStream(mContext, mips, assetStream, usage);
-    }
-
-    native void  rsnAllocationCopyToBitmap(long con, long alloc, Bitmap bmp);
-    synchronized void nAllocationCopyToBitmap(long alloc, Bitmap bmp) {
-        validate();
-        rsnAllocationCopyToBitmap(mContext, alloc, bmp);
-    }
-
-
-    native void rsnAllocationSyncAll(long con, long alloc, int src);
-    synchronized void nAllocationSyncAll(long alloc, int src) {
-        validate();
-        rsnAllocationSyncAll(mContext, alloc, src);
-    }
-
-    native void rsnAllocationSetSurface(long con, long alloc, Surface sur);
-    synchronized void nAllocationSetSurface(long alloc, Surface sur) {
-        validate();
-        rsnAllocationSetSurface(mContext, alloc, sur);
-    }
-
-    native void rsnAllocationIoSend(long con, long alloc);
-    synchronized void nAllocationIoSend(long alloc) {
-        validate();
-        rsnAllocationIoSend(mContext, alloc);
-    }
-    native void rsnAllocationIoReceive(long con, long alloc);
-    synchronized void nAllocationIoReceive(long alloc) {
-        validate();
-        rsnAllocationIoReceive(mContext, alloc);
-    }
-    native ByteBuffer rsnAllocationGetByteBuffer(long con, long alloc, int xBytesSize, int dimY, int dimZ);
-    synchronized ByteBuffer nAllocationGetByteBuffer(long alloc, int xBytesSize, int dimY, int dimZ) {
-        validate();
-        return rsnAllocationGetByteBuffer(mContext, alloc, xBytesSize, dimY, dimZ);
-    }
-    native long rsnAllocationGetStride(long con, long alloc);
-    synchronized long nAllocationGetStride(long alloc) {
-        validate();
-        return rsnAllocationGetStride(mContext, alloc);
-    }
-
-    native void rsnAllocationGenerateMipmaps(long con, long alloc);
-    synchronized void nAllocationGenerateMipmaps(long alloc) {
-        validate();
-        rsnAllocationGenerateMipmaps(mContext, alloc);
-    }
-    native void  rsnAllocationCopyFromBitmap(long con, long alloc, Bitmap bmp);
-    synchronized void nAllocationCopyFromBitmap(long alloc, Bitmap bmp) {
-        validate();
-        rsnAllocationCopyFromBitmap(mContext, alloc, bmp);
-    }
-
-
-    native void rsnAllocationData1D(long con, long id, int off, int mip, int count, Object d, int sizeBytes, int dt,
-                                    int mSize, boolean usePadding);
-    synchronized void nAllocationData1D(long id, int off, int mip, int count, Object d, int sizeBytes, Element.DataType dt,
-                                        int mSize, boolean usePadding) {
-        validate();
-        rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes, dt.mID, mSize, usePadding);
-    }
-
-    native void rsnAllocationElementData1D(long con,long id, int xoff, int mip, int compIdx, byte[] d, int sizeBytes);
-    synchronized void nAllocationElementData1D(long id, int xoff, int mip, int compIdx, byte[] d, int sizeBytes) {
-        validate();
-        rsnAllocationElementData1D(mContext, id, xoff, mip, compIdx, d, sizeBytes);
-    }
-    /*
-    native void rsnAllocationElementData(long con,long id, int xoff, int yoff, int zoff, int mip, int compIdx, byte[] d, int sizeBytes);
-    synchronized void nAllocationElementData(long id, int xoff, int yoff, int zoff, int mip, int compIdx, byte[] d, int sizeBytes) {
-        validate();
-        rsnAllocationElementData(mContext, id, xoff, yoff, zoff, mip, compIdx, d, sizeBytes);
-    }
-    */
-
-    native void rsnAllocationData2D(long con,
-                                    long dstAlloc, int dstXoff, int dstYoff,
-                                    int dstMip, int dstFace,
-                                    int width, int height,
-                                    long srcAlloc, int srcXoff, int srcYoff,
-                                    int srcMip, int srcFace);
-    synchronized void nAllocationData2D(long dstAlloc, int dstXoff, int dstYoff,
-                                        int dstMip, int dstFace,
-                                        int width, int height,
-                                        long srcAlloc, int srcXoff, int srcYoff,
-                                        int srcMip, int srcFace) {
-        validate();
-        rsnAllocationData2D(mContext,
-                            dstAlloc, dstXoff, dstYoff,
-                            dstMip, dstFace,
-                            width, height,
-                            srcAlloc, srcXoff, srcYoff,
-                            srcMip, srcFace);
-    }
-
-    native void rsnAllocationData2D(long con, long id, int xoff, int yoff, int mip, int face,
-                                    int w, int h, Object d, int sizeBytes, int dt,
-                                    int mSize, boolean usePadding);
-    synchronized void nAllocationData2D(long id, int xoff, int yoff, int mip, int face,
-                                        int w, int h, Object d, int sizeBytes, Element.DataType dt,
-                                        int mSize, boolean usePadding) {
-        validate();
-        rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes, dt.mID, mSize, usePadding);
-    }
-
-    native void rsnAllocationData2D(long con, long id, int xoff, int yoff, int mip, int face, Bitmap b);
-    synchronized void nAllocationData2D(long id, int xoff, int yoff, int mip, int face, Bitmap b) {
-        validate();
-        rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, b);
-    }
-
-    native void rsnAllocationData3D(long con,
-                                    long dstAlloc, int dstXoff, int dstYoff, int dstZoff,
-                                    int dstMip,
-                                    int width, int height, int depth,
-                                    long srcAlloc, int srcXoff, int srcYoff, int srcZoff,
-                                    int srcMip);
-    synchronized void nAllocationData3D(long dstAlloc, int dstXoff, int dstYoff, int dstZoff,
-                                        int dstMip,
-                                        int width, int height, int depth,
-                                        long srcAlloc, int srcXoff, int srcYoff, int srcZoff,
-                                        int srcMip) {
-        validate();
-        rsnAllocationData3D(mContext,
-                            dstAlloc, dstXoff, dstYoff, dstZoff,
-                            dstMip, width, height, depth,
-                            srcAlloc, srcXoff, srcYoff, srcZoff, srcMip);
-    }
-
-
-    native void rsnAllocationData3D(long con, long id, int xoff, int yoff, int zoff, int mip,
-                                    int w, int h, int depth, Object d, int sizeBytes, int dt,
-                                    int mSize, boolean usePadding);
-    synchronized void nAllocationData3D(long id, int xoff, int yoff, int zoff, int mip,
-                                        int w, int h, int depth, Object d, int sizeBytes, Element.DataType dt,
-                                        int mSize, boolean usePadding) {
-        validate();
-        rsnAllocationData3D(mContext, id, xoff, yoff, zoff, mip, w, h, depth, d, sizeBytes,
-                            dt.mID, mSize, usePadding);
-    }
-
-    native void rsnAllocationRead(long con, long id, Object d, int dt, int mSize, boolean usePadding);
-    synchronized void nAllocationRead(long id, Object d, Element.DataType dt, int mSize, boolean usePadding) {
-        validate();
-        rsnAllocationRead(mContext, id, d, dt.mID, mSize, usePadding);
-    }
-
-    native void rsnAllocationRead1D(long con, long id, int off, int mip, int count, Object d,
-                                    int sizeBytes, int dt, int mSize, boolean usePadding);
-    synchronized void nAllocationRead1D(long id, int off, int mip, int count, Object d,
-                                        int sizeBytes, Element.DataType dt, int mSize, boolean usePadding) {
-        validate();
-        rsnAllocationRead1D(mContext, id, off, mip, count, d, sizeBytes, dt.mID, mSize, usePadding);
-    }
-
-    /*
-    native void rsnAllocationElementRead(long con,long id, int xoff, int yoff, int zoff,
-                                         int mip, int compIdx, byte[] d, int sizeBytes);
-    synchronized void nAllocationElementRead(long id, int xoff, int yoff, int zoff,
-                                             int mip, int compIdx, byte[] d, int sizeBytes) {
-        validate();
-        rsnAllocationElementRead(mContext, id, xoff, yoff, zoff, mip, compIdx, d, sizeBytes);
-    }
-    */
-
-    native void rsnAllocationRead2D(long con, long id, int xoff, int yoff, int mip, int face,
-                                    int w, int h, Object d, int sizeBytes, int dt,
-                                    int mSize, boolean usePadding);
-    synchronized void nAllocationRead2D(long id, int xoff, int yoff, int mip, int face,
-                                        int w, int h, Object d, int sizeBytes, Element.DataType dt,
-                                        int mSize, boolean usePadding) {
-        validate();
-        rsnAllocationRead2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes, dt.mID, mSize, usePadding);
-    }
-
-    /*
-    native void rsnAllocationRead3D(long con, long id, int xoff, int yoff, int zoff, int mip,
-                                    int w, int h, int depth, Object d, int sizeBytes, int dt,
-                                    int mSize, boolean usePadding);
-    synchronized void nAllocationRead3D(long id, int xoff, int yoff, int zoff, int mip,
-                                        int w, int h, int depth, Object d, int sizeBytes, Element.DataType dt,
-                                        int mSize, boolean usePadding) {
-        validate();
-        rsnAllocationRead3D(mContext, id, xoff, yoff, zoff, mip, w, h, depth, d, sizeBytes, dt.mID, mSize, usePadding);
-    }
-    */
-
-    native long  rsnAllocationGetType(long con, long id);
-    synchronized long nAllocationGetType(long id) {
-        validate();
-        return rsnAllocationGetType(mContext, id);
-    }
-
-    native void rsnAllocationResize1D(long con, long id, int dimX);
-    synchronized void nAllocationResize1D(long id, int dimX) {
-        validate();
-        rsnAllocationResize1D(mContext, id, dimX);
-    }
-    native void rsnAllocationResize2D(long con, long id, int dimX, int dimY);
-    synchronized void nAllocationResize2D(long id, int dimX, int dimY) {
-        validate();
-        rsnAllocationResize2D(mContext, id, dimX, dimY);
-    }
-
-    native void rsnScriptBindAllocation(long con, long script, long alloc, int slot, boolean mUseInc);
-    synchronized void nScriptBindAllocation(long script, long alloc, int slot, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptBindAllocation(curCon, script, alloc, slot, mUseInc);
-    }
-    native void rsnScriptSetTimeZone(long con, long script, byte[] timeZone, boolean mUseInc);
-    synchronized void nScriptSetTimeZone(long script, byte[] timeZone, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptSetTimeZone(curCon, script, timeZone, mUseInc);
-    }
-    native void rsnScriptInvoke(long con, long id, int slot, boolean mUseInc);
-    synchronized void nScriptInvoke(long id, int slot, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptInvoke(curCon, id, slot, mUseInc);
-    }
-    native void rsnScriptForEach(long con, long incCon, long id, int slot, long ain, long aout, byte[] params, boolean mUseInc);
-    native void rsnScriptForEach(long con, long incCon, long id, int slot, long ain, long aout, boolean mUseInc);
-    native void rsnScriptForEachClipped(long con, long incCon, long id, int slot, long ain, long aout, byte[] params,
-                                        int xstart, int xend, int ystart, int yend, int zstart, int zend, boolean mUseInc);
-    native void rsnScriptForEachClipped(long con, long incCon, long id, int slot, long ain, long aout,
-                                        int xstart, int xend, int ystart, int yend, int zstart, int zend, boolean mUseInc);
-    synchronized void nScriptForEach(long id, int slot, long ain, long aout, byte[] params, boolean mUseInc) {
-        validate();
-        if (params == null) {
-            rsnScriptForEach(mContext, mIncCon, id, slot, ain, aout, mUseInc);
-        } else {
-            rsnScriptForEach(mContext, mIncCon, id, slot, ain, aout, params, mUseInc);
-        }
-    }
-
-    synchronized void nScriptForEachClipped(long id, int slot, long ain, long aout, byte[] params,
-                                            int xstart, int xend, int ystart, int yend, int zstart, int zend, boolean mUseInc) {
-        validate();
-        if (params == null) {
-            rsnScriptForEachClipped(mContext, mIncCon, id, slot, ain, aout, xstart, xend, ystart, yend, zstart, zend, mUseInc);
-        } else {
-            rsnScriptForEachClipped(mContext, mIncCon, id, slot, ain, aout, params, xstart, xend, ystart, yend, zstart, zend, mUseInc);
-        }
-    }
-
-    native void rsnScriptForEach(long con, long id, int slot, long[] ains,
-                                 long aout, byte[] params, int[] limits);
-
-    synchronized void nScriptForEach(long id, int slot, long[] ains, long aout,
-                                     byte[] params, int[] limits) {
-        if (!mEnableMultiInput) {
-            Log.e(LOG_TAG, "Multi-input kernels are not supported, please change targetSdkVersion to >= 23");
-            throw new RSRuntimeException("Multi-input kernels are not supported before API 23)");
-        }
-        validate();
-        rsnScriptForEach(mContext, id, slot, ains, aout, params, limits);
-    }
-
-    native void rsnScriptReduce(long con, long id, int slot, long[] ains,
-                                long aout, int[] limits);
-    synchronized void nScriptReduce(long id, int slot, long ains[], long aout,
-                                    int[] limits) {
-        validate();
-        rsnScriptReduce(mContext, id, slot, ains, aout, limits);
-    }
-
-    native void rsnScriptInvokeV(long con, long id, int slot, byte[] params, boolean mUseInc);
-    synchronized void nScriptInvokeV(long id, int slot, byte[] params, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptInvokeV(curCon, id, slot, params, mUseInc);
-    }
-    native void rsnScriptSetVarI(long con, long id, int slot, int val, boolean mUseInc);
-    synchronized void nScriptSetVarI(long id, int slot, int val, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptSetVarI(curCon, id, slot, val, mUseInc);
-    }
-    native void rsnScriptSetVarJ(long con, long id, int slot, long val, boolean mUseInc);
-    synchronized void nScriptSetVarJ(long id, int slot, long val, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptSetVarJ(curCon, id, slot, val, mUseInc);
-    }
-    native void rsnScriptSetVarF(long con, long id, int slot, float val, boolean mUseInc);
-    synchronized void nScriptSetVarF(long id, int slot, float val, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptSetVarF(curCon, id, slot, val, mUseInc);
-    }
-    native void rsnScriptSetVarD(long con, long id, int slot, double val, boolean mUseInc);
-    synchronized void nScriptSetVarD(long id, int slot, double val, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptSetVarD(curCon, id, slot, val, mUseInc);
-    }
-    native void rsnScriptSetVarV(long con, long id, int slot, byte[] val, boolean mUseInc);
-    synchronized void nScriptSetVarV(long id, int slot, byte[] val, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptSetVarV(curCon, id, slot, val, mUseInc);
-    }
-    native void rsnScriptSetVarVE(long con, long id, int slot, byte[] val,
-                                  long e, int[] dims, boolean mUseInc);
-    synchronized void nScriptSetVarVE(long id, int slot, byte[] val,
-                                      long e, int[] dims, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptSetVarVE(curCon, id, slot, val, e, dims, mUseInc);
-    }
-    native void rsnScriptSetVarObj(long con, long id, int slot, long val, boolean mUseInc);
-    synchronized void nScriptSetVarObj(long id, int slot, long val, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        rsnScriptSetVarObj(curCon, id, slot, val, mUseInc);
-    }
-
-    native long  rsnScriptCCreate(long con, String resName, String cacheDir,
-                                 byte[] script, int length);
-    synchronized long nScriptCCreate(String resName, String cacheDir, byte[] script, int length) {
-        validate();
-        return rsnScriptCCreate(mContext, resName, cacheDir, script, length);
-    }
-
-    native long  rsnScriptIntrinsicCreate(long con, int id, long eid, boolean mUseInc);
-    synchronized long nScriptIntrinsicCreate(int id, long eid, boolean mUseInc) {
-        validate();
-        if (mUseInc) {
-            if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {
-                Log.e(LOG_TAG, "Incremental Intrinsics are not supported, please change targetSdkVersion to >= 21");
-                throw new RSRuntimeException("Incremental Intrinsics are not supported before Lollipop (API 21)");
-            }
-
-            if (!mIncLoaded) {
-                try {
-                    System.loadLibrary("RSSupport");
-                } catch (UnsatisfiedLinkError e) {
-                    Log.e(LOG_TAG, "Error loading RS Compat library for Incremental Intrinsic Support: " + e);
-                    throw new RSRuntimeException("Error loading RS Compat library for Incremental Intrinsic Support: " + e);
-                }
-                if (!nIncLoadSO(SUPPORT_LIB_API, mNativeLibDir + "/libRSSupport.so")) {
-                    throw new RSRuntimeException("Error loading libRSSupport library for Incremental Intrinsic Support");
-                }
-                mIncLoaded = true;
-            }
-            if (mIncCon == 0) {
-                //Create a dummy compat context (synchronous).
-                long device = nIncDeviceCreate();
-                mIncCon = nIncContextCreate(device, 0, 0, 0);
-            }
-            return rsnScriptIntrinsicCreate(mIncCon, id, eid, mUseInc);
-        } else {
-            return rsnScriptIntrinsicCreate(mContext, id, eid, mUseInc);
-        }
-    }
-
-    native long  rsnScriptKernelIDCreate(long con, long sid, int slot, int sig, boolean mUseInc);
-    synchronized long nScriptKernelIDCreate(long sid, int slot, int sig, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        return rsnScriptKernelIDCreate(curCon, sid, slot, sig, mUseInc);
-    }
-
-    native long  rsnScriptInvokeIDCreate(long con, long sid, int slot);
-    synchronized long nScriptInvokeIDCreate(long sid, int slot) {
-        validate();
-        return rsnScriptInvokeIDCreate(mContext, sid, slot);
-    }
-
-    native long  rsnScriptFieldIDCreate(long con, long sid, int slot, boolean mUseInc);
-    synchronized long nScriptFieldIDCreate(long sid, int slot, boolean mUseInc) {
-        validate();
-        long curCon = mContext;
-        if (mUseInc) {
-            curCon = mIncCon;
-        }
-        return rsnScriptFieldIDCreate(curCon, sid, slot, mUseInc);
-    }
-
-    native long  rsnScriptGroupCreate(long con, long[] kernels, long[] src, long[] dstk, long[] dstf, long[] types);
-    synchronized long nScriptGroupCreate(long[] kernels, long[] src, long[] dstk, long[] dstf, long[] types) {
-        validate();
-        return rsnScriptGroupCreate(mContext, kernels, src, dstk, dstf, types);
-    }
-
-    native void rsnScriptGroupSetInput(long con, long group, long kernel, long alloc);
-    synchronized void nScriptGroupSetInput(long group, long kernel, long alloc) {
-        validate();
-        rsnScriptGroupSetInput(mContext, group, kernel, alloc);
-    }
-
-    native void rsnScriptGroupSetOutput(long con, long group, long kernel, long alloc);
-    synchronized void nScriptGroupSetOutput(long group, long kernel, long alloc) {
-        validate();
-        rsnScriptGroupSetOutput(mContext, group, kernel, alloc);
-    }
-
-    native void rsnScriptGroupExecute(long con, long group);
-    synchronized void nScriptGroupExecute(long group) {
-        validate();
-        rsnScriptGroupExecute(mContext, group);
-    }
-
-    native long  rsnSamplerCreate(long con, int magFilter, int minFilter,
-                                 int wrapS, int wrapT, int wrapR, float aniso);
-    synchronized long nSamplerCreate(int magFilter, int minFilter,
-                                 int wrapS, int wrapT, int wrapR, float aniso) {
-        validate();
-        return rsnSamplerCreate(mContext, magFilter, minFilter, wrapS, wrapT, wrapR, aniso);
-    }
-
-// entry points for ScriptGroup2
-    native long rsnClosureCreate(long con, long kernelID, long returnValue,
-        long[] fieldIDs, long[] values, int[] sizes, long[] depClosures,
-        long[] depFieldIDs);
-    synchronized long nClosureCreate(long kernelID, long returnValue,
-        long[] fieldIDs, long[] values, int[] sizes, long[] depClosures,
-        long[] depFieldIDs) {
-      validate();
-      long c = rsnClosureCreate(mContext, kernelID, returnValue, fieldIDs, values,
-          sizes, depClosures, depFieldIDs);
-      if (c == 0) {
-          throw new RSRuntimeException("Failed creating closure.");
-      }
-      return c;
-    }
-
-    native long rsnInvokeClosureCreate(long con, long invokeID, byte[] params,
-        long[] fieldIDs, long[] values, int[] sizes);
-    synchronized long nInvokeClosureCreate(long invokeID, byte[] params,
-        long[] fieldIDs, long[] values, int[] sizes) {
-      validate();
-      long c = rsnInvokeClosureCreate(mContext, invokeID, params, fieldIDs,
-          values, sizes);
-      if (c == 0) {
-          throw new RSRuntimeException("Failed creating closure.");
-      }
-      return c;
-    }
-
-    native void rsnClosureSetArg(long con, long closureID, int index,
-      long value, int size);
-    synchronized void nClosureSetArg(long closureID, int index, long value,
-        int size) {
-      validate();
-      rsnClosureSetArg(mContext, closureID, index, value, size);
-    }
-
-    native void rsnClosureSetGlobal(long con, long closureID, long fieldID,
-        long value, int size);
-    // Does this have to be synchronized?
-    synchronized void nClosureSetGlobal(long closureID, long fieldID,
-        long value, int size) {
-      validate(); // TODO: is this necessary?
-      rsnClosureSetGlobal(mContext, closureID, fieldID, value, size);
-    }
-
-    native long rsnScriptGroup2Create(long con, String name, String cachePath,
-                                      long[] closures);
-    synchronized long nScriptGroup2Create(String name, String cachePath,
-                                          long[] closures) {
-      validate();
-      return rsnScriptGroup2Create(mContext, name, cachePath, closures);
-    }
-
-    native void rsnScriptGroup2Execute(long con, long groupID);
-    synchronized void nScriptGroup2Execute(long groupID) {
-      validate();
-      rsnScriptGroup2Execute(mContext, groupID);
-    }
-
-    native void rsnScriptIntrinsicBLAS_Single(long con, long incCon, long id, int func, int TransA,
-                                              int TransB, int Side, int Uplo, int Diag, int M, int N, int K,
-                                              float alpha, long A, long B, float beta, long C, int incX, int incY,
-                                              int KL, int KU, boolean mUseInc);
-    synchronized void nScriptIntrinsicBLAS_Single(long id, int func, int TransA,
-                                                  int TransB, int Side, int Uplo, int Diag, int M, int N, int K,
-                                                  float alpha, long A, long B, float beta, long C, int incX, int incY,
-                                                  int KL, int KU, boolean mUseInc) {
-        validate();
-        rsnScriptIntrinsicBLAS_Single(mContext, mIncCon, id, func, TransA, TransB, Side, Uplo, Diag, M, N, K, alpha, A, B, beta, C, incX, incY, KL, KU, mUseInc);
-    }
-
-    native void rsnScriptIntrinsicBLAS_Double(long con, long incCon, long id, int func, int TransA,
-                                              int TransB, int Side, int Uplo, int Diag, int M, int N, int K,
-                                              double alpha, long A, long B, double beta, long C, int incX, int incY,
-                                              int KL, int KU, boolean mUseInc);
-    synchronized void nScriptIntrinsicBLAS_Double(long id, int func, int TransA,
-                                                  int TransB, int Side, int Uplo, int Diag, int M, int N, int K,
-                                                  double alpha, long A, long B, double beta, long C, int incX, int incY,
-                                                  int KL, int KU, boolean mUseInc) {
-        validate();
-        rsnScriptIntrinsicBLAS_Double(mContext, mIncCon, id, func, TransA, TransB, Side, Uplo, Diag, M, N, K, alpha, A, B, beta, C, incX, incY, KL, KU, mUseInc);
-    }
-
-    native void rsnScriptIntrinsicBLAS_Complex(long con, long incCon, long id, int func, int TransA,
-                                               int TransB, int Side, int Uplo, int Diag, int M, int N, int K,
-                                               float alphaX, float alphaY, long A, long B, float betaX, float betaY, long C, int incX, int incY,
-                                               int KL, int KU, boolean mUseInc);
-    synchronized void nScriptIntrinsicBLAS_Complex(long id, int func, int TransA,
-                                                   int TransB, int Side, int Uplo, int Diag, int M, int N, int K,
-                                                   float alphaX, float alphaY, long A, long B, float betaX, float betaY, long C, int incX, int incY,
-                                                   int KL, int KU, boolean mUseInc) {
-        validate();
-        rsnScriptIntrinsicBLAS_Complex(mContext, mIncCon, id, func, TransA, TransB, Side, Uplo, Diag, M, N, K, alphaX, alphaY, A, B, betaX, betaY, C, incX, incY, KL, KU, mUseInc);
-    }
-
-    native void rsnScriptIntrinsicBLAS_Z(long con, long incCon, long id, int func, int TransA,
-                                         int TransB, int Side, int Uplo, int Diag, int M, int N, int K,
-                                         double alphaX, double alphaY, long A, long B, double betaX, double betaY, long C, int incX, int incY,
-                                         int KL, int KU, boolean mUseInc);
-    synchronized void nScriptIntrinsicBLAS_Z(long id, int func, int TransA,
-                                             int TransB, int Side, int Uplo, int Diag, int M, int N, int K,
-                                             double alphaX, double alphaY, long A, long B, double betaX, double betaY, long C, int incX, int incY,
-                                             int KL, int KU, boolean mUseInc) {
-        validate();
-        rsnScriptIntrinsicBLAS_Z(mContext, mIncCon, id, func, TransA, TransB, Side, Uplo, Diag, M, N, K, alphaX, alphaY, A, B, betaX, betaY, C, incX, incY, KL, KU, mUseInc);
-    }
-
-    native void rsnScriptIntrinsicBLAS_BNNM(long con, long incCon, long id, int M, int N, int K,
-                                             long A, int a_offset, long B, int b_offset, long C, int c_offset,
-                                             int c_mult_int, boolean mUseInc);
-    synchronized void nScriptIntrinsicBLAS_BNNM(long id, int M, int N, int K,
-                                             long A, int a_offset, long B, int b_offset, long C, int c_offset,
-                                             int c_mult_int, boolean mUseInc) {
-        validate();
-        rsnScriptIntrinsicBLAS_BNNM(mContext, mIncCon, id, M, N, K, A, a_offset, B, b_offset, C, c_offset, c_mult_int, mUseInc);
-    }
-
-// Additional Entry points For inc libRSSupport
-
-    native boolean nIncLoadSO(int deviceApi, String libPath);
-    native long nIncDeviceCreate();
-    native void nIncDeviceDestroy(long dev);
-    // Methods below are wrapped to protect the non-threadsafe
-    // lockless fifo.
-    native long  rsnIncContextCreate(long dev, int ver, int sdkVer, int contextType);
-    synchronized long nIncContextCreate(long dev, int ver, int sdkVer, int contextType) {
-        return rsnIncContextCreate(dev, ver, sdkVer, contextType);
-    }
-    native void rsnIncContextDestroy(long con);
-    synchronized void nIncContextDestroy() {
-        validate();
-
-        // take teardown lock
-        // teardown lock can only be taken when no objects are being destroyed
-        ReentrantReadWriteLock.WriteLock wlock = mRWLock.writeLock();
-        wlock.lock();
-
-        long curCon = mIncCon;
-        // context is considered dead as of this point
-        mIncCon = 0;
-
-        wlock.unlock();
-        rsnIncContextDestroy(curCon);
-    }
-
-    native void rsnIncContextFinish(long con);
-    synchronized void nIncContextFinish() {
-        validate();
-        rsnIncContextFinish(mIncCon);
-    }
-
-    native void rsnIncObjDestroy(long con, long id);
-    void nIncObjDestroy(long id) {
-        // There is a race condition here.  The calling code may be run
-        // by the gc while teardown is occuring.  This protects againts
-        // deleting dead objects.
-        if (mIncCon != 0) {
-            rsnIncObjDestroy(mIncCon, id);
-        }
-    }
-    native long  rsnIncElementCreate(long con, long type, int kind, boolean norm, int vecSize);
-    synchronized long nIncElementCreate(long type, int kind, boolean norm, int vecSize) {
-        validate();
-        return rsnIncElementCreate(mIncCon, type, kind, norm, vecSize);
-    }
-    native long rsnIncTypeCreate(long con, long eid, int x, int y, int z, boolean mips, boolean faces, int yuv);
-    synchronized long nIncTypeCreate(long eid, int x, int y, int z, boolean mips, boolean faces, int yuv) {
-        validate();
-        return rsnIncTypeCreate(mIncCon, eid, x, y, z, mips, faces, yuv);
-    }
-    native long  rsnIncAllocationCreateTyped(long con, long incCon, long alloc, long type, int xBytesSize);
-    synchronized long nIncAllocationCreateTyped(long alloc, long type, int xBytesSize) {
-        validate();
-        return rsnIncAllocationCreateTyped(mContext, mIncCon, alloc, type, xBytesSize);
-    }
-
-    long     mContext;
-    private boolean mDestroyed = false;
-    //Dummy device & context for Inc Support Lib
-    long     mIncCon;
-    //indicator of whether inc support lib has been loaded or not.
-    boolean  mIncLoaded;
-    ReentrantReadWriteLock mRWLock;
-    @SuppressWarnings({"FieldCanBeLocal"})
-    MessageThread mMessageThread;
-
-    Element mElement_U8;
-    Element mElement_I8;
-    Element mElement_U16;
-    Element mElement_I16;
-    Element mElement_U32;
-    Element mElement_I32;
-    Element mElement_U64;
-    Element mElement_I64;
-    Element mElement_F32;
-    Element mElement_F64;
-    Element mElement_BOOLEAN;
-
-    Element mElement_ELEMENT;
-    Element mElement_TYPE;
-    Element mElement_ALLOCATION;
-    Element mElement_SAMPLER;
-    Element mElement_SCRIPT;
-
-    Element mElement_A_8;
-    Element mElement_RGB_565;
-    Element mElement_RGB_888;
-    Element mElement_RGBA_5551;
-    Element mElement_RGBA_4444;
-    Element mElement_RGBA_8888;
-
-    Element mElement_FLOAT_2;
-    Element mElement_FLOAT_3;
-    Element mElement_FLOAT_4;
-
-    Element mElement_DOUBLE_2;
-    Element mElement_DOUBLE_3;
-    Element mElement_DOUBLE_4;
-
-    Element mElement_UCHAR_2;
-    Element mElement_UCHAR_3;
-    Element mElement_UCHAR_4;
-
-    Element mElement_CHAR_2;
-    Element mElement_CHAR_3;
-    Element mElement_CHAR_4;
-
-    Element mElement_USHORT_2;
-    Element mElement_USHORT_3;
-    Element mElement_USHORT_4;
-
-    Element mElement_SHORT_2;
-    Element mElement_SHORT_3;
-    Element mElement_SHORT_4;
-
-    Element mElement_UINT_2;
-    Element mElement_UINT_3;
-    Element mElement_UINT_4;
-
-    Element mElement_INT_2;
-    Element mElement_INT_3;
-    Element mElement_INT_4;
-
-    Element mElement_ULONG_2;
-    Element mElement_ULONG_3;
-    Element mElement_ULONG_4;
-
-    Element mElement_LONG_2;
-    Element mElement_LONG_3;
-    Element mElement_LONG_4;
-
-    Element mElement_MATRIX_4X4;
-    Element mElement_MATRIX_3X3;
-    Element mElement_MATRIX_2X2;
-
-    Sampler mSampler_CLAMP_NEAREST;
-    Sampler mSampler_CLAMP_LINEAR;
-    Sampler mSampler_CLAMP_LINEAR_MIP_LINEAR;
-    Sampler mSampler_WRAP_NEAREST;
-    Sampler mSampler_WRAP_LINEAR;
-    Sampler mSampler_WRAP_LINEAR_MIP_LINEAR;
-    Sampler mSampler_MIRRORED_REPEAT_NEAREST;
-    Sampler mSampler_MIRRORED_REPEAT_LINEAR;
-    Sampler mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR;
-
-
-    ///////////////////////////////////////////////////////////////////////////////////
-    //
-
-    /**
-     * The base class from which an application should derive in order
-     * to receive RS messages from scripts. When a script calls {@code
-     * rsSendToClient}, the data fields will be filled, and the run
-     * method will be called on a separate thread.  This will occur
-     * some time after {@code rsSendToClient} completes in the script,
-     * as {@code rsSendToClient} is asynchronous. Message handlers are
-     * not guaranteed to have completed when {@link
-     * android.support.v8.renderscript.RenderScript#finish} returns.
-     *
-     */
-    public static class RSMessageHandler implements Runnable {
-        protected int[] mData;
-        protected int mID;
-        protected int mLength;
-        public void run() {
-        }
-    }
-    /**
-     * If an application is expecting messages, it should set this
-     * field to an instance of {@link RSMessageHandler}.  This
-     * instance will receive all the user messages sent from {@code
-     * sendToClient} by scripts from this context.
-     *
-     */
-    RSMessageHandler mMessageCallback = null;
-
-    public void setMessageHandler(RSMessageHandler msg) {
-        mMessageCallback = msg;
-    }
-    public RSMessageHandler getMessageHandler() {
-        return mMessageCallback;
-    }
-
-    /**
-     * Place a message into the message queue to be sent back to the message
-     * handler once all previous commands have been executed.
-     *
-     * @param id
-     * @param data
-     */
-    public void sendMessage(int id, int[] data) {
-        nContextSendMessage(id, data);
-    }
-
-    /**
-     * The runtime error handler base class.  An application should derive from this class
-     * if it wishes to install an error handler.  When errors occur at runtime,
-     * the fields in this class will be filled, and the run method will be called.
-     *
-     */
-    public static class RSErrorHandler implements Runnable {
-        protected String mErrorMessage;
-        protected int mErrorNum;
-        public void run() {
-        }
-    }
-
-    /**
-     * Application Error handler.  All runtime errors will be dispatched to the
-     * instance of RSAsyncError set here.  If this field is null a
-     * {@link RSRuntimeException} will instead be thrown with details about the error.
-     * This will cause program termaination.
-     *
-     */
-    RSErrorHandler mErrorCallback = null;
-
-    public void setErrorHandler(RSErrorHandler msg) {
-        mErrorCallback = msg;
-    }
-    public RSErrorHandler getErrorHandler() {
-        return mErrorCallback;
-    }
-
-    /**
-     * RenderScript worker thread priority enumeration.  The default value is
-     * NORMAL.  Applications wishing to do background processing should set
-     * their priority to LOW to avoid starving forground processes.
-     */
-    public enum Priority {
-        LOW (Process.THREAD_PRIORITY_BACKGROUND + (5 * Process.THREAD_PRIORITY_LESS_FAVORABLE)),
-        NORMAL (Process.THREAD_PRIORITY_DISPLAY);
-
-        int mID;
-        Priority(int id) {
-            mID = id;
-        }
-    }
-
-    void validateObject(BaseObj o) {
-        if (o != null) {
-            if (o.mRS != this) {
-                throw new RSIllegalArgumentException("Attempting to use an object across contexts.");
-            }
-        }
-    }
-
-    void validate() {
-        if (mContext == 0) {
-            throw new RSInvalidStateException("Calling RS with no Context active.");
-        }
-    }
-
-    /**
-     * check if IO support lib is available.
-     */
-    boolean usingIO() {
-        return useIOlib;
-    }
-    /**
-     * Change the priority of the worker threads for this context.
-     *
-     * @param p New priority to be set.
-     */
-    public void setPriority(Priority p) {
-        validate();
-        nContextSetPriority(p.mID);
-    }
-
-    static class MessageThread extends Thread {
-        RenderScript mRS;
-        boolean mRun = true;
-        int[] mAuxData = new int[2];
-
-        static final int RS_MESSAGE_TO_CLIENT_NONE = 0;
-        static final int RS_MESSAGE_TO_CLIENT_EXCEPTION = 1;
-        static final int RS_MESSAGE_TO_CLIENT_RESIZE = 2;
-        static final int RS_MESSAGE_TO_CLIENT_ERROR = 3;
-
-        static final int RS_MESSAGE_TO_CLIENT_USER = 4;
-        static final int RS_ERROR_FATAL_UNKNOWN = 0x1000;
-
-        MessageThread(RenderScript rs) {
-            super("RSMessageThread");
-            mRS = rs;
-
-        }
-
-        public void run() {
-            // This function is a temporary solution.  The final solution will
-            // used typed allocations where the message id is the type indicator.
-            int[] rbuf = new int[16];
-            mRS.nContextInitToClient(mRS.mContext);
-            while(mRun) {
-                rbuf[0] = 0;
-                int msg = mRS.nContextPeekMessage(mRS.mContext, mAuxData);
-                int size = mAuxData[1];
-                int subID = mAuxData[0];
-
-                if (msg == RS_MESSAGE_TO_CLIENT_USER) {
-                    if ((size>>2) >= rbuf.length) {
-                        rbuf = new int[(size + 3) >> 2];
-                    }
-                    if (mRS.nContextGetUserMessage(mRS.mContext, rbuf) !=
-                        RS_MESSAGE_TO_CLIENT_USER) {
-                        throw new RSDriverException("Error processing message from RenderScript.");
-                    }
-
-                    if(mRS.mMessageCallback != null) {
-                        mRS.mMessageCallback.mData = rbuf;
-                        mRS.mMessageCallback.mID = subID;
-                        mRS.mMessageCallback.mLength = size;
-                        mRS.mMessageCallback.run();
-                    } else {
-                        throw new RSInvalidStateException("Received a message from the script with no message handler installed.");
-                    }
-                    continue;
-                }
-
-                if (msg == RS_MESSAGE_TO_CLIENT_ERROR) {
-                    String e = mRS.nContextGetErrorMessage(mRS.mContext);
-
-                    if (subID >= RS_ERROR_FATAL_UNKNOWN) {
-                        throw new RSRuntimeException("Fatal error " + subID + ", details: " + e);
-                    }
-
-                    if(mRS.mErrorCallback != null) {
-                        mRS.mErrorCallback.mErrorMessage = e;
-                        mRS.mErrorCallback.mErrorNum = subID;
-                        mRS.mErrorCallback.run();
-                    } else {
-                        android.util.Log.e(LOG_TAG, "non fatal RS error, " + e);
-                        // Do not throw here. In these cases, we do not have
-                        // a fatal error.
-                    }
-                    continue;
-                }
-
-                // 2: teardown.
-                // But we want to avoid starving other threads during
-                // teardown by yielding until the next line in the destructor
-                // can execute to set mRun = false
-                try {
-                    sleep(1, 0);
-                } catch(InterruptedException e) {
-                }
-            }
-            //Log.d(LOG_TAG, "MessageThread exiting.");
-        }
-    }
-
-    RenderScript(Context ctx) {
-        mContextType = ContextType.NORMAL;
-        if (ctx != null) {
-            mApplicationContext = ctx.getApplicationContext();
-            // Only set mNativeLibDir for API 9+.
-            mNativeLibDir = mApplicationContext.getApplicationInfo().nativeLibraryDir;
-        }
-        mIncCon = 0;
-        mIncLoaded = false;
-        mRWLock = new ReentrantReadWriteLock();
-    }
-
-    /**
-     * Gets the application context associated with the RenderScript context.
-     *
-     * @return The application context.
-     */
-    public final Context getApplicationContext() {
-        return mApplicationContext;
-    }
-
-    /**
-     * Create a RenderScript context.
-     *
-     * @param ctx The context.
-     * @return RenderScript
-     */
-    private static RenderScript internalCreate(Context ctx, int sdkVersion, ContextType ct, int flags) {
-        RenderScript rs = new RenderScript(ctx);
-
-        if (sSdkVersion == -1) {
-            sSdkVersion = sdkVersion;
-        } else if (sSdkVersion != sdkVersion) {
-            throw new RSRuntimeException("Can't have two contexts with different SDK versions in support lib");
-        }
-        useNative = setupNative(sSdkVersion, ctx);
-        synchronized(lock) {
-            if (sInitialized == false) {
-                try {
-                    Class<?> vm_runtime = Class.forName("dalvik.system.VMRuntime");
-                    Method get_runtime = vm_runtime.getDeclaredMethod("getRuntime");
-                    sRuntime = get_runtime.invoke(null);
-                    registerNativeAllocation = vm_runtime.getDeclaredMethod("registerNativeAllocation", Integer.TYPE);
-                    registerNativeFree = vm_runtime.getDeclaredMethod("registerNativeFree", Integer.TYPE);
-                    sUseGCHooks = true;
-                } catch (Exception e) {
-                    Log.e(LOG_TAG, "No GC methods");
-                    sUseGCHooks = false;
-                }
-                try {
-                    // For API 9 - 22, always use the absolute path of librsjni.so
-                    // http://b/25226912
-                    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M &&
-                        rs.mNativeLibDir != null) {
-                        System.load(rs.mNativeLibDir + "/librsjni.so");
-                    } else {
-                        System.loadLibrary("rsjni");
-                    }
-                    sInitialized = true;
-                    sPointerSize = rsnSystemGetPointerSize();
-                } catch (UnsatisfiedLinkError e) {
-                    Log.e(LOG_TAG, "Error loading RS jni library: " + e);
-                    throw new RSRuntimeException("Error loading RS jni library: " + e + " Support lib API: " + SUPPORT_LIB_VERSION);
-                }
-            }
-        }
-
-        if (useNative) {
-            android.util.Log.v(LOG_TAG, "RS native mode");
-        } else {
-            android.util.Log.v(LOG_TAG, "RS compat mode");
-        }
-
-        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
-            useIOlib = true;
-        }
-
-        // The target API level used to init dispatchTable.
-        int dispatchAPI = sdkVersion;
-        if (sdkVersion < android.os.Build.VERSION.SDK_INT) {
-            // If the device API is higher than target API level, init dispatch table based on device API.
-            dispatchAPI = android.os.Build.VERSION.SDK_INT;
-        }
-
-        String rssupportPath = null;
-        // For API 9 - 22, always use the absolute path of libRSSupport.so
-        // http://b/25226912
-        if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M &&
-            rs.mNativeLibDir != null) {
-            rssupportPath = rs.mNativeLibDir + "/libRSSupport.so";
-        }
-        if (!rs.nLoadSO(useNative, dispatchAPI, rssupportPath)) {
-            if (useNative) {
-                android.util.Log.v(LOG_TAG, "Unable to load libRS.so, falling back to compat mode");
-                useNative = false;
-            }
-            try {
-                if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M &&
-                    rs.mNativeLibDir != null) {
-                    System.load(rssupportPath);
-                } else {
-                    System.loadLibrary("RSSupport");
-                }
-            } catch (UnsatisfiedLinkError e) {
-                Log.e(LOG_TAG, "Error loading RS Compat library: " + e + " Support lib version: " + SUPPORT_LIB_VERSION);
-                throw new RSRuntimeException("Error loading RS Compat library: " + e + " Support lib version: " + SUPPORT_LIB_VERSION);
-            }
-            if (!rs.nLoadSO(false, dispatchAPI, rssupportPath)) {
-                Log.e(LOG_TAG, "Error loading RS Compat library: nLoadSO() failed; Support lib version: " + SUPPORT_LIB_VERSION);
-                throw new RSRuntimeException("Error loading libRSSupport library, Support lib version: " + SUPPORT_LIB_VERSION);
-            }
-        }
-
-        if (useIOlib) {
-            try {
-                System.loadLibrary("RSSupportIO");
-            } catch (UnsatisfiedLinkError e) {
-                useIOlib = false;
-            }
-            if (!useIOlib || !rs.nLoadIOSO()) {
-                android.util.Log.v(LOG_TAG, "Unable to load libRSSupportIO.so, USAGE_IO not supported");
-                useIOlib = false;
-            }
-        }
-
-        // For old APIs with dlopen bug, need to load blas lib in Java first.
-        // Only try load to blasV8 when the desired API level includes IntrinsicBLAS.
-        if (dispatchAPI >= 23) {
-            // Enable multi-input kernels only when diapatchAPI is M+.
-            rs.mEnableMultiInput = true;
-            try {
-                System.loadLibrary("blasV8");
-            } catch (UnsatisfiedLinkError e) {
-                Log.v(LOG_TAG, "Unable to load BLAS lib, ONLY BNNM will be supported: " + e);
-            }
-        }
-
-        long device = rs.nDeviceCreate();
-        rs.mContext = rs.nContextCreate(device, 0, sdkVersion, ct.mID, rs.mNativeLibDir);
-        rs.mContextType = ct;
-        rs.mContextFlags = flags;
-        rs.mContextSdkVersion = sdkVersion;
-        rs.mDispatchAPILevel = dispatchAPI;
-        if (rs.mContext == 0) {
-            throw new RSDriverException("Failed to create RS context.");
-        }
-        rs.mMessageThread = new MessageThread(rs);
-        rs.mMessageThread.start();
-        return rs;
-    }
-
-    /**
-     * Create a RenderScript context.
-     *
-     * See documentation for @create for details
-     *
-     * @param ctx The context.
-     * @return RenderScript
-     */
-    public static RenderScript create(Context ctx) {
-        return create(ctx, ContextType.NORMAL);
-    }
-
-    /**
-     * calls create(ctx, ct, CREATE_FLAG_NONE)
-     *
-     * See documentation for @create for details
-     *
-     * @param ctx The context.
-     * @param ct The type of context to be created.
-     * @return RenderScript
-     */
-    public static RenderScript create(Context ctx, ContextType ct) {
-        return create(ctx, ct, CREATE_FLAG_NONE);
-    }
-
-    /**
-     * Gets or creates a RenderScript context of the specified type.
-     *
-     * The returned context will be cached for future reuse within
-     * the process. When an application is finished using
-     * RenderScript it should call releaseAllContexts()
-     *
-     * A process context is a context designed for easy creation and
-     * lifecycle management.  Multiple calls to this function will
-     * return the same object provided they are called with the same
-     * options.  This allows it to be used any time a RenderScript
-     * context is needed.
-     *
-     *
-     * @param ctx The context.
-     * @param ct The type of context to be created.
-     * @param flags The OR of the CREATE_FLAG_* options desired
-     * @return RenderScript
-     */
-    public static RenderScript create(Context ctx, ContextType ct, int flags) {
-        int v = ctx.getApplicationInfo().targetSdkVersion;
-        return create(ctx, v, ct, flags);
-    }
-
-    /**
-     * calls create(ctx, sdkVersion, ContextType.NORMAL, CREATE_FLAG_NONE)
-     *
-     * Used by the RenderScriptThunker to maintain backward compatibility.
-     *
-     * @hide
-     * @param ctx The context.
-     * @param sdkVersion The target SDK Version.
-     * @return RenderScript
-     */
-    public static RenderScript create(Context ctx, int sdkVersion) {
-        return create(ctx, sdkVersion, ContextType.NORMAL, CREATE_FLAG_NONE);
-    }
-
-
-    /**
-     * calls create(ctx, sdkVersion, ct, CREATE_FLAG_NONE)
-     * Create a RenderScript context.
-     *
-     * @hide
-     * @param ctx The context.
-     * @return RenderScript
-     */
-    public static RenderScript create(Context ctx, int sdkVersion, ContextType ct) {
-        return create(ctx, sdkVersion, ct, CREATE_FLAG_NONE);
-    }
-
-     /**
-     * Gets or creates a RenderScript context of the specified type.
-     *
-     * @param ctx The context.
-     * @param ct The type of context to be created.
-     * @param sdkVersion The target SDK Version.
-     * @param flags The OR of the CREATE_FLAG_* options desired
-     * @return RenderScript
-     */
-    public static RenderScript create(Context ctx, int sdkVersion, ContextType ct, int flags) {
-        synchronized (mProcessContextList) {
-            for (RenderScript prs : mProcessContextList) {
-                if ((prs.mContextType == ct) &&
-                    (prs.mContextFlags == flags) &&
-                    (prs.mContextSdkVersion == sdkVersion)) {
-
-                    return prs;
-                }
-            }
-
-            RenderScript prs = internalCreate(ctx, sdkVersion, ct, flags);
-            prs.mIsProcessContext = true;
-            mProcessContextList.add(prs);
-            return prs;
-        }
-    }
-
-    /**
-     *
-     * Releases all the process contexts.  This is the same as
-     * calling .destroy() on each unique context retreived with
-     * create(...). If no contexts have been created this
-     * function does nothing.
-     *
-     * Typically you call this when your application is losing focus
-     * and will not be using a context for some time.
-     *
-     * This has no effect on a context created with
-     * createMultiContext()
-     */
-    public static void releaseAllContexts() {
-        ArrayList<RenderScript> oldList;
-        synchronized (mProcessContextList) {
-            oldList = mProcessContextList;
-            mProcessContextList = new ArrayList<RenderScript>();
-        }
-
-        for (RenderScript prs : oldList) {
-            prs.mIsProcessContext = false;
-            prs.destroy();
-        }
-        oldList.clear();
-    }
-
-
-
-    /**
-     * Create a RenderScript context.
-     *
-     * This is an advanced function intended for applications which
-     * need to create more than one RenderScript context to be used
-     * at the same time.
-     *
-     * If you need a single context please use create()
-     *
-     * @param ctx The context.
-     * @return RenderScript
-     */
-    public static RenderScript createMultiContext(Context ctx, ContextType ct, int flags, int API_number) {
-        return internalCreate(ctx, API_number, ct, flags);
-    }
-
-    /**
-     * Print the currently available debugging information about the state of
-     * the RS context to the log.
-     *
-     */
-    public void contextDump() {
-        validate();
-        nContextDump(0);
-    }
-
-    /**
-     * Wait for any pending asynchronous opeations (such as copies to a RS
-     * allocation or RS script executions) to complete.
-     *
-     */
-    public void finish() {
-        nContextFinish();
-    }
-
-    private void helpDestroy() {
-        boolean shouldDestroy = false;
-        synchronized(this) {
-            if (!mDestroyed) {
-                shouldDestroy = true;
-                mDestroyed = true;
-            }
-        }
-
-        if (shouldDestroy) {
-            nContextFinish();
-            if (mIncCon != 0) {
-                nIncContextFinish();
-                nIncContextDestroy();
-                mIncCon = 0;
-            }
-            nContextDeinitToClient(mContext);
-            mMessageThread.mRun = false;
-            // Interrupt mMessageThread so it gets to see immediately that mRun is false
-            // and exit rightaway.
-            mMessageThread.interrupt();
-
-            // Wait for mMessageThread to join.  Try in a loop, in case this thread gets interrupted
-            // during the wait.  If interrupted, set the "interrupted" status of the current thread.
-            boolean hasJoined = false, interrupted = false;
-            while (!hasJoined) {
-                try {
-                    mMessageThread.join();
-                    hasJoined = true;
-                } catch (InterruptedException e) {
-                    interrupted = true;
-                }
-            }
-            if (interrupted) {
-                Log.v(LOG_TAG, "Interrupted during wait for MessageThread to join");
-                Thread.currentThread().interrupt();
-            }
-
-            nContextDestroy();
-        }
-    }
-
-    @Override
-    protected void finalize() throws Throwable {
-        helpDestroy();
-        super.finalize();
-    }
-
-    /**
-     * Destroys this RenderScript context.  Once this function is called,
-     * using this context or any objects belonging to this context is
-     * illegal.
-     *
-     * This function is a NOP if the context was created
-     * with create().  Please use releaseAllContexts() to clean up
-     * contexts created with the create function.
-     */
-    public void destroy() {
-        if (mIsProcessContext) {
-            // users cannot destroy a process context
-            return;
-        }
-        validate();
-        helpDestroy();
-    }
-
-    boolean isAlive() {
-        return mContext != 0;
-    }
-
-    long safeID(BaseObj o) {
-        if(o != null) {
-            return o.getID(this);
-        }
-        return 0;
-    }
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Sampler.java b/v8/renderscript/java/src/android/support/v8/renderscript/Sampler.java
deleted file mode 100644
index 7119e8c..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Sampler.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import android.content.res.Resources;
-import android.os.Bundle;
-import android.util.Log;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-
-/**
- * Sampler object that defines how Allocations can be read as textures within a
- * kernel. Samplers are used in conjunction with the {@code rsSample} runtime
- * function to return values from normalized coordinates.
- *
- * Any Allocation used with a Sampler must have been created with {@link
- * android.support.v8.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE}; using a
- * Sampler on an {@link android.support.v8.renderscript.Allocation} that was not
- * created with
- * {@link android.support.v8.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE} is
- * undefined.
- **/
-public class Sampler extends BaseObj {
-    public enum Value {
-        NEAREST (0),
-        LINEAR (1),
-        LINEAR_MIP_LINEAR (2),
-        LINEAR_MIP_NEAREST (5),
-        WRAP (3),
-        CLAMP (4),
-        MIRRORED_REPEAT (6);
-
-        int mID;
-        Value(int id) {
-            mID = id;
-        }
-    }
-
-    Value mMin;
-    Value mMag;
-    Value mWrapS;
-    Value mWrapT;
-    Value mWrapR;
-    float mAniso;
-
-    Sampler(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * @return minification setting for the sampler
-     */
-    public Value getMinification() {
-        return mMin;
-    }
-
-    /**
-     * @return magnification setting for the sampler
-     */
-    public Value getMagnification() {
-        return mMag;
-    }
-
-    /**
-     * @return S wrapping mode for the sampler
-     */
-    public Value getWrapS() {
-        return mWrapS;
-    }
-
-    /**
-     * @return T wrapping mode for the sampler
-     */
-    public Value getWrapT() {
-        return mWrapT;
-    }
-
-    /**
-     * @return anisotropy setting for the sampler
-     */
-    public float getAnisotropy() {
-        return mAniso;
-    }
-
-    /**
-     * Retrieve a sampler with min and mag set to nearest and wrap modes set to
-     * clamp.
-     *
-     * @param rs Context to which the sampler will belong.
-     *
-     * @return Sampler
-     */
-    public static Sampler CLAMP_NEAREST(RenderScript rs) {
-        if(rs.mSampler_CLAMP_NEAREST == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.NEAREST);
-            b.setMagnification(Value.NEAREST);
-            b.setWrapS(Value.CLAMP);
-            b.setWrapT(Value.CLAMP);
-            rs.mSampler_CLAMP_NEAREST = b.create();
-        }
-        return rs.mSampler_CLAMP_NEAREST;
-    }
-
-    /**
-     * Retrieve a sampler with min and mag set to linear and wrap modes set to
-     * clamp.
-     *
-     * @param rs Context to which the sampler will belong.
-     *
-     * @return Sampler
-     */
-    public static Sampler CLAMP_LINEAR(RenderScript rs) {
-        if(rs.mSampler_CLAMP_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.CLAMP);
-            b.setWrapT(Value.CLAMP);
-            rs.mSampler_CLAMP_LINEAR = b.create();
-        }
-        return rs.mSampler_CLAMP_LINEAR;
-    }
-
-    /**
-     * Retrieve a sampler with mag set to linear, min linear mipmap linear, and
-     * wrap modes set to clamp.
-     *
-     * @param rs Context to which the sampler will belong.
-     *
-     * @return Sampler
-     */
-    public static Sampler CLAMP_LINEAR_MIP_LINEAR(RenderScript rs) {
-        if(rs.mSampler_CLAMP_LINEAR_MIP_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR_MIP_LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.CLAMP);
-            b.setWrapT(Value.CLAMP);
-            rs.mSampler_CLAMP_LINEAR_MIP_LINEAR = b.create();
-        }
-        return rs.mSampler_CLAMP_LINEAR_MIP_LINEAR;
-    }
-
-    /**
-     * Retrieve a sampler with min and mag set to nearest and wrap modes set to
-     * wrap.
-     *
-     * @param rs Context to which the sampler will belong.
-     *
-     * @return Sampler
-     */
-    public static Sampler WRAP_NEAREST(RenderScript rs) {
-        if(rs.mSampler_WRAP_NEAREST == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.NEAREST);
-            b.setMagnification(Value.NEAREST);
-            b.setWrapS(Value.WRAP);
-            b.setWrapT(Value.WRAP);
-            rs.mSampler_WRAP_NEAREST = b.create();
-        }
-        return rs.mSampler_WRAP_NEAREST;
-    }
-
-    /**
-     * Retrieve a sampler with min and mag set to linear and wrap modes set to
-     * wrap.
-     *
-     * @param rs Context to which the sampler will belong.
-     *
-     * @return Sampler
-     */
-    public static Sampler WRAP_LINEAR(RenderScript rs) {
-        if(rs.mSampler_WRAP_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.WRAP);
-            b.setWrapT(Value.WRAP);
-            rs.mSampler_WRAP_LINEAR = b.create();
-        }
-        return rs.mSampler_WRAP_LINEAR;
-    }
-
-    /**
-     * Retrieve a sampler with mag set to linear, min linear mipmap linear, and
-     * wrap modes set to wrap.
-     *
-     * @param rs Context to which the sampler will belong.
-     *
-     * @return Sampler
-     */
-    public static Sampler WRAP_LINEAR_MIP_LINEAR(RenderScript rs) {
-        if(rs.mSampler_WRAP_LINEAR_MIP_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR_MIP_LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.WRAP);
-            b.setWrapT(Value.WRAP);
-            rs.mSampler_WRAP_LINEAR_MIP_LINEAR = b.create();
-        }
-        return rs.mSampler_WRAP_LINEAR_MIP_LINEAR;
-    }
-
-    /**
-     * Retrieve a sampler with min and mag set to nearest and wrap modes set to
-     * mirrored repeat.
-     *
-     * @param rs Context to which the sampler will belong.
-     *
-     * @return Sampler
-     */
-    public static Sampler MIRRORED_REPEAT_NEAREST(RenderScript rs) {
-        if(rs.mSampler_MIRRORED_REPEAT_NEAREST == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.NEAREST);
-            b.setMagnification(Value.NEAREST);
-            b.setWrapS(Value.MIRRORED_REPEAT);
-            b.setWrapT(Value.MIRRORED_REPEAT);
-            rs.mSampler_MIRRORED_REPEAT_NEAREST = b.create();
-        }
-        return rs.mSampler_MIRRORED_REPEAT_NEAREST;
-    }
-
-    /**
-     * Retrieve a sampler with min and mag set to linear and wrap modes set to
-     * mirrored repeat.
-     *
-     * @param rs Context to which the sampler will belong.
-     *
-     * @return Sampler
-     */
-    public static Sampler MIRRORED_REPEAT_LINEAR(RenderScript rs) {
-        if(rs.mSampler_MIRRORED_REPEAT_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.MIRRORED_REPEAT);
-            b.setWrapT(Value.MIRRORED_REPEAT);
-            rs.mSampler_MIRRORED_REPEAT_LINEAR = b.create();
-        }
-        return rs.mSampler_MIRRORED_REPEAT_LINEAR;
-    }
-
-    /**
-     * Builder for creating non-standard samplers.  This is only necessary if
-     * a Sampler with different min and mag modes is desired.
-     */
-    public static class Builder {
-        RenderScript mRS;
-        Value mMin;
-        Value mMag;
-        Value mWrapS;
-        Value mWrapT;
-        Value mWrapR;
-        float mAniso;
-
-        public Builder(RenderScript rs) {
-            mRS = rs;
-            mMin = Value.NEAREST;
-            mMag = Value.NEAREST;
-            mWrapS = Value.WRAP;
-            mWrapT = Value.WRAP;
-            mWrapR = Value.WRAP;
-            mAniso = 1.0f;
-        }
-
-        public void setMinification(Value v) {
-            if (v == Value.NEAREST ||
-                v == Value.LINEAR ||
-                v == Value.LINEAR_MIP_LINEAR ||
-                v == Value.LINEAR_MIP_NEAREST) {
-                mMin = v;
-            } else {
-                throw new IllegalArgumentException("Invalid value");
-            }
-        }
-
-        public void setMagnification(Value v) {
-            if (v == Value.NEAREST || v == Value.LINEAR) {
-                mMag = v;
-            } else {
-                throw new IllegalArgumentException("Invalid value");
-            }
-        }
-
-        public void setWrapS(Value v) {
-            if (v == Value.WRAP || v == Value.CLAMP || v == Value.MIRRORED_REPEAT) {
-                mWrapS = v;
-            } else {
-                throw new IllegalArgumentException("Invalid value");
-            }
-        }
-
-        public void setWrapT(Value v) {
-            if (v == Value.WRAP || v == Value.CLAMP || v == Value.MIRRORED_REPEAT) {
-                mWrapT = v;
-            } else {
-                throw new IllegalArgumentException("Invalid value");
-            }
-        }
-
-        public void setAnisotropy(float v) {
-            if(v >= 0.0f) {
-                mAniso = v;
-            } else {
-                throw new IllegalArgumentException("Invalid value");
-            }
-        }
-
-        public Sampler create() {
-            mRS.validate();
-            long id = mRS.nSamplerCreate(mMag.mID, mMin.mID,
-                                        mWrapS.mID, mWrapT.mID, mWrapR.mID, mAniso);
-            Sampler sampler = new Sampler(id, mRS);
-            sampler.mMin = mMin;
-            sampler.mMag = mMag;
-            sampler.mWrapS = mWrapS;
-            sampler.mWrapT = mWrapT;
-            sampler.mWrapR = mWrapR;
-            sampler.mAniso = mAniso;
-            return sampler;
-        }
-    }
-
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Script.java b/v8/renderscript/java/src/android/support/v8/renderscript/Script.java
deleted file mode 100644
index ec3a7a9..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Script.java
+++ /dev/null
@@ -1,701 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.SparseArray;
-
-/**
- * The parent class for all executable scripts. This should not be used by
- * applications.
- **/
-public class Script extends BaseObj {
-    /**
-     * Determine if Incremental Intrinsic Support is needed
-     *
-     */
-    private boolean mUseIncSupp;
-    protected void setIncSupp(boolean useInc) {
-        mUseIncSupp = useInc;
-    }
-    protected boolean isIncSupp() {
-        return mUseIncSupp;
-    }
-    /**
-     * An allocation for the compat context will be created when needed
-     * e.g. foreach(ain, aout), setVar(ain);
-     *
-     */
-    long getDummyAlloc(Allocation ain) {
-        long dInElement = 0;
-        long dInType = 0;
-        long dummyAlloc = 0;
-        if (ain != null) {
-            Type inType = ain.getType();
-            dInElement = inType.getElement().getDummyElement(mRS);
-            dInType = inType.getDummyType(mRS, dInElement);
-            int xBytesSize = inType.getX() * inType.getElement().getBytesSize();
-            dummyAlloc = mRS.nIncAllocationCreateTyped(ain.getID(mRS), dInType, xBytesSize);
-            ain.setIncAllocID(dummyAlloc);
-        }
-
-        return dummyAlloc;
-    }
-    /**
-     * KernelID is an identifier for a Script + root function pair. It is used
-     * as an identifier for ScriptGroup creation.
-     *
-     * This class should not be directly created. Instead use the method in the
-     * reflected or intrinsic code "getKernelID_funcname()".
-     *
-     */
-    public static final class KernelID extends BaseObj {
-        android.renderscript.Script.KernelID mN;
-        Script mScript;
-        int mSlot;
-        int mSig;
-        KernelID(long id, RenderScript rs, Script s, int slot, int sig) {
-            super(id, rs);
-            mScript = s;
-            mSlot = slot;
-            mSig = sig;
-        }
-    }
-
-    private final SparseArray<KernelID> mKIDs = new SparseArray<KernelID>();
-    /**
-     * Only to be used by generated reflected classes.
-     *
-     *
-     * @param slot
-     * @param sig
-     * @param ein
-     * @param eout
-     *
-     * @return KernelID
-     */
-    protected KernelID createKernelID(int slot, int sig, Element ein, Element eout) {
-        KernelID k = mKIDs.get(slot);
-        if (k != null) {
-            return k;
-        }
-
-        long id = mRS.nScriptKernelIDCreate(getID(mRS), slot, sig, mUseIncSupp);
-        if (id == 0) {
-            throw new RSDriverException("Failed to create KernelID");
-        }
-
-        k = new KernelID(id, mRS, this, slot, sig);
-
-        mKIDs.put(slot, k);
-        return k;
-    }
-
-    /**
-     * InvokeID is an identifier for a invoke function. It is used
-     * as an identifier for ScriptGroup creation.
-     *
-     * This class should not be directly created. Instead use the method in the
-     * reflected or intrinsic code "getInvokeID_funcname()".
-     *
-     */
-    public static final class InvokeID extends BaseObj {
-        Script mScript;
-        int mSlot;
-        InvokeID(long id, RenderScript rs, Script s, int slot) {
-            super(id, rs);
-            mScript = s;
-            mSlot = slot;
-        }
-    }
-
-    private final SparseArray<InvokeID> mIIDs = new SparseArray<InvokeID>();
-    /**
-     * Only to be used by generated reflected classes.
-     */
-    protected InvokeID createInvokeID(int slot) {
-        InvokeID i = mIIDs.get(slot);
-        if (i != null) {
-            return i;
-        }
-
-        long id = mRS.nScriptInvokeIDCreate(getID(mRS), slot);
-        if (id == 0) {
-            throw new RSDriverException("Failed to create KernelID");
-        }
-
-        i = new InvokeID(id, mRS, this, slot);
-        mIIDs.put(slot, i);
-        return i;
-    }
-
-    /**
-     * FieldID is an identifier for a Script + exported field pair. It is used
-     * as an identifier for ScriptGroup creation.
-     *
-     * This class should not be directly created. Instead use the method in the
-     * reflected or intrinsic code "getFieldID_funcname()".
-     *
-     */
-    public static final class FieldID extends BaseObj {
-        android.renderscript.Script.FieldID mN;
-        Script mScript;
-        int mSlot;
-        FieldID(long id, RenderScript rs, Script s, int slot) {
-            super(id, rs);
-            mScript = s;
-            mSlot = slot;
-        }
-    }
-
-    private final SparseArray<FieldID> mFIDs = new SparseArray();
-    /**
-     * Only to be used by generated reflected classes.
-     *
-     * @param slot
-     * @param e
-     *
-     * @return FieldID
-     */
-    protected FieldID createFieldID(int slot, Element e) {
-        FieldID f = mFIDs.get(slot);
-        if (f != null) {
-            return f;
-        }
-
-        long id = mRS.nScriptFieldIDCreate(getID(mRS), slot, mUseIncSupp);
-        if (id == 0) {
-            throw new RSDriverException("Failed to create FieldID");
-        }
-
-        f = new FieldID(id, mRS, this, slot);
-        mFIDs.put(slot, f);
-        return f;
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param slot
-     */
-    protected void invoke(int slot) {
-        mRS.nScriptInvoke(getID(mRS), slot, mUseIncSupp);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param slot
-     * @param v
-     */
-    protected void invoke(int slot, FieldPacker v) {
-        if (v != null) {
-            mRS.nScriptInvokeV(getID(mRS), slot, v.getData(), mUseIncSupp);
-        } else {
-            mRS.nScriptInvoke(getID(mRS), slot, mUseIncSupp);
-        }
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param va
-     * @param slot
-     */
-    public void bindAllocation(Allocation va, int slot) {
-        mRS.validate();
-        if (va != null) {
-            mRS.nScriptBindAllocation(getID(mRS), va.getID(mRS), slot, mUseIncSupp);
-        } else {
-            mRS.nScriptBindAllocation(getID(mRS), 0, slot, mUseIncSupp);
-        }
-    }
-
-    public void setTimeZone(String timeZone) {
-        mRS.validate();
-        try {
-            mRS.nScriptSetTimeZone(getID(mRS), timeZone.getBytes("UTF-8"), mUseIncSupp);
-        } catch (java.io.UnsupportedEncodingException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param slot
-     * @param ain
-     * @param aout
-     * @param v
-     */
-    protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) {
-        if (ain == null && aout == null) {
-            throw new RSIllegalArgumentException(
-                "At least one of ain or aout is required to be non-null.");
-        }
-        long in_id = 0;
-        long out_id = 0;
-        if (ain != null) {
-            in_id = ain.getID(mRS);
-        }
-        if (aout != null) {
-            out_id = aout.getID(mRS);
-        }
-
-        byte[] params = null;
-        if (v != null) {
-            params = v.getData();
-        }
-
-        if (mUseIncSupp) {
-            long ainInc = getDummyAlloc(ain);
-            long aoutInc = getDummyAlloc(aout);
-            mRS.nScriptForEach(getID(mRS), slot, ainInc, aoutInc, params, mUseIncSupp);
-        } else {
-            mRS.nScriptForEach(getID(mRS), slot, in_id, out_id, params, mUseIncSupp);
-        }
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param slot
-     * @param ain
-     * @param aout
-     * @param v
-     * @param sc
-     */
-    protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) {
-        if (ain == null && aout == null) {
-            throw new RSIllegalArgumentException(
-                "At least one of ain or aout is required to be non-null.");
-        }
-
-        if (sc == null) {
-            forEach(slot, ain, aout, v);
-            return;
-        }
-        long in_id = 0;
-        long out_id = 0;
-        if (ain != null) {
-            in_id = ain.getID(mRS);
-        }
-        if (aout != null) {
-            out_id = aout.getID(mRS);
-        }
-
-        byte[] params = null;
-        if (v != null) {
-            params = v.getData();
-        }
-        if (mUseIncSupp) {
-            long ainInc = getDummyAlloc(ain);
-            long aoutInc = getDummyAlloc(aout);
-            mRS.nScriptForEachClipped(getID(mRS), slot, ainInc, aoutInc, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend, mUseIncSupp);        
-        } else {
-            mRS.nScriptForEachClipped(getID(mRS), slot, in_id, out_id, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend, mUseIncSupp);
-        }
-    }
-
-    Script(long id, RenderScript rs) {
-        super(id, rs);
-        mUseIncSupp = false;
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @hide
-     */
-    protected void forEach(int slot, Allocation[] ains, Allocation aout,
-                           FieldPacker v) {
-        forEach(slot, ains, aout, v, null);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @hide
-     */
-    protected void forEach(int slot, Allocation[] ains, Allocation aout,
-                           FieldPacker v, LaunchOptions sc) {
-        // TODO: Is this necessary if nScriptForEach calls validate as well?
-        mRS.validate();
-        if (ains != null) {
-            for (Allocation ain : ains) {
-                mRS.validateObject(ain);
-            }
-        }
-        mRS.validateObject(aout);
-
-        if (ains == null && aout == null) {
-            throw new RSIllegalArgumentException(
-                "At least one of ain or aout is required to be non-null.");
-        }
-
-        long[] in_ids;
-        if (ains != null) {
-            in_ids = new long[ains.length];
-            for (int index = 0; index < ains.length; ++index) {
-                in_ids[index] = ains[index].getID(mRS);
-            }
-        } else {
-            in_ids = null;
-        }
-
-        long out_id = 0;
-        if (aout != null) {
-            out_id = aout.getID(mRS);
-        }
-
-        byte[] params = null;
-        if (v != null) {
-            params = v.getData();
-        }
-
-        int[] limits = null;
-        if (sc != null) {
-            limits = new int[6];
-
-            limits[0] = sc.xstart;
-            limits[1] = sc.xend;
-            limits[2] = sc.ystart;
-            limits[3] = sc.yend;
-            limits[4] = sc.zstart;
-            limits[5] = sc.zend;
-        }
-
-        mRS.nScriptForEach(getID(mRS), slot, in_ids, out_id, params, limits);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.  (General reduction)
-     *
-     * @hide
-     */
-    protected void reduce(int slot, Allocation[] ains, Allocation aout, LaunchOptions sc) {
-        mRS.validate();
-        if (ains == null || ains.length < 1) {
-            throw new RSIllegalArgumentException(
-                "At least one input is required.");
-        }
-        if (aout == null) {
-            throw new RSIllegalArgumentException(
-                "aout is required to be non-null.");
-        }
-        for (Allocation ain : ains) {
-            mRS.validateObject(ain);
-        }
-
-        long[] in_ids = new long[ains.length];
-        for (int index = 0; index < ains.length; ++index) {
-            in_ids[index] = ains[index].getID(mRS);
-        }
-        long out_id = aout.getID(mRS);
-
-        int[] limits = null;
-        if (sc != null) {
-            limits = new int[6];
-
-            limits[0] = sc.xstart;
-            limits[1] = sc.xend;
-            limits[2] = sc.ystart;
-            limits[3] = sc.yend;
-            limits[4] = sc.zstart;
-            limits[5] = sc.zend;
-        }
-
-        mRS.nScriptReduce(getID(mRS), slot, in_ids, out_id, limits);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param index
-     * @param v
-     */
-    public void setVar(int index, float v) {
-        mRS.nScriptSetVarF(getID(mRS), index, v, mUseIncSupp);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param index
-     * @param v
-     */
-    public void setVar(int index, double v) {
-        mRS.nScriptSetVarD(getID(mRS), index, v, mUseIncSupp);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param index
-     * @param v
-     */
-    public void setVar(int index, int v) {
-        mRS.nScriptSetVarI(getID(mRS), index, v, mUseIncSupp);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param index
-     * @param v
-     */
-    public void setVar(int index, long v) {
-        mRS.nScriptSetVarJ(getID(mRS), index, v, mUseIncSupp);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param index
-     * @param v
-     */
-    public void setVar(int index, boolean v) {
-        mRS.nScriptSetVarI(getID(mRS), index, v ? 1 : 0, mUseIncSupp);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param index
-     * @param o
-     */
-    public void setVar(int index, BaseObj o) {
-        if (mUseIncSupp) {
-            long oInc = getDummyAlloc((Allocation)o);
-            mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : oInc, mUseIncSupp);            
-        } else {
-            mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS), mUseIncSupp);
-        }
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param index
-     * @param v
-     */
-    public void setVar(int index, FieldPacker v) {
-        mRS.nScriptSetVarV(getID(mRS), index, v.getData(), mUseIncSupp);
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     * @param index
-     * @param v
-     * @param e
-     * @param dims
-     */
-    public void setVar(int index, FieldPacker v, Element e, int[] dims) {
-        if (mUseIncSupp) {
-            long dElement = e.getDummyElement(mRS);
-            mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), dElement, dims, mUseIncSupp);
-        } else {
-            mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), e.getID(mRS), dims, mUseIncSupp);
-        }
-    }
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     */
-    public static class Builder {
-        RenderScript mRS;
-
-        Builder(RenderScript rs) {
-            mRS = rs;
-        }
-    }
-
-
-    /**
-     * Only intended for use by generated reflected code.
-     *
-     */
-    public static class FieldBase {
-        protected Element mElement;
-        protected Allocation mAllocation;
-
-        protected void init(RenderScript rs, int dimx) {
-            mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT);
-        }
-
-        protected void init(RenderScript rs, int dimx, int usages) {
-            mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT | usages);
-        }
-
-        protected FieldBase() {
-        }
-
-        public Element getElement() {
-            return mElement;
-        }
-
-        public Type getType() {
-            return mAllocation.getType();
-        }
-
-        public Allocation getAllocation() {
-            return mAllocation;
-        }
-
-        //@Override
-        public void updateAllocation() {
-        }
-    }
-
-
-    /**
-     * Class for specifying the specifics about how a kernel will be
-     * launched.
-     *
-     * This class can specify a potential range of cells on which to
-     * run a kernel.  If no set is called for a dimension then this
-     * class will have no impact on that dimension when the kernel
-     * is executed.
-     *
-     * The forEach kernel launch will operate over the intersection of
-     * the dimensions.
-     *
-     * Example:
-     * LaunchOptions with setX(5, 15)
-     * Allocation with dimension X=10, Y=10
-     * The resulting forEach run would execute over:
-     * x = 5 to 9 (inclusive) and
-     * y = 0 to 9 (inclusive).
-     *
-     */
-    public static final class LaunchOptions {
-        private int xstart = 0;
-        private int ystart = 0;
-        private int xend = 0;
-        private int yend = 0;
-        private int zstart = 0;
-        private int zend = 0;
-        private int strategy;
-
-        /**
-         * Set the X range. xstartArg is the lowest coordinate of the range,
-         * and xendArg-1 is the highest coordinate of the range.
-         *
-         * @param xstartArg Must be >= 0
-         * @param xendArg Must be > xstartArg
-         *
-         * @return LaunchOptions
-         */
-        public LaunchOptions setX(int xstartArg, int xendArg) {
-            if (xstartArg < 0 || xendArg <= xstartArg) {
-                throw new RSIllegalArgumentException("Invalid dimensions");
-            }
-            xstart = xstartArg;
-            xend = xendArg;
-            return this;
-        }
-
-        /**
-         * Set the Y range. ystartArg is the lowest coordinate of the range,
-         * and yendArg-1 is the highest coordinate of the range.
-         *
-         * @param ystartArg Must be >= 0
-         * @param yendArg Must be > ystartArg
-         *
-         * @return LaunchOptions
-         */
-        public LaunchOptions setY(int ystartArg, int yendArg) {
-            if (ystartArg < 0 || yendArg <= ystartArg) {
-                throw new RSIllegalArgumentException("Invalid dimensions");
-            }
-            ystart = ystartArg;
-            yend = yendArg;
-            return this;
-        }
-
-        /**
-         * Set the Z range. zstartArg is the lowest coordinate of the range,
-         * and zendArg-1 is the highest coordinate of the range.
-         *
-         * @param zstartArg Must be >= 0
-         * @param zendArg Must be > zstartArg
-         *
-         * @return LaunchOptions
-         */
-        public LaunchOptions setZ(int zstartArg, int zendArg) {
-            if (zstartArg < 0 || zendArg <= zstartArg) {
-                throw new RSIllegalArgumentException("Invalid dimensions");
-            }
-            zstart = zstartArg;
-            zend = zendArg;
-            return this;
-        }
-
-
-        /**
-         * Returns the current X start
-         *
-         * @return int current value
-         */
-        public int getXStart() {
-            return xstart;
-        }
-        /**
-         * Returns the current X end
-         *
-         * @return int current value
-         */
-        public int getXEnd() {
-            return xend;
-        }
-        /**
-         * Returns the current Y start
-         *
-         * @return int current value
-         */
-        public int getYStart() {
-            return ystart;
-        }
-        /**
-         * Returns the current Y end
-         *
-         * @return int current value
-         */
-        public int getYEnd() {
-            return yend;
-        }
-        /**
-         * Returns the current Z start
-         *
-         * @return int current value
-         */
-        public int getZStart() {
-            return zstart;
-        }
-        /**
-         * Returns the current Z end
-         *
-         * @return int current value
-         */
-        public int getZEnd() {
-            return zend;
-        }
-
-    }
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptC.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptC.java
deleted file mode 100644
index 28e9613..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptC.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.util.Log;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map.Entry;
-import java.util.HashMap;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-
-/**
- * The superclass for all user-defined scripts. This is only
- * intended to be used by the generated derived classes.
- **/
-public class ScriptC extends Script {
-    private static final String TAG = "ScriptC";
-
-    /**
-     * Only intended for use by the generated derived classes.
-     *
-     * @param id
-     * @param rs
-     */
-    protected ScriptC(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Only intended for use by the generated derived classes.
-     *
-     *
-     * @param rs
-     * @param resources
-     * @param resourceID
-     */
-    protected ScriptC(RenderScript rs, Resources resources, int resourceID) {
-        super(0, rs);
-        long id = internalCreate(rs, resources, resourceID);
-        if (id == 0) {
-            throw new RSRuntimeException("Loading of ScriptC script failed.");
-        }
-        setID(id);
-    }
-
-    /**
-     * Only intended for use by the generated derived classes.
-     *
-     * @param rs
-     * @param resName
-     * @param bitcode32
-     * @param bitcode64
-     */
-    protected ScriptC(RenderScript rs, String resName, byte[] bitcode32, byte[] bitcode64) {
-        super(0, rs);
-        long id = 0;
-        if (RenderScript.sPointerSize == 4) {
-            id = internalStringCreate(rs, resName, bitcode32);
-        } else {
-            id = internalStringCreate(rs, resName, bitcode64);
-        }
-        if (id == 0) {
-            throw new RSRuntimeException("Loading of ScriptC script failed.");
-        }
-        setID(id);
-    }
-
-    private static synchronized long internalCreate(RenderScript rs, Resources resources, int resourceID) {
-        byte[] pgm;
-        int pgmLength;
-        InputStream is = resources.openRawResource(resourceID);
-        try {
-            try {
-                pgm = new byte[1024];
-                pgmLength = 0;
-                while(true) {
-                    int bytesLeft = pgm.length - pgmLength;
-                    if (bytesLeft == 0) {
-                        byte[] buf2 = new byte[pgm.length * 2];
-                        System.arraycopy(pgm, 0, buf2, 0, pgm.length);
-                        pgm = buf2;
-                        bytesLeft = pgm.length - pgmLength;
-                    }
-                    int bytesRead = is.read(pgm, pgmLength, bytesLeft);
-                    if (bytesRead <= 0) {
-                        break;
-                    }
-                    pgmLength += bytesRead;
-                }
-            } finally {
-                is.close();
-            }
-        } catch(IOException e) {
-            throw new Resources.NotFoundException();
-        }
-
-        String resName = resources.getResourceEntryName(resourceID);
-        String cachePath = rs.getApplicationContext().getCacheDir().toString();
-
-        //        Log.v(TAG, "Create script for resource = " + resName + ", " + pgmLength + ", " + pgm);
-        //Log.v(TAG, " path = " + cachePath);
-        return rs.nScriptCCreate(resName, cachePath, pgm, pgmLength);
-    }
-
-    private static synchronized long internalStringCreate(RenderScript rs, String resName, byte[] bitcode) {
-        //        Log.v(TAG, "Create script for resource = " + resName);
-        String cachePath = rs.getApplicationContext().getCacheDir().toString();
-        return rs.nScriptCCreate(resName, cachePath, bitcode, bitcode.length);
-    }
-
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptGroup.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptGroup.java
deleted file mode 100644
index 139fde2..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptGroup.java
+++ /dev/null
@@ -1,1180 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.Log;
-import android.util.Pair;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A group of kernels that are executed
- * together with one execution call as if they were a single kernel
- * <p>
- * In addition to kernels, a script group may contain invocable functions as well.
- * A script group may take inputs and generate outputs, which are consumed and
- * produced by its member kernels.
- * Inside a script group, outputs from one kernel can be passed to another kernel as inputs.
- * The API disallows cyclic dependencies among kernels in a script group,
- * effectively making it a directed acyclic graph (DAG) of kernels.
- * <p>
- * Grouping kernels together allows for more efficient execution. For example,
- * runtime and compiler optimization can be applied to reduce computation and
- * communication overhead, and to make better use of the CPU and the GPU.
- **/
-public final class ScriptGroup extends BaseObj {
-    //FIXME: Change 23 to the codename when that is decided.
-    private static final int MIN_API_VERSION = 23;
-    private static final String TAG = "ScriptGroup";
-    IO mOutputs[];
-    IO mInputs[];
-    private boolean mUseIncSupp = false;
-    private ArrayList<Node> mNodes = new ArrayList<Node>();
-
-    static class IO {
-        Script.KernelID mKID;
-        Allocation mAllocation;
-
-        IO(Script.KernelID s) {
-            mKID = s;
-        }
-    }
-
-    static class ConnectLine {
-        ConnectLine(Type t, Script.KernelID from, Script.KernelID to) {
-            mFrom = from;
-            mToK = to;
-            mAllocationType = t;
-        }
-
-        ConnectLine(Type t, Script.KernelID from, Script.FieldID to) {
-            mFrom = from;
-            mToF = to;
-            mAllocationType = t;
-        }
-
-        Script.FieldID mToF;
-        Script.KernelID mToK;
-        Script.KernelID mFrom;
-        Type mAllocationType;
-        Allocation mAllocation;
-    }
-
-    static class Node {
-        Script mScript;
-        ArrayList<Script.KernelID> mKernels = new ArrayList<Script.KernelID>();
-        ArrayList<ConnectLine> mInputs = new ArrayList<ConnectLine>();
-        ArrayList<ConnectLine> mOutputs = new ArrayList<ConnectLine>();
-        int dagNumber;
-        boolean mSeen;
-        int mOrder;
-
-        Node mNext;
-
-        Node(Script s) {
-            mScript = s;
-        }
-    }
-
-    /**
-     * An opaque class for closures
-     * <p>
-     * A closure represents a function call to a kernel or invocable function,
-     * combined with arguments and values for global variables. A closure is
-     * created using the {@link Builder2#addKernel} or
-     * {@link Builder2#addInvoke}
-     * method.
-     */
-
-    public static final class Closure extends BaseObj {
-        private Object[] mArgs;
-        private Allocation mReturnValue;
-        private Map<Script.FieldID, Object> mBindings;
-
-        private Future mReturnFuture;
-        private Map<Script.FieldID, Future> mGlobalFuture;
-
-        private FieldPacker mFP;
-
-        private static final String TAG = "Closure";
-
-        Closure(long id, RenderScript rs) {
-            super(id, rs);
-        }
-
-        Closure(RenderScript rs, Script.KernelID kernelID, Type returnType,
-                       Object[] args, Map<Script.FieldID, Object> globals) {
-            super(0, rs);
-
-            if (android.os.Build.VERSION.SDK_INT < MIN_API_VERSION && rs.isUseNative()) {
-                throw new RSRuntimeException("ScriptGroup2 not supported in this API level");
-            }
-
-            mArgs = args;
-            mReturnValue = Allocation.createTyped(rs, returnType);
-            mBindings = globals;
-            mGlobalFuture = new HashMap<Script.FieldID, Future>();
-
-            int numValues = args.length + globals.size();
-
-            long[] fieldIDs = new long[numValues];
-            long[] values = new long[numValues];
-            int[] sizes = new int[numValues];
-            long[] depClosures = new long[numValues];
-            long[] depFieldIDs = new long[numValues];
-
-            int i;
-            for (i = 0; i < args.length; i++) {
-                fieldIDs[i] = 0;
-                retrieveValueAndDependenceInfo(rs, i, null, args[i],
-                                               values, sizes, depClosures, depFieldIDs);
-            }
-            for (Map.Entry<Script.FieldID, Object> entry : globals.entrySet()) {
-                Object obj = entry.getValue();
-                Script.FieldID fieldID = entry.getKey();
-                fieldIDs[i] = fieldID.getID(rs);
-                retrieveValueAndDependenceInfo(rs, i, fieldID, obj,
-                                               values, sizes, depClosures, depFieldIDs);
-                i++;
-            }
-
-            long id = rs.nClosureCreate(kernelID.getID(rs), mReturnValue.getID(rs),
-                                        fieldIDs, values, sizes, depClosures, depFieldIDs);
-
-            setID(id);
-        }
-
-        Closure(RenderScript rs, Script.InvokeID invokeID,
-                Object[] args, Map<Script.FieldID, Object> globals) {
-            super(0, rs);
-
-            if (android.os.Build.VERSION.SDK_INT < MIN_API_VERSION && rs.isUseNative()) {
-                throw new RSRuntimeException("ScriptGroup2 not supported in this API level");
-            }
-
-            mFP = FieldPacker.createFromArray(args);
-
-            mArgs = args;
-            mBindings = globals;
-            mGlobalFuture = new HashMap<Script.FieldID, Future>();
-
-            int numValues = globals.size();
-
-            long[] fieldIDs = new long[numValues];
-            long[] values = new long[numValues];
-            int[] sizes = new int[numValues];
-            long[] depClosures = new long[numValues];
-            long[] depFieldIDs = new long[numValues];
-
-            int i = 0;
-            for (Map.Entry<Script.FieldID, Object> entry : globals.entrySet()) {
-                Object obj = entry.getValue();
-                Script.FieldID fieldID = entry.getKey();
-                fieldIDs[i] = fieldID.getID(rs);
-                retrieveValueAndDependenceInfo(rs, i, fieldID, obj, values,
-                                               sizes, depClosures, depFieldIDs);
-                i++;
-            }
-
-            long id = rs.nInvokeClosureCreate(invokeID.getID(rs), mFP.getData(), fieldIDs,
-                                              values, sizes);
-
-            setID(id);
-        }
-
-        private void retrieveValueAndDependenceInfo(RenderScript rs,
-                                                    int index, Script.FieldID fid, Object obj,
-                                                    long[] values, int[] sizes,
-                                                    long[] depClosures,
-                                                    long[] depFieldIDs) {
-
-            if (obj instanceof Future) {
-                Future f = (Future)obj;
-                obj = f.getValue();
-                depClosures[index] = f.getClosure().getID(rs);
-                Script.FieldID fieldID = f.getFieldID();
-                depFieldIDs[index] = fieldID != null ? fieldID.getID(rs) : 0;
-            } else {
-                depClosures[index] = 0;
-                depFieldIDs[index] = 0;
-            }
-
-            if (obj instanceof Input) {
-                Input unbound = (Input)obj;
-                if (index < mArgs.length) {
-                    unbound.addReference(this, index);
-                } else {
-                    unbound.addReference(this, fid);
-                }
-                values[index] = 0;
-                sizes[index] = 0;
-            } else {
-                ValueAndSize vs = new ValueAndSize(rs, obj);
-                values[index] = vs.value;
-                sizes[index] = vs.size;
-            }
-        }
-
-        /**
-         * Returns the future for the return value
-         *
-         * @return a future
-         */
-
-        public Future getReturn() {
-            if (mReturnFuture == null) {
-                mReturnFuture = new Future(this, null, mReturnValue);
-            }
-
-            return mReturnFuture;
-        }
-
-        /**
-         * Returns the future for a global variable
-         *
-         * @param field the field ID for the global variable
-         * @return a future
-         */
-
-        public Future getGlobal(Script.FieldID field) {
-            Future f = mGlobalFuture.get(field);
-
-            if (f == null) {
-                // If the field is not bound to this closure, this will return a future
-                // without an associated value (reference). So this is not working for
-                // cross-module (cross-script) linking in this case where a field not
-                // explicitly bound.
-                Object obj = mBindings.get(field);
-                if (obj instanceof Future) {
-                    obj = ((Future)obj).getValue();
-                }
-                f = new Future(this, field, obj);
-                mGlobalFuture.put(field, f);
-            }
-
-            return f;
-        }
-
-        void setArg(int index, Object obj) {
-            if (obj instanceof Future) {
-                obj = ((Future)obj).getValue();
-            }
-            mArgs[index] = obj;
-            ValueAndSize vs = new ValueAndSize(mRS, obj);
-            mRS.nClosureSetArg(getID(mRS), index, vs.value, vs.size);
-        }
-
-        void setGlobal(Script.FieldID fieldID, Object obj) {
-            if (obj instanceof Future) {
-                obj = ((Future)obj).getValue();
-            }
-            mBindings.put(fieldID, obj);
-            ValueAndSize vs = new ValueAndSize(mRS, obj);
-            mRS.nClosureSetGlobal(getID(mRS), fieldID.getID(mRS), vs.value, vs.size);
-        }
-
-        private static final class ValueAndSize {
-            public ValueAndSize(RenderScript rs, Object obj) {
-                if (obj instanceof Allocation) {
-                    value = ((Allocation)obj).getID(rs);
-                    size = -1;
-                } else if (obj instanceof Boolean) {
-                    value = ((Boolean)obj).booleanValue() ? 1 : 0;
-                    size = 4;
-                } else if (obj instanceof Integer) {
-                    value = ((Integer)obj).longValue();
-                    size = 4;
-                } else if (obj instanceof Long) {
-                    value = ((Long)obj).longValue();
-                    size = 8;
-                } else if (obj instanceof Float) {
-                    value = Float.floatToRawIntBits(((Float)obj).floatValue());
-                    size = 4;
-                } else if (obj instanceof Double) {
-                    value = Double.doubleToRawLongBits(((Double)obj).doubleValue());
-                    size = 8;
-                }
-            }
-            public long value;
-            public int size;
-        }
-    }
-
-    /**
-     * An opaque class for futures
-     * <p>
-     * A future represents an output of a closure, either the return value of
-     * the function, or the value of a global variable written by the function.
-     * A future is created by calling the {@link Closure#getReturn}  or
-     * {@link Closure#getGlobal} method.
-     */
-
-    public static final class Future {
-        Closure mClosure;
-        Script.FieldID mFieldID;
-        Object mValue;
-
-        Future(Closure closure, Script.FieldID fieldID, Object value) {
-            mClosure = closure;
-            mFieldID = fieldID;
-            mValue = value;
-        }
-
-        Closure getClosure() { return mClosure; }
-        Script.FieldID getFieldID() { return mFieldID; }
-        Object getValue() { return mValue; }
-    }
-
-    /**
-     * An opaque class for unbound values (used for script group inputs)
-     * <p>
-     * Created by calling the {@link Builder2#addInput} method. The value
-     * is assigned in {@link ScriptGroup#execute(Object...)} method as
-     * one of its arguments. Arguments to the execute method should be in
-     * the same order as intputs are added using the addInput method.
-     */
-
-    public static final class Input {
-        // Either mFieldID or mArgIndex should be set but not both.
-        List<Pair<Closure, Script.FieldID>> mFieldID;
-        // -1 means unset. Legal values are 0 .. n-1, where n is the number of
-        // arguments for the referencing closure.
-        List<Pair<Closure, Integer>> mArgIndex;
-        Object mValue;
-
-        Input() {
-            mFieldID = new ArrayList<Pair<Closure, Script.FieldID>>();
-            mArgIndex = new ArrayList<Pair<Closure, Integer>>();
-        }
-
-        void addReference(Closure closure, int index) {
-            mArgIndex.add(Pair.create(closure, Integer.valueOf(index)));
-        }
-
-        void addReference(Closure closure, Script.FieldID fieldID) {
-            mFieldID.add(Pair.create(closure, fieldID));
-        }
-
-        void set(Object value) {
-            mValue = value;
-            for (Pair<Closure, Integer> p : mArgIndex) {
-                Closure closure = p.first;
-                int index = p.second.intValue();
-                closure.setArg(index, value);
-            }
-            for (Pair<Closure, Script.FieldID> p : mFieldID) {
-                Closure closure = p.first;
-                Script.FieldID fieldID = p.second;
-                closure.setGlobal(fieldID, value);
-            }
-        }
-
-        Object get() { return mValue; }
-    }
-
-    private String mName;
-    private List<Closure> mClosures;
-    private List<Input> mInputs2;
-    private Future[] mOutputs2;
-
-    ScriptGroup(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    ScriptGroup(RenderScript rs, String name, List<Closure> closures,
-                List<Input> inputs, Future[] outputs) {
-        super(0, rs);
-
-        if (android.os.Build.VERSION.SDK_INT < MIN_API_VERSION && rs.isUseNative()) {
-            throw new RSRuntimeException("ScriptGroup2 not supported in this API level");
-        }
-        mName = name;
-        mClosures = closures;
-        mInputs2 = inputs;
-        mOutputs2 = outputs;
-
-        long[] closureIDs = new long[closures.size()];
-        for (int i = 0; i < closureIDs.length; i++) {
-            closureIDs[i] = closures.get(i).getID(rs);
-        }
-        String cachePath = rs.getApplicationContext().getCacheDir().toString();
-        long id = rs.nScriptGroup2Create(name, cachePath, closureIDs);
-        setID(id);
-    }
-
-    /**
-     * Executes a script group
-     *
-     * @param inputs inputs to the script group
-     * @return outputs of the script group as an array of objects
-     */
-
-    public Object[] execute(Object... inputs) {
-        if (inputs.length < mInputs2.size()) {
-            Log.e(TAG, this.toString() + " receives " + inputs.length + " inputs, " +
-                  "less than expected " + mInputs2.size());
-            return null;
-        }
-
-        if (inputs.length > mInputs2.size()) {
-            Log.i(TAG, this.toString() + " receives " + inputs.length + " inputs, " +
-                  "more than expected " + mInputs2.size());
-        }
-
-        for (int i = 0; i < mInputs2.size(); i++) {
-            Object obj = inputs[i];
-            if (obj instanceof Future || obj instanceof Input) {
-                Log.e(TAG, this.toString() + ": input " + i +
-                      " is a future or unbound value");
-                return null;
-            }
-            Input unbound = mInputs2.get(i);
-            unbound.set(obj);
-        }
-
-        mRS.nScriptGroup2Execute(getID(mRS));
-
-        Object[] outputObjs = new Object[mOutputs2.length];
-        int i = 0;
-        for (Future f : mOutputs2) {
-            Object output = f.getValue();
-            if (output instanceof Input) {
-                output = ((Input)output).get();
-            }
-            outputObjs[i++] = output;
-        }
-        return outputObjs;
-    }
-
-    /**
-     * Sets an input of the ScriptGroup. This specifies an
-     * Allocation to be used for kernels that require an input
-     * Allocation provided from outside of the ScriptGroup.
-     *
-     * @deprecated Set arguments to {@link #execute(Object...)} instead.
-     *
-     * @param s The ID of the kernel where the allocation should be
-     *          connected.
-     * @param a The allocation to connect.
-     */
-    @Deprecated
-    public void setInput(Script.KernelID s, Allocation a) {
-        for (int ct=0; ct < mInputs.length; ct++) {
-            if (mInputs[ct].mKID == s) {
-                mInputs[ct].mAllocation = a;
-                if (!mUseIncSupp) {
-                    mRS.nScriptGroupSetInput(getID(mRS), s.getID(mRS), mRS.safeID(a));
-                }
-                return;
-            }
-        }
-        throw new RSIllegalArgumentException("Script not found");
-    }
-
-    /**
-     * Sets an output of the ScriptGroup. This specifies an
-     * Allocation to be used for the kernels that require an output
-     * Allocation visible after the ScriptGroup is executed.
-     *
-     * @deprecated Use return value of {@link #execute(Object...)} instead.
-     *
-     * @param s The ID of the kernel where the allocation should be
-     *          connected.
-     * @param a The allocation to connect.
-     */
-    @Deprecated
-    public void setOutput(Script.KernelID s, Allocation a) {
-        for (int ct=0; ct < mOutputs.length; ct++) {
-            if (mOutputs[ct].mKID == s) {
-                mOutputs[ct].mAllocation = a;
-                if (!mUseIncSupp) {
-                    mRS.nScriptGroupSetOutput(getID(mRS), s.getID(mRS), mRS.safeID(a));
-                }
-                return;
-            }
-        }
-        throw new RSIllegalArgumentException("Script not found");
-    }
-
-    /**
-     * Execute the ScriptGroup.  This will run all the kernels in
-     * the ScriptGroup.  No internal connection results will be visible
-     * after execution of the ScriptGroup.
-     *
-     * If Incremental Support for intrinsics is needed, the execution
-     * will take the naive path: execute kernels one by one in the
-     * correct order.
-     *
-     * @deprecated Use {@link #execute} instead.
-     */
-    @Deprecated
-    public void execute() {
-        if (!mUseIncSupp) {
-            mRS.nScriptGroupExecute(getID(mRS));
-        } else {
-            // setup the allocations.
-            for (int ct=0; ct < mNodes.size(); ct++) {
-                Node n = mNodes.get(ct);
-                for (int ct2=0; ct2 < n.mOutputs.size(); ct2++) {
-                    ConnectLine l = n.mOutputs.get(ct2);
-                    if (l.mAllocation !=null) {
-                        continue;
-                    }
-
-                    //create allocation here
-                    Allocation alloc = Allocation.createTyped(mRS, l.mAllocationType,
-                                                              Allocation.MipmapControl.MIPMAP_NONE,
-                                                              Allocation.USAGE_SCRIPT);
-
-                    l.mAllocation = alloc;
-                    for (int ct3=ct2+1; ct3 < n.mOutputs.size(); ct3++) {
-                        if (n.mOutputs.get(ct3).mFrom == l.mFrom) {
-                            n.mOutputs.get(ct3).mAllocation = alloc;
-                        }
-                    }
-                }
-            }
-            for (Node node : mNodes) {
-                for (Script.KernelID kernel : node.mKernels) {
-                    Allocation ain  = null;
-                    Allocation aout = null;
-
-                    for (ConnectLine nodeInput : node.mInputs) {
-                        if (nodeInput.mToK == kernel) {
-                            ain = nodeInput.mAllocation;
-                        }
-                    }
-
-                    for (IO sgInput : mInputs) {
-                        if (sgInput.mKID == kernel) {
-                            ain = sgInput.mAllocation;
-                        }
-                    }
-
-                    for (ConnectLine nodeOutput : node.mOutputs) {
-                        if (nodeOutput.mFrom == kernel) {
-                            aout = nodeOutput.mAllocation;
-                        }
-                    }
-
-                    for (IO sgOutput : mOutputs) {
-                        if (sgOutput.mKID == kernel) {
-                            aout = sgOutput.mAllocation;
-                        }
-                    }
-
-                    kernel.mScript.forEach(kernel.mSlot, ain, aout, null);
-                }
-            }
-        }
-    }
-
-
-    /**
-     * Helper class to build a ScriptGroup. A ScriptGroup is
-     * created in two steps.
-     * <p>
-     * First, all kernels to be used by the ScriptGroup should be added.
-     * <p>
-     * Second, add connections between kernels. There are two types
-     * of connections: kernel to kernel and kernel to field.
-     * Kernel to kernel allows a kernel's output to be passed to
-     * another kernel as input. Kernel to field allows the output of
-     * one kernel to be bound as a script global. Kernel to kernel is
-     * higher performance and should be used where possible.
-     * <p>
-     * A ScriptGroup must contain a single directed acyclic graph (DAG); it
-     * cannot contain cycles. Currently, all kernels used in a ScriptGroup
-     * must come from different Script objects. Additionally, all kernels
-     * in a ScriptGroup must have at least one input, output, or internal
-     * connection.
-     * <p>
-     * Once all connections are made, a call to {@link #create} will
-     * return the ScriptGroup object.
-     *
-     * @deprecated Use {@link Builder2} instead.
-     *
-     */
-    @Deprecated
-    public static final class Builder {
-        private RenderScript mRS;
-        private ArrayList<Node> mNodes = new ArrayList<Node>();
-        private ArrayList<ConnectLine> mLines = new ArrayList<ConnectLine>();
-        private int mKernelCount;
-        private boolean mUseIncSupp = false;
-
-        /**
-         * Create a Builder for generating a ScriptGroup.
-         *
-         *
-         * @param rs The RenderScript context.
-         */
-        public Builder(RenderScript rs) {
-            mRS = rs;
-        }
-
-        // do a DFS from original node, looking for original node
-        // any cycle that could be created must contain original node
-        private void validateCycle(Node target, Node original) {
-            for (int ct = 0; ct < target.mOutputs.size(); ct++) {
-                final ConnectLine cl = target.mOutputs.get(ct);
-                if (cl.mToK != null) {
-                    Node tn = findNode(cl.mToK.mScript);
-                    if (tn.equals(original)) {
-                        throw new RSInvalidStateException("Loops in group not allowed.");
-                    }
-                    validateCycle(tn, original);
-                }
-                if (cl.mToF != null) {
-                    Node tn = findNode(cl.mToF.mScript);
-                    if (tn.equals(original)) {
-                        throw new RSInvalidStateException("Loops in group not allowed.");
-                    }
-                    validateCycle(tn, original);
-                }
-            }
-        }
-
-        private void mergeDAGs(int valueUsed, int valueKilled) {
-            for (int ct=0; ct < mNodes.size(); ct++) {
-                if (mNodes.get(ct).dagNumber == valueKilled)
-                    mNodes.get(ct).dagNumber = valueUsed;
-            }
-        }
-
-        private void validateDAGRecurse(Node n, int dagNumber) {
-            // combine DAGs if this node has been seen already
-            if (n.dagNumber != 0 && n.dagNumber != dagNumber) {
-                mergeDAGs(n.dagNumber, dagNumber);
-                return;
-            }
-
-            n.dagNumber = dagNumber;
-            for (int ct=0; ct < n.mOutputs.size(); ct++) {
-                final ConnectLine cl = n.mOutputs.get(ct);
-                if (cl.mToK != null) {
-                    Node tn = findNode(cl.mToK.mScript);
-                    validateDAGRecurse(tn, dagNumber);
-                }
-                if (cl.mToF != null) {
-                    Node tn = findNode(cl.mToF.mScript);
-                    validateDAGRecurse(tn, dagNumber);
-                }
-            }
-        }
-
-        private void validateDAG() {
-            for (int ct=0; ct < mNodes.size(); ct++) {
-                Node n = mNodes.get(ct);
-                if (n.mInputs.size() == 0) {
-                    if (n.mOutputs.size() == 0 && mNodes.size() > 1) {
-                        String msg = "Groups cannot contain unconnected scripts";
-                        throw new RSInvalidStateException(msg);
-                    }
-                    validateDAGRecurse(n, ct+1);
-                }
-            }
-            int dagNumber = mNodes.get(0).dagNumber;
-            for (int ct=0; ct < mNodes.size(); ct++) {
-                if (mNodes.get(ct).dagNumber != dagNumber) {
-                    throw new RSInvalidStateException("Multiple DAGs in group not allowed.");
-                }
-            }
-        }
-
-        private Node findNode(Script s) {
-            for (int ct=0; ct < mNodes.size(); ct++) {
-                if (s == mNodes.get(ct).mScript) {
-                    return mNodes.get(ct);
-                }
-            }
-            return null;
-        }
-
-        private Node findNode(Script.KernelID k) {
-            for (int ct=0; ct < mNodes.size(); ct++) {
-                Node n = mNodes.get(ct);
-                for (int ct2=0; ct2 < n.mKernels.size(); ct2++) {
-                    if (k == n.mKernels.get(ct2)) {
-                        return n;
-                    }
-                }
-            }
-            return null;
-        }
-
-        /**
-         * Adds a Kernel to the group.
-         *
-         *
-         * @param k The kernel to add.
-         *
-         * @return Builder Returns this.
-         */
-        public Builder addKernel(Script.KernelID k) {
-            if (mLines.size() != 0) {
-                throw new RSInvalidStateException(
-                    "Kernels may not be added once connections exist.");
-            }
-            if (k.mScript.isIncSupp()) {
-                mUseIncSupp = true;
-            }
-            //android.util.Log.v("RSR", "addKernel 1 k=" + k);
-            if (findNode(k) != null) {
-                return this;
-            }
-            //android.util.Log.v("RSR", "addKernel 2 ");
-            mKernelCount++;
-            Node n = findNode(k.mScript);
-            if (n == null) {
-                //android.util.Log.v("RSR", "addKernel 3 ");
-                n = new Node(k.mScript);
-                mNodes.add(n);
-            }
-            n.mKernels.add(k);
-            return this;
-        }
-
-        /**
-         * Adds a connection to the group.
-         *
-         *
-         * @param t The type of the connection. This is used to
-         *          determine the kernel launch sizes on the source side
-         *          of this connection.
-         * @param from The source for the connection.
-         * @param to The destination of the connection.
-         *
-         * @return Builder Returns this
-         */
-        public Builder addConnection(Type t, Script.KernelID from, Script.FieldID to) {
-            //android.util.Log.v("RSR", "addConnection " + t +", " + from + ", " + to);
-            Node nf = findNode(from);
-            if (nf == null) {
-                throw new RSInvalidStateException("From script not found.");
-            }
-
-            Node nt = findNode(to.mScript);
-            if (nt == null) {
-                throw new RSInvalidStateException("To script not found.");
-            }
-
-            ConnectLine cl = new ConnectLine(t, from, to);
-            mLines.add(new ConnectLine(t, from, to));
-
-            nf.mOutputs.add(cl);
-            nt.mInputs.add(cl);
-
-            validateCycle(nf, nf);
-            return this;
-        }
-
-        /**
-         * Adds a connection to the group.
-         *
-         *
-         * @param t The type of the connection. This is used to
-         *          determine the kernel launch sizes for both sides of
-         *          this connection.
-         * @param from The source for the connection.
-         * @param to The destination of the connection.
-         *
-         * @return Builder Returns this
-         */
-        public Builder addConnection(Type t, Script.KernelID from, Script.KernelID to) {
-            //android.util.Log.v("RSR", "addConnection " + t +", " + from + ", " + to);
-            Node nf = findNode(from);
-            if (nf == null) {
-                throw new RSInvalidStateException("From script not found.");
-            }
-
-            Node nt = findNode(to);
-            if (nt == null) {
-                throw new RSInvalidStateException("To script not found.");
-            }
-
-            ConnectLine cl = new ConnectLine(t, from, to);
-            mLines.add(new ConnectLine(t, from, to));
-
-            nf.mOutputs.add(cl);
-            nt.mInputs.add(cl);
-
-            validateCycle(nf, nf);
-            return this;
-        }
-
-        /**
-         * Calculate the order of each node.
-         *
-         *
-         * @return Success or Fail
-         */
-        private boolean calcOrderRecurse(Node node0, int depth) {
-            node0.mSeen = true;
-            if (node0.mOrder < depth) {
-                node0.mOrder = depth;
-            }
-            boolean ret = true;
-
-            for (ConnectLine link : node0.mOutputs) {
-                Node node1 = null;
-                if (link.mToF != null) {
-                    node1 = findNode(link.mToF.mScript);
-                } else {
-                    node1 = findNode(link.mToK.mScript);
-                }
-                if (node1.mSeen) {
-                    return false;
-                }
-                ret &= calcOrderRecurse(node1, node0.mOrder + 1);
-            }
-
-            return ret;
-        }
-
-        private boolean calcOrder() {
-            boolean ret = true;
-            for (Node n0 : mNodes) {
-                if (n0.mInputs.size() == 0) {
-                    for (Node n1 : mNodes) {
-                        n1.mSeen = false;
-                    }
-                    ret &= calcOrderRecurse(n0, 1);
-                }
-            }
-
-            Collections.sort(mNodes, new Comparator<Node>() {
-                public int compare(Node n1, Node n2) {
-                    return n1.mOrder - n2.mOrder;
-                }
-            });
-
-            return ret;
-        }
-
-        /**
-         * Creates the Script group.
-         *
-         *
-         * @return ScriptGroup The new ScriptGroup
-         */
-        public ScriptGroup create() {
-
-            if (mNodes.size() == 0) {
-                throw new RSInvalidStateException("Empty script groups are not allowed");
-            }
-
-            // reset DAG numbers in case we're building a second group
-            for (int ct=0; ct < mNodes.size(); ct++) {
-                mNodes.get(ct).dagNumber = 0;
-            }
-            validateDAG();
-
-            ArrayList<IO> inputs = new ArrayList<IO>();
-            ArrayList<IO> outputs = new ArrayList<IO>();
-
-            long[] kernels = new long[mKernelCount];
-            int idx = 0;
-            for (int ct=0; ct < mNodes.size(); ct++) {
-                Node n = mNodes.get(ct);
-                for (int ct2=0; ct2 < n.mKernels.size(); ct2++) {
-                    final Script.KernelID kid = n.mKernels.get(ct2);
-                    kernels[idx++] = kid.getID(mRS);
-
-                    boolean hasInput = false;
-                    boolean hasOutput = false;
-                    for (int ct3=0; ct3 < n.mInputs.size(); ct3++) {
-                        if (n.mInputs.get(ct3).mToK == kid) {
-                            hasInput = true;
-                        }
-                    }
-                    for (int ct3=0; ct3 < n.mOutputs.size(); ct3++) {
-                        if (n.mOutputs.get(ct3).mFrom == kid) {
-                            hasOutput = true;
-                        }
-                    }
-                    if (!hasInput) {
-                        inputs.add(new IO(kid));
-                    }
-                    if (!hasOutput) {
-                        outputs.add(new IO(kid));
-                    }
-                }
-            }
-            if (idx != mKernelCount) {
-                throw new RSRuntimeException("Count mismatch, should not happen.");
-            }
-
-            long id = 0;
-            if (!mUseIncSupp) {
-                long[] src = new long[mLines.size()];
-                long[] dstk = new long[mLines.size()];
-                long[] dstf = new long[mLines.size()];
-                long[] types = new long[mLines.size()];
-
-                for (int ct=0; ct < mLines.size(); ct++) {
-                    ConnectLine cl = mLines.get(ct);
-                    src[ct] = cl.mFrom.getID(mRS);
-                    if (cl.mToK != null) {
-                        dstk[ct] = cl.mToK.getID(mRS);
-                    }
-                    if (cl.mToF != null) {
-                        dstf[ct] = cl.mToF.getID(mRS);
-                    }
-                    types[ct] = cl.mAllocationType.getID(mRS);
-                }
-                id = mRS.nScriptGroupCreate(kernels, src, dstk, dstf, types);
-                if (id == 0) {
-                    throw new RSRuntimeException("Object creation error, should not happen.");
-                }
-            } else {
-                //Calculate the order of the DAG so that script can run one after another.
-                calcOrder();
-            }
-
-            ScriptGroup sg = new ScriptGroup(id, mRS);
-            sg.mOutputs = new IO[outputs.size()];
-            for (int ct=0; ct < outputs.size(); ct++) {
-                sg.mOutputs[ct] = outputs.get(ct);
-            }
-
-            sg.mInputs = new IO[inputs.size()];
-            for (int ct=0; ct < inputs.size(); ct++) {
-                sg.mInputs[ct] = inputs.get(ct);
-            }
-            sg.mNodes = mNodes;
-            sg.mUseIncSupp = mUseIncSupp;
-            return sg;
-        }
-
-    }
-
-    /**
-     * Represents a binding of a value to a global variable in a
-     * kernel or invocable function. Used in closure creation.
-     */
-
-    public static final class Binding {
-        private final Script.FieldID mField;
-        private final Object mValue;
-
-        /**
-         * Returns a Binding object that binds value to field
-         *
-         * @param field the Script.FieldID of the global variable
-         * @param value the value
-         */
-
-        public Binding(Script.FieldID field, Object value) {
-            mField = field;
-            mValue = value;
-        }
-
-        /**
-         * Returns the field ID
-         */
-
-        public Script.FieldID getField() { return mField; }
-
-        /**
-         * Returns the value
-         */
-
-        public Object getValue() { return mValue; }
-    }
-
-    /**
-     * The builder class for creating script groups
-     * <p>
-     * A script group is created using closures (see class {@link Closure}).
-     * A closure is a function call to a kernel or
-     * invocable function. Each function argument or global variable accessed inside
-     * the function is bound to 1) a known value, 2) a script group input
-     * (see class {@link Input}), or 3) a
-     * future (see class {@link Future}).
-     * A future is the output of a closure, either the return value of the
-     * function or a global variable written by that function.
-     * <p>
-     * Closures are created using the {@link #addKernel} or {@link #addInvoke}
-     * methods.
-     * When a closure is created, futures from previously created closures
-     * can be used as its inputs.
-     * External script group inputs can be used as inputs to individual closures as well.
-     * An external script group input is created using the {@link #addInput} method.
-     * A script group is created by a call to the {@link #create} method, which
-     * accepts an array of futures as the outputs for the script group.
-     * <p>
-     * Closures in a script group can be evaluated in any order as long as the
-     * following conditions are met:
-     * 1) a closure must be evaluated before any other closures that take its
-     * futures as inputs;
-     * 2) all closures added before an invoke closure must be evaluated
-     * before it;
-     * and 3) all closures added after an invoke closure must be evaluated after
-     * it.
-     * As a special case, the order that the closures are added is a legal
-     * evaluation order. However, other evaluation orders are possible, including
-     * concurrently evaluating independent closures.
-     */
-
-    public static final class Builder2 {
-        RenderScript mRS;
-        List<Closure> mClosures;
-        List<Input> mInputs;
-        private static final String TAG = "ScriptGroup.Builder2";
-
-        /**
-         * Returns a Builder object
-         *
-         * @param rs the RenderScript context
-         */
-        public Builder2(RenderScript rs) {
-            mRS = rs;
-            mClosures = new ArrayList<Closure>();
-            mInputs = new ArrayList<Input>();
-        }
-
-        /**
-         * Adds a closure for a kernel
-         *
-         * @param k Kernel ID for the kernel function
-         * @param returnType Allocation type for the return value
-         * @param args arguments to the kernel function
-         * @param globalBindings bindings for global variables
-         * @return a closure
-         */
-
-        private Closure addKernelInternal(Script.KernelID k, Type returnType, Object[] args,
-                                          Map<Script.FieldID, Object> globalBindings) {
-            Closure c = new Closure(mRS, k, returnType, args, globalBindings);
-            mClosures.add(c);
-            return c;
-        }
-
-        /**
-         * Adds a closure for an invocable function
-         *
-         * @param invoke Invoke ID for the invocable function
-         * @param args arguments to the invocable function
-         * @param globalBindings bindings for global variables
-         * @return a closure
-         */
-
-        private Closure addInvokeInternal(Script.InvokeID invoke, Object[] args,
-                                          Map<Script.FieldID, Object> globalBindings) {
-            Closure c = new Closure(mRS, invoke, args, globalBindings);
-            mClosures.add(c);
-            return c;
-        }
-
-        /**
-         * Adds a script group input
-         *
-         * @return a script group input, which can be used as an argument or a value to
-         *     a global variable for creating closures
-         */
-
-        public Input addInput() {
-            Input unbound = new Input();
-            mInputs.add(unbound);
-            return unbound;
-        }
-
-        /**
-         * Adds a closure for a kernel
-         *
-         * @param k Kernel ID for the kernel function
-         * @param argsAndBindings arguments followed by bindings for global variables
-         * @return a closure
-         */
-
-        public Closure addKernel(Script.KernelID k, Type returnType, Object... argsAndBindings) {
-            ArrayList<Object> args = new ArrayList<Object>();
-            Map<Script.FieldID, Object> bindingMap = new HashMap<Script.FieldID, Object>();
-            if (!seperateArgsAndBindings(argsAndBindings, args, bindingMap)) {
-                return null;
-            }
-            return addKernelInternal(k, returnType, args.toArray(), bindingMap);
-        }
-
-        /**
-         * Adds a closure for an invocable function
-         *
-         * @param invoke Invoke ID for the invocable function
-         * @param argsAndBindings arguments followed by bindings for global variables
-         * @return a closure
-         */
-
-        public Closure addInvoke(Script.InvokeID invoke, Object... argsAndBindings) {
-            ArrayList<Object> args = new ArrayList<Object>();
-            Map<Script.FieldID, Object> bindingMap = new HashMap<Script.FieldID, Object>();
-            if (!seperateArgsAndBindings(argsAndBindings, args, bindingMap)) {
-                return null;
-            }
-            return addInvokeInternal(invoke, args.toArray(), bindingMap);
-        }
-
-        /**
-         * Creates a script group
-         *
-         * @param name name for the script group. Legal names can only contain letters, digits,
-         *        '-', or '_'. The name can be no longer than 100 characters.
-         * @param outputs futures intended as outputs of the script group
-         * @return a script group
-         */
-
-        public ScriptGroup create(String name, Future... outputs) {
-            if (name == null || name.isEmpty() || name.length() > 100 ||
-                !name.equals(name.replaceAll("[^a-zA-Z0-9-]", "_"))) {
-                throw new RSIllegalArgumentException("invalid script group name");
-            }
-            ScriptGroup ret = new ScriptGroup(mRS, name, mClosures, mInputs, outputs);
-            return ret;
-        }
-
-        private boolean seperateArgsAndBindings(Object[] argsAndBindings,
-                                                ArrayList<Object> args,
-                                                Map<Script.FieldID, Object> bindingMap) {
-            int i;
-            for (i = 0; i < argsAndBindings.length; i++) {
-                if (argsAndBindings[i] instanceof Binding) {
-                    break;
-                }
-                args.add(argsAndBindings[i]);
-            }
-
-            for (; i < argsAndBindings.length; i++) {
-                if (!(argsAndBindings[i] instanceof Binding)) {
-                    return false;
-                }
-                Binding b = (Binding)argsAndBindings[i];
-                bindingMap.put(b.getField(), b.getValue());
-            }
-
-            return true;
-        }
-
-    }
-
-}
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsic.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsic.java
deleted file mode 100644
index e59cf6d..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsic.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-/**
- * Base class for all Intrinsic scripts. An intrinsic a script
- * which implements a pre-defined function. Intrinsics are
- * provided to provide effecient implemtations of common
- * operations.
- *
- * Not intended for direct use.
- **/
-public abstract class ScriptIntrinsic extends Script {
-    ScriptIntrinsic(long id, RenderScript rs) {
-        super(id, rs);
-        if (id == 0) {
-            throw new RSRuntimeException("Loading of ScriptIntrinsic failed.");
-        }
-    }
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsic3DLUT.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsic3DLUT.java
deleted file mode 100644
index 7fc71f3..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsic3DLUT.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.Log;
-
-/**
- *
- * Intrinsic for converting RGB to RGBA by using a 3D lookup table.  The
- * incoming r,g,b values are use as normalized x,y,z coordinates into a 3D
- * allocation.  The 8 nearest values are sampled and linearly interpolated.  The
- * result is placed in the output.
- *
- **/
-public class ScriptIntrinsic3DLUT extends ScriptIntrinsic {
-    private Allocation mLUT;
-    private Element mElement;
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 19;
-
-    protected ScriptIntrinsic3DLUT(long id, RenderScript rs, Element e) {
-        super(id, rs);
-        mElement = e;
-    }
-
-    /**
-     * Supported elements types are {@link Element#U8_4}
-     *
-     * The defaults tables are identity.
-     *
-     * @param rs The RenderScript context
-     * @param e Element type for intputs and outputs
-     *
-     * @return ScriptIntrinsic3DLUT
-     */
-    public static ScriptIntrinsic3DLUT create(RenderScript rs, Element e) {
-        if (!e.isCompatible(Element.U8_4(rs))) {
-            throw new RSIllegalArgumentException("Element must be compatible with uchar4.");
-        }
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(8, e.getID(rs), mUseIncSupp);
-
-        ScriptIntrinsic3DLUT si = new ScriptIntrinsic3DLUT(id, rs, e);
-        si.setIncSupp(mUseIncSupp);
-        return si;
-    }
-
-    /**
-     * Sets the {@link android.support.v8.renderscript.Allocation} to be used as
-     * the lookup table.
-     *
-     * The lookup table must use the same
-     * {@link android.support.v8.renderscript.Element} as the intrinsic.
-     *
-     */
-
-    public void setLUT(Allocation lut) {
-        final Type t = lut.getType();
-
-        if (t.getZ() == 0) {
-            throw new RSIllegalArgumentException("LUT must be 3d.");
-        }
-
-        if (!t.getElement().isCompatible(mElement)) {
-            throw new RSIllegalArgumentException("LUT element type must match.");
-        }
-
-        mLUT = lut;
-        setVar(0, mLUT);
-    }
-
-
-    /**
-     * Invoke the kernel and apply the lookup to each cell of ain
-     * and copy to aout.
-     *
-     * @param ain Input allocation
-     * @param aout Output allocation
-     */
-    public void forEach(Allocation ain, Allocation aout) {
-        forEach(0, ain, aout, null);
-    }
-
-    /**
-     * Get a KernelID for this intrinsic kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelID() {
-        return createKernelID(0, 3, null, null);
-    }
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicBLAS.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicBLAS.java
deleted file mode 100644
index fe32989..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicBLAS.java
+++ /dev/null
@@ -1,4190 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.support.annotation.IntDef;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- *
- * ScriptIntrinsicBLAS class provides high performance RenderScript APIs to BLAS.
- *
- * The BLAS (Basic Linear Algebra Subprograms) are routines that provide standard
- * building blocks for performing basic vector and matrix operations.
- *
- * For detailed description of BLAS, please refer to http://www.netlib.org/blas/
- *
- **/
-public final class ScriptIntrinsicBLAS extends ScriptIntrinsic {
-    private Allocation mLUT;
-    private static final int INTRINSIC_API_LEVEL = 23;
-
-    private ScriptIntrinsicBLAS(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    private static final int RsBlas_sdsdot = 1;
-    private static final int RsBlas_dsdot = 2;
-    private static final int RsBlas_sdot = 3;
-    private static final int RsBlas_ddot = 4;
-    private static final int RsBlas_cdotu_sub = 5;
-    private static final int RsBlas_cdotc_sub = 6;
-    private static final int RsBlas_zdotu_sub = 7;
-    private static final int RsBlas_zdotc_sub = 8;
-    private static final int RsBlas_snrm2 = 9;
-    private static final int RsBlas_sasum = 10;
-    private static final int RsBlas_dnrm2 = 11;
-    private static final int RsBlas_dasum = 12;
-    private static final int RsBlas_scnrm2 = 13;
-    private static final int RsBlas_scasum = 14;
-    private static final int RsBlas_dznrm2 = 15;
-    private static final int RsBlas_dzasum = 16;
-    private static final int RsBlas_isamax = 17;
-    private static final int RsBlas_idamax = 18;
-    private static final int RsBlas_icamax = 19;
-    private static final int RsBlas_izamax = 20;
-    private static final int RsBlas_sswap = 21;
-    private static final int RsBlas_scopy = 22;
-    private static final int RsBlas_saxpy = 23;
-    private static final int RsBlas_dswap = 24;
-    private static final int RsBlas_dcopy = 25;
-    private static final int RsBlas_daxpy = 26;
-    private static final int RsBlas_cswap = 27;
-    private static final int RsBlas_ccopy = 28;
-    private static final int RsBlas_caxpy = 29;
-    private static final int RsBlas_zswap = 30;
-    private static final int RsBlas_zcopy = 31;
-    private static final int RsBlas_zaxpy = 32;
-    private static final int RsBlas_srotg = 33;
-    private static final int RsBlas_srotmg = 34;
-    private static final int RsBlas_srot = 35;
-    private static final int RsBlas_srotm = 36;
-    private static final int RsBlas_drotg = 37;
-    private static final int RsBlas_drotmg = 38;
-    private static final int RsBlas_drot = 39;
-    private static final int RsBlas_drotm = 40;
-    private static final int RsBlas_sscal = 41;
-    private static final int RsBlas_dscal = 42;
-    private static final int RsBlas_cscal = 43;
-    private static final int RsBlas_zscal = 44;
-    private static final int RsBlas_csscal = 45;
-    private static final int RsBlas_zdscal = 46;
-    private static final int RsBlas_sgemv = 47;
-    private static final int RsBlas_sgbmv = 48;
-    private static final int RsBlas_strmv = 49;
-    private static final int RsBlas_stbmv = 50;
-    private static final int RsBlas_stpmv = 51;
-    private static final int RsBlas_strsv = 52;
-    private static final int RsBlas_stbsv = 53;
-    private static final int RsBlas_stpsv = 54;
-    private static final int RsBlas_dgemv = 55;
-    private static final int RsBlas_dgbmv = 56;
-    private static final int RsBlas_dtrmv = 57;
-    private static final int RsBlas_dtbmv = 58;
-    private static final int RsBlas_dtpmv = 59;
-    private static final int RsBlas_dtrsv = 60;
-    private static final int RsBlas_dtbsv = 61;
-    private static final int RsBlas_dtpsv = 62;
-    private static final int RsBlas_cgemv = 63;
-    private static final int RsBlas_cgbmv = 64;
-    private static final int RsBlas_ctrmv = 65;
-    private static final int RsBlas_ctbmv = 66;
-    private static final int RsBlas_ctpmv = 67;
-    private static final int RsBlas_ctrsv = 68;
-    private static final int RsBlas_ctbsv = 69;
-    private static final int RsBlas_ctpsv = 70;
-    private static final int RsBlas_zgemv = 71;
-    private static final int RsBlas_zgbmv = 72;
-    private static final int RsBlas_ztrmv = 73;
-    private static final int RsBlas_ztbmv = 74;
-    private static final int RsBlas_ztpmv = 75;
-    private static final int RsBlas_ztrsv = 76;
-    private static final int RsBlas_ztbsv = 77;
-    private static final int RsBlas_ztpsv = 78;
-    private static final int RsBlas_ssymv = 79;
-    private static final int RsBlas_ssbmv = 80;
-    private static final int RsBlas_sspmv = 81;
-    private static final int RsBlas_sger = 82;
-    private static final int RsBlas_ssyr = 83;
-    private static final int RsBlas_sspr = 84;
-    private static final int RsBlas_ssyr2 = 85;
-    private static final int RsBlas_sspr2 = 86;
-    private static final int RsBlas_dsymv = 87;
-    private static final int RsBlas_dsbmv = 88;
-    private static final int RsBlas_dspmv = 89;
-    private static final int RsBlas_dger = 90;
-    private static final int RsBlas_dsyr = 91;
-    private static final int RsBlas_dspr = 92;
-    private static final int RsBlas_dsyr2 = 93;
-    private static final int RsBlas_dspr2 = 94;
-    private static final int RsBlas_chemv = 95;
-    private static final int RsBlas_chbmv = 96;
-    private static final int RsBlas_chpmv = 97;
-    private static final int RsBlas_cgeru = 98;
-    private static final int RsBlas_cgerc = 99;
-    private static final int RsBlas_cher = 100;
-    private static final int RsBlas_chpr = 101;
-    private static final int RsBlas_cher2 = 102;
-    private static final int RsBlas_chpr2 = 103;
-    private static final int RsBlas_zhemv = 104;
-    private static final int RsBlas_zhbmv = 105;
-    private static final int RsBlas_zhpmv = 106;
-    private static final int RsBlas_zgeru = 107;
-    private static final int RsBlas_zgerc = 108;
-    private static final int RsBlas_zher = 109;
-    private static final int RsBlas_zhpr = 110;
-    private static final int RsBlas_zher2 = 111;
-    private static final int RsBlas_zhpr2 = 112;
-    private static final int RsBlas_sgemm = 113;
-    private static final int RsBlas_ssymm = 114;
-    private static final int RsBlas_ssyrk = 115;
-    private static final int RsBlas_ssyr2k = 116;
-    private static final int RsBlas_strmm = 117;
-    private static final int RsBlas_strsm = 118;
-    private static final int RsBlas_dgemm = 119;
-    private static final int RsBlas_dsymm = 120;
-    private static final int RsBlas_dsyrk = 121;
-    private static final int RsBlas_dsyr2k = 122;
-    private static final int RsBlas_dtrmm = 123;
-    private static final int RsBlas_dtrsm = 124;
-    private static final int RsBlas_cgemm = 125;
-    private static final int RsBlas_csymm = 126;
-    private static final int RsBlas_csyrk = 127;
-    private static final int RsBlas_csyr2k = 128;
-    private static final int RsBlas_ctrmm = 129;
-    private static final int RsBlas_ctrsm = 130;
-    private static final int RsBlas_zgemm = 131;
-    private static final int RsBlas_zsymm = 132;
-    private static final int RsBlas_zsyrk = 133;
-    private static final int RsBlas_zsyr2k = 134;
-    private static final int RsBlas_ztrmm = 135;
-    private static final int RsBlas_ztrsm = 136;
-    private static final int RsBlas_chemm = 137;
-    private static final int RsBlas_cherk = 138;
-    private static final int RsBlas_cher2k = 139;
-    private static final int RsBlas_zhemm = 140;
-    private static final int RsBlas_zherk = 141;
-    private static final int RsBlas_zher2k = 142;
-
-    // BLAS extensions start here
-    private static final int RsBlas_bnnm = 1000;
-
-    /**
-     * Create an intrinsic to access BLAS subroutines.
-     *
-     * @param rs The RenderScript context
-     * @return ScriptIntrinsicBLAS
-     */
-    public static ScriptIntrinsicBLAS create(RenderScript rs) {
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(13, Element.U32(rs).getID(rs), mUseIncSupp);
-        ScriptIntrinsicBLAS si = new ScriptIntrinsicBLAS(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        return si;
-    }
-
-    /**
-     * @hide
-     */
-    @IntDef({NO_TRANSPOSE, TRANSPOSE, CONJ_TRANSPOSE})
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Transpose {}
-
-    /**
-     * @hide
-     */
-    @IntDef({UPPER, LOWER})
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Uplo {}
-
-    /**
-     * @hide
-     */
-    @IntDef({NON_UNIT, UNIT})
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Diag {}
-
-    /**
-     * @hide
-     */
-    @IntDef({LEFT, RIGHT})
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Side {}
-
-    public static final int NO_TRANSPOSE = 111;
-    public static final int TRANSPOSE = 112;
-    public static final int CONJ_TRANSPOSE = 113;
-
-    public static final int UPPER = 121;
-    public static final int LOWER = 122;
-
-    public static final int NON_UNIT = 131;
-    public static final int UNIT = 132;
-
-    public static final int LEFT = 141;
-    public static final int RIGHT = 142;
-
-    static void validateSide(@Side int Side) {
-        if (Side != LEFT && Side != RIGHT) {
-            throw new RSRuntimeException("Invalid side passed to BLAS");
-        }
-    }
-
-    static void validateTranspose(@Transpose int Trans) {
-        if (Trans != NO_TRANSPOSE && Trans != TRANSPOSE &&
-            Trans != CONJ_TRANSPOSE) {
-            throw new RSRuntimeException("Invalid transpose passed to BLAS");
-        }
-    }
-
-    static void validateConjTranspose(@Transpose int Trans) {
-        if (Trans != NO_TRANSPOSE &&
-            Trans != CONJ_TRANSPOSE) {
-            throw new RSRuntimeException("Invalid transpose passed to BLAS");
-        }
-    }
-
-    static void validateDiag(@Diag int Diag) {
-        if (Diag != NON_UNIT && Diag != UNIT) {
-            throw new RSRuntimeException("Invalid diag passed to BLAS");
-        }
-    }
-
-    static void validateUplo(@Uplo int Uplo) {
-        if (Uplo != UPPER && Uplo != LOWER) {
-            throw new RSRuntimeException("Invalid uplo passed to BLAS");
-        }
-    }
-
-
-    /**
-     * Level 2 BLAS
-     */
-
-    static void validateGEMV(Element e, int TransA, Allocation A, Allocation X, int incX, Allocation Y, int incY) {
-        validateTranspose(TransA);
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-        if (!A.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e) ||
-            !Y.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        if (X.getType().getY() > 1 || Y.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        if (incX <= 0 || incY <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = -1, expectedYDim = -1;
-        if (TransA == NO_TRANSPOSE) {
-            expectedXDim = 1 + (N - 1) * incX;
-            expectedYDim = 1 + (M - 1) * incY;
-        } else {
-            expectedXDim = 1 + (M - 1) * incX;
-            expectedYDim = 1 + (N - 1) * incY;
-        }
-        if (X.getType().getX() != expectedXDim ||
-            Y.getType().getX() != expectedYDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for GEMV");
-        }
-    }
-
-    /**
-     * SGEMV performs one of the matrix-vector operations
-     * y := alpha*A*x + beta*y   or   y := alpha*A**T*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/d58/sgemv_8f.html
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void SGEMV(@Transpose int TransA, float alpha, Allocation A, Allocation X, int incX, float beta, Allocation Y, int incY) {
-        validateGEMV(Element.F32(mRS), TransA, A, X, incX, Y, incY);
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_sgemv, TransA, 0, 0, 0, 0, M, N, 0, alpha, aID, xID, beta, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DGEMV performs one of the matrix-vector operations
-     * y := alpha*A*x + beta*y   or   y := alpha*A**T*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/dc/da8/dgemv_8f.html
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void DGEMV(@Transpose int TransA, double alpha, Allocation A, Allocation X, int incX, double beta, Allocation Y, int incY) {
-        validateGEMV(Element.F64(mRS), TransA, A, X, incX, Y, incY);
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dgemv, TransA, 0, 0, 0, 0, M, N, 0, alpha, aID, xID, beta, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CGEMV performs one of the matrix-vector operations
-     * y := alpha*A*x + beta*y   or   y := alpha*A**T*x + beta*y   or   y := alpha*A**H*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d4/d8a/cgemv_8f.html
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void CGEMV(@Transpose int TransA, Float2 alpha, Allocation A, Allocation X, int incX, Float2 beta, Allocation Y, int incY) {
-        validateGEMV(Element.F32_2(mRS), TransA, A, X, incX, Y, incY);
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_cgemv, TransA, 0, 0, 0, 0, M, N, 0, alpha.x, alpha.y, aID, xID, beta.x, beta.y, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZGEMV performs one of the matrix-vector operations
-     * y := alpha*A*x + beta*y   or   y := alpha*A**T*x + beta*y   or   y := alpha*A**H*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/d40/zgemv_8f.html
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void ZGEMV(@Transpose int TransA, Double2 alpha, Allocation A, Allocation X, int incX, Double2 beta, Allocation Y, int incY) {
-        validateGEMV(Element.F64_2(mRS), TransA, A, X, incX, Y, incY);
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zgemv, TransA, 0, 0, 0, 0, M, N, 0, alpha.x, alpha.y, aID, xID, beta.x, beta.y, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SGBMV performs one of the matrix-vector operations
-     * y := alpha*A*x + beta*y   or   y := alpha*A**T*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d6/d46/sgbmv_8f.html
-     *
-     * Note: For a M*N matrix, the input Allocation should also be of size M*N (dimY = M, dimX = N),
-     *       but only the region M*(KL+KU+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert the original matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, m):
-     *              for j in range(max(0, i-kl), min(i+ku+1, n)):
-     *                  b[i, j-i+kl] = a[i, j]
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param KL The number of sub-diagonals of the matrix A.
-     * @param KU The number of super-diagonals of the matrix A.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains the band matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void SGBMV(@Transpose int TransA, int KL, int KU, float alpha, Allocation A, Allocation X, int incX, float beta, Allocation Y, int incY) {
-        // GBMV has the same validation requirements as GEMV + KL and KU >= 0
-        validateGEMV(Element.F32(mRS), TransA, A, X, incX, Y, incY);
-        if (KL < 0 || KU < 0) {
-            throw new RSRuntimeException("KL and KU must be greater than or equal to 0");
-        }
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_sgbmv, TransA, 0, 0, 0, 0, M, N, 0, alpha, aID, xID, beta, yID, incX, incY, KL, KU, mUseIncSupp);
-    }
-
-    /**
-     * DGBMV performs one of the matrix-vector operations
-     * y := alpha*A*x + beta*y   or   y := alpha*A**T*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d2/d3f/dgbmv_8f.html
-     *
-     * Note: For a M*N matrix, the input Allocation should also be of size M*N (dimY = M, dimX = N),
-     *       but only the region M*(KL+KU+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert the original matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, m):
-     *              for j in range(max(0, i-kl), min(i+ku+1, n)):
-     *                  b[i, j-i+kl] = a[i, j]
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param KL The number of sub-diagonals of the matrix A.
-     * @param KU The number of super-diagonals of the matrix A.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains the band matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void DGBMV(@Transpose int TransA, int KL, int KU, double alpha, Allocation A, Allocation X, int incX, double beta, Allocation Y, int incY) {
-        // GBMV has the same validation requirements as GEMV + KL and KU >= 0
-        validateGEMV(Element.F64(mRS), TransA, A, X, incX, Y, incY);
-        if (KL < 0 || KU < 0) {
-            throw new RSRuntimeException("KL and KU must be greater than or equal to 0");
-        }
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dgbmv, TransA, 0, 0, 0, 0, M, N, 0, alpha, aID, xID, beta, yID, incX, incY, KL, KU, mUseIncSupp);
-    }
-
-    /**
-     * CGBMV performs one of the matrix-vector operations
-     * y := alpha*A*x + beta*y   or   y := alpha*A**T*x + beta*y   or   y := alpha*A**H*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d0/d75/cgbmv_8f.html
-     *
-     * Note: For a M*N matrix, the input Allocation should also be of size M*N (dimY = M, dimX = N),
-     *       but only the region M*(KL+KU+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert the original matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, m):
-     *              for j in range(max(0, i-kl), min(i+ku+1, n)):
-     *                  b[i, j-i+kl] = a[i, j]
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param KL The number of sub-diagonals of the matrix A.
-     * @param KU The number of super-diagonals of the matrix A.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains the band matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void CGBMV(@Transpose int TransA, int KL, int KU, Float2 alpha, Allocation A, Allocation X, int incX, Float2 beta, Allocation Y, int incY) {
-        // GBMV has the same validation requirements as GEMV + KL and KU >= 0
-        validateGEMV(Element.F32_2(mRS), TransA, A, X, incX, Y, incY);
-        if (KL < 0 || KU < 0) {
-            throw new RSRuntimeException("KL and KU must be greater than or equal to 0");
-        }
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_cgbmv, TransA, 0, 0, 0, 0, M, N, 0, alpha.x, alpha.y, aID, xID, beta.x, beta.y, yID, incX, incY, KL, KU, mUseIncSupp);
-    }
-
-    /**
-     * ZGBMV performs one of the matrix-vector operations
-     * y := alpha*A*x + beta*y   or   y := alpha*A**T*x + beta*y   or   y := alpha*A**H*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d9/d46/zgbmv_8f.html
-     *
-     * Note: For a M*N matrix, the input Allocation should also be of size M*N (dimY = M, dimX = N),
-     *       but only the region M*(KL+KU+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert the original matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, m):
-     *              for j in range(max(0, i-kl), min(i+ku+1, n)):
-     *                  b[i, j-i+kl] = a[i, j]
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param KL The number of sub-diagonals of the matrix A.
-     * @param KU The number of super-diagonals of the matrix A.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains the band matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void ZGBMV(@Transpose int TransA, int KL, int KU, Double2 alpha, Allocation A, Allocation X, int incX, Double2 beta, Allocation Y, int incY) {
-        // GBMV has the same validation requirements as GEMV + KL and KU >= 0
-        validateGEMV(Element.F64_2(mRS), TransA, A, X, incX, Y, incY);
-        if (KL < 0 || KU < 0) {
-            throw new RSRuntimeException("KL and KU must be greater than or equal to 0");
-        }
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zgbmv, TransA, 0, 0, 0, 0, M, N, 0, alpha.x, alpha.y, aID, xID, beta.x, beta.y, yID, incX, incY, KL, KU, mUseIncSupp);
-    }
-
-    static void validateTRMV(Element e, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Allocation A, Allocation X, int incX) {
-        validateTranspose(TransA);
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        int N = A.getType().getY();
-        if (A.getType().getX() != N) {
-            throw new RSRuntimeException("A must be a square matrix for TRMV");
-        }
-        if (!A.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        if (X.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        if (incX <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (N - 1) * incX;
-        if (X.getType().getX() != expectedXDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for TRMV");
-        }
-    }
-
-    static int validateTPMV(Element e, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Allocation Ap, Allocation X, int incX) {
-        validateTranspose(TransA);
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        if (!Ap.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        if (X.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        if (Ap.getType().getY() > 1) {
-            throw new RSRuntimeException("Ap must have a Y dimension of 0 or 1");
-        }
-
-        int N = (int)Math.sqrt((double)Ap.getType().getX() * 2);
-        //is it really doing anything?
-        if (Ap.getType().getX() != ((N * (N+1)) / 2)) {
-            throw new RSRuntimeException("Invalid dimension for Ap");
-        }
-        if (incX <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (N - 1) * incX;
-        if (X.getType().getX() != expectedXDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for TPMV");
-        }
-
-        return N;
-    }
-
-    /**
-     * STRMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/de/d45/strmv_8f.html
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void STRMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Allocation A, Allocation X, int incX) {
-        validateTRMV(Element.F32(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_strmv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, aID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DTRMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/dc/d7e/dtrmv_8f.html
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void DTRMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Allocation A, Allocation X, int incX) {
-        validateTRMV(Element.F64(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dtrmv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, aID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CTRMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x   or   x := A**H*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/df/d78/ctrmv_8f.html
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void CTRMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Allocation A, Allocation X, int incX) {
-        validateTRMV(Element.F32_2(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_ctrmv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, 0, aID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZTRMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x   or   x := A**H*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d0/dd1/ztrmv_8f.html
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void ZTRMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Allocation A, Allocation X, int incX) {
-        validateTRMV(Element.F64_2(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_ztrmv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, 0, aID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * STBMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d6/d7d/stbmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param K The number of off-diagonals of the matrix A
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void STBMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  int K, Allocation A,  Allocation X,  int incX) {
-        // TBMV has the same requirements as TRMV + K >= 0
-        if (K < 0) {
-            throw new RSRuntimeException("K must be greater than or equal to 0");
-        }
-        validateTRMV(Element.F32(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_stbmv, TransA, 0, 0, Uplo, Diag, 0, N, K, 0, aID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DTBMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/df/d29/dtbmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param K The number of off-diagonals of the matrix A
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void DTBMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  int K, Allocation A,  Allocation X,  int incX) {
-        // TBMV has the same requirements as TRMV + K >= 0
-        if (K < 0) {
-            throw new RSRuntimeException("K must be greater than or equal to 0");
-        }
-        validateTRMV(Element.F64(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dtbmv, TransA, 0, 0, Uplo, Diag, 0, N, K, 0, aID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CTBMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x   or   x := A**H*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d3/dcd/ctbmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param K The number of off-diagonals of the matrix A
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void CTBMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  int K, Allocation A,  Allocation X,  int incX) {
-        // TBMV has the same requirements as TRMV + K >= 0
-        if (K < 0) {
-            throw new RSRuntimeException("K must be greater than or equal to 0");
-        }
-        validateTRMV(Element.F32_2(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_ctbmv, TransA, 0, 0, Uplo, Diag, 0, N, K, 0, 0, aID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZTBMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x   or   x := A**H*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d3/d39/ztbmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param K The number of off-diagonals of the matrix A
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void ZTBMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  int K, Allocation A,  Allocation X,  int incX) {
-        // TBMV has the same requirements as TRMV + K >= 0
-        if (K < 0) {
-            throw new RSRuntimeException("K must be greater than or equal to 0");
-        }
-        validateTRMV(Element.F64_2(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_ztbmv, TransA, 0, 0, Uplo, Diag, 0, N, K, 0, 0, aID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * STPMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/db1/stpmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param Ap The input allocation contains packed matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void STPMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation Ap,  Allocation X,  int incX) {
-        int N = validateTPMV(Element.F32(mRS), Uplo, TransA, Diag, Ap, X, incX);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_stpmv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, apID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DTPMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/dc/dcd/dtpmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param Ap The input allocation contains packed matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void DTPMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation Ap,  Allocation X,  int incX) {
-        int N = validateTPMV(Element.F64(mRS), Uplo, TransA, Diag, Ap, X, incX);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dtpmv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, apID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CTPMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x   or   x := A**H*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d4/dbb/ctpmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param Ap The input allocation contains packed matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void CTPMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation Ap,  Allocation X,  int incX) {
-        int N = validateTPMV(Element.F32_2(mRS), Uplo, TransA, Diag, Ap, X, incX);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_ctpmv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, 0, apID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZTPMV performs one of the matrix-vector operations
-     * x := A*x   or   x := A**T*x   or   x := A**H*x
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d2/d9e/ztpmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param Ap The input allocation contains packed matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void ZTPMV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation Ap,  Allocation X,  int incX) {
-        int N = validateTPMV(Element.F64_2(mRS), Uplo, TransA, Diag, Ap, X, incX);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_ztpmv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, 0, apID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * STRSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d0/d2a/strsv_8f.html
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void STRSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation A,  Allocation X,  int incX) {
-        // TRSV is the same as TRMV
-        validateTRMV(Element.F32(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_strsv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, aID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-
-    }
-
-    /**
-     * DTRSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d6/d96/dtrsv_8f.html
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void DTRSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation A,  Allocation X,  int incX) {
-        // TRSV is the same as TRMV
-        validateTRMV(Element.F64(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dtrsv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, aID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-
-    }
-
-    /**
-     * CTRSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b   or   A**H*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d4/dc8/ctrsv_8f.html
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void CTRSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation A,  Allocation X,  int incX) {
-        // TRSV is the same as TRMV
-        validateTRMV(Element.F32_2(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_ctrsv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, 0, aID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-
-    }
-
-    /**
-     * ZTRSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b   or   A**H*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d1/d2f/ztrsv_8f.html
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void ZTRSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation A,  Allocation X,  int incX) {
-        // TRSV is the same as TRMV
-        validateTRMV(Element.F64_2(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_ztrsv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, 0, aID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-
-    }
-
-    /**
-     * STBSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d0/d1f/stbsv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param K The number of off-diagonals of the matrix A
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void STBSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  int K, Allocation A,  Allocation X,  int incX) {
-        // TBSV is the same as TRMV + K >= 0
-        validateTRMV(Element.F32(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-        if (K < 0) {
-            throw new RSRuntimeException("Number of diagonals must be positive");
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_stbsv, TransA, 0, 0, Uplo, Diag, 0, N, K, 0, aID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DTBSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d4/dcf/dtbsv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param K The number of off-diagonals of the matrix A
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void DTBSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  int K, Allocation A,  Allocation X,  int incX) {
-        // TBSV is the same as TRMV + K >= 0
-        validateTRMV(Element.F64(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-        if (K < 0) {
-            throw new RSRuntimeException("Number of diagonals must be positive");
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dtbsv, TransA, 0, 0, Uplo, Diag, 0, N, K, 0, aID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CTBSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b   or   A**H*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d9/d5f/ctbsv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param K The number of off-diagonals of the matrix A
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void CTBSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  int K, Allocation A,  Allocation X,  int incX) {
-        // TBSV is the same as TRMV + K >= 0
-        validateTRMV(Element.F32_2(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-        if (K < 0) {
-            throw new RSRuntimeException("Number of diagonals must be positive");
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_ctbsv, TransA, 0, 0, Uplo, Diag, 0, N, K, 0, 0, aID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZTBSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b   or   A**H*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d4/d5a/ztbsv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param K The number of off-diagonals of the matrix A
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void ZTBSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  int K, Allocation A,  Allocation X,  int incX) {
-        // TBSV is the same as TRMV + K >= 0
-        validateTRMV(Element.F64_2(mRS), Uplo, TransA, Diag, A, X, incX);
-        int N = A.getType().getY();
-        if (K < 0) {
-            throw new RSRuntimeException("Number of diagonals must be positive");
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_ztbsv, TransA, 0, 0, Uplo, Diag, 0, N, K, 0, 0, aID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * STPSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d0/d7c/stpsv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param Ap The input allocation contains packed matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void STPSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation Ap,  Allocation X,  int incX) {
-        // TPSV is same as TPMV
-        int N = validateTPMV(Element.F32(mRS), Uplo, TransA, Diag, Ap, X, incX);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_stpsv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, apID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DTPSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d9/d84/dtpsv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param Ap The input allocation contains packed matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void DTPSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation Ap,  Allocation X,  int incX) {
-        // TPSV is same as TPMV
-        int N = validateTPMV(Element.F64(mRS), Uplo, TransA, Diag, Ap, X, incX);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dtpsv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, apID, xID, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CTPSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b   or   A**H*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d8/d56/ctpsv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param Ap The input allocation contains packed matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void CTPSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation Ap,  Allocation X,  int incX) {
-        // TPSV is same as TPMV
-        int N = validateTPMV(Element.F32_2(mRS), Uplo, TransA, Diag, Ap, X, incX);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_ctpsv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, 0, apID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZTPSV solves one of the systems of equations
-     * A*x = b   or   A**T*x = b   or   A**H*x = b
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/da/d57/ztpsv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the matrix is an upper or lower triangular matrix.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param Ap The input allocation contains packed matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     */
-    public void ZTPSV(@Uplo int Uplo, @Transpose int TransA, @Diag int Diag,  Allocation Ap,  Allocation X,  int incX) {
-        // TPSV is same as TPMV
-        int N = validateTPMV(Element.F64_2(mRS), Uplo, TransA, Diag, Ap, X, incX);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_ztpsv, TransA, 0, 0, Uplo, Diag, 0, N, 0, 0, 0, apID, xID, 0, 0, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * Level 2, S and D only
-     */
-    static int validateSYMV(Element e, @Uplo int Uplo, Allocation A, Allocation X, Allocation Y, int incX, int incY) {
-        validateUplo(Uplo);
-        int N = A.getType().getY();
-        if (A.getType().getX() != N) {
-            throw new RSRuntimeException("A must be a square matrix for SYMV");
-        }
-        if (!A.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e) ||
-            !Y.getType().getElement().isCompatible(e) ) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        if (X.getType().getY() > 1 || Y.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        if (incX <= 0 || incY <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (N - 1) * incX;
-        if (X.getType().getX() != expectedXDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for SYMV");
-        }
-        int expectedYDim = 1 + (N - 1) * incY;
-        if (Y.getType().getX() != expectedYDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for SYMV");
-        }
-        return N;
-    }
-    static int validateSPMV(Element e, @Uplo int Uplo, Allocation Ap, Allocation X, int incX, Allocation Y, int incY) {
-        validateUplo(Uplo);
-        if (!Ap.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e) ||
-            !Y.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        if (X.getType().getY() > 1 || Y.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        if (Ap.getType().getY() > 1) {
-            throw new RSRuntimeException("Ap must have a Y dimension of 0 or 1");
-        }
-
-        int N = (int)Math.sqrt((double)Ap.getType().getX() * 2);
-        if (Ap.getType().getX() != ((N * (N+1)) / 2)) {
-            throw new RSRuntimeException("Invalid dimension for Ap");
-        }
-        if (incX <= 0 || incY <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (N - 1) * incX;
-        if (X.getType().getX() != expectedXDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for SPMV");
-        }
-        int expectedYDim = 1 + (N - 1) * incY;
-        if (Y.getType().getX() != expectedYDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for SPMV");
-        }
-
-        return N;
-    }
-    static void validateGER(Element e, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        if (!A.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e) ||
-            !Y.getType().getElement().isCompatible(e) ) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-
-        if (X.getType().getY() > 1 || Y.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        if (N < 1 || M < 1) {
-            throw new RSRuntimeException("M and N must be 1 or greater for GER");
-        }
-        if (incX <= 0 || incY <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (M - 1) * incX;
-        if (X.getType().getX() != expectedXDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for GER");
-        }
-        int expectedYDim = 1 + (N - 1) * incY;
-        if (Y.getType().getX() != expectedYDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for GER");
-        }
-
-
-    }
-    static int validateSYR(Element e, @Uplo int Uplo, Allocation X, int incX, Allocation A) {
-        validateUplo(Uplo);
-        if (!A.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-
-        int N = A.getType().getX();
-
-        if (X.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-        if (N != A.getType().getY()) {
-            throw new RSRuntimeException("A must be a symmetric matrix");
-        }
-        if (incX <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (N - 1) * incX;
-        if (X.getType().getX() != expectedXDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for SYR");
-        }
-        return N;
-    }
-    static int validateSPR(Element e, @Uplo int Uplo, Allocation X, int incX, Allocation Ap) {
-        validateUplo(Uplo);
-        if (!Ap.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        if (X.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        if (Ap.getType().getY() > 1) {
-            throw new RSRuntimeException("Ap must have a Y dimension of 0 or 1");
-        }
-
-        int N = (int)Math.sqrt((double)Ap.getType().getX() * 2);
-        if (Ap.getType().getX() != ((N * (N+1)) / 2)) {
-            throw new RSRuntimeException("Invalid dimension for Ap");
-        }
-        if (incX <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (N - 1) * incX;
-        if (X.getType().getX() != expectedXDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for SPR");
-        }
-
-        return N;
-    }
-
-    static int validateSYR2(Element e, @Uplo int Uplo, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        validateUplo(Uplo);
-        if (!A.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e) ||
-            !Y.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-
-        if (X.getType().getY() > 1 || Y.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        int N = A.getType().getX();
-
-        if (N != A.getType().getY()) {
-            throw new RSRuntimeException("A must be a symmetric matrix");
-        }
-        if (incX <= 0 || incY <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (N - 1) * incX;
-        int expectedYDim = 1 + (N - 1) * incY;
-        if (X.getType().getX() != expectedXDim || Y.getType().getX() != expectedYDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for SYR");
-        }
-        return N;
-
-    }
-    static int validateSPR2(Element e, @Uplo int Uplo, Allocation X, int incX, Allocation Y, int incY, Allocation Ap) {
-        validateUplo(Uplo);
-        if (!Ap.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e) ||
-            !Y.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        if (X.getType().getY() > 1 || Y.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        if (Ap.getType().getY() > 1) {
-            throw new RSRuntimeException("Ap must have a Y dimension of 0 or 1");
-        }
-
-        int N = (int)Math.sqrt((double)Ap.getType().getX() * 2);
-        if (Ap.getType().getX() != ((N * (N+1)) / 2)) {
-            throw new RSRuntimeException("Invalid dimension for Ap");
-        }
-        if (incX <= 0 || incY <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (N - 1) * incX;
-        int expectedYDim = 1 + (N - 1) * incY;
-        if (X.getType().getX() != expectedXDim || Y.getType().getX() != expectedYDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for SPR2");
-        }
-
-        return N;
-    }
-
-    /**
-     * SSYMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d2/d94/ssymv_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void SSYMV(@Uplo int Uplo, float alpha, Allocation A, Allocation X, int incX, float beta, Allocation Y, int incY) {
-        int N = validateSYMV(Element.F32(mRS), Uplo, A, X, Y, incX, incY);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_ssymv, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, aID, xID, beta, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SSBMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d3/da1/ssbmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of the band matrix A is being supplied.
-     * @param K The number of off-diagonals of the matrix A
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void SSBMV(@Uplo int Uplo, int K, float alpha, Allocation A, Allocation X, int incX, float beta, Allocation Y, int incY) {
-        // SBMV is the same as SYMV + K >= 0
-        if (K < 0) {
-            throw new RSRuntimeException("K must be greater than or equal to 0");
-        }
-        int N = validateSYMV(Element.F32(mRS), Uplo, A, X, Y, incX, incY);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_ssbmv, 0, 0, 0, Uplo, 0, 0, N, K, alpha, aID, xID, beta, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SSPMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d8/d68/sspmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of the matrix A is supplied in packed form.
-     * @param alpha The scalar alpha.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void SSPMV(@Uplo int Uplo, float alpha, Allocation Ap, Allocation X, int incX, float beta, Allocation Y, int incY) {
-        int N = validateSPMV(Element.F32(mRS), Uplo, Ap, X, incX, Y, incY);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_sspmv, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, apID, xID, beta, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SGER performs the rank 1 operation
-     * A := alpha*x*y**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/d5c/sger_8f.html
-     *
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     */
-    public void SGER(float alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-        validateGER(Element.F32(mRS), X, incX, Y, incY, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_sger, 0, 0, 0, 0, 0, M, N, 0, alpha, xID, yID, 0.f, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SSYR performs the rank 1 operation
-     * A := alpha*x*x**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d6/dac/ssyr_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     */
-    public void SSYR(@Uplo int Uplo, float alpha, Allocation X, int incX, Allocation A) {
-        int N = validateSYR(Element.F32(mRS), Uplo, X, incX, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_ssyr, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, xID, aID, 0.f, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SSPR performs the rank 1 operation
-     * A := alpha*x*x**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d2/d9b/sspr_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be supplied in the packed form.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     */
-    public void SSPR(@Uplo int Uplo, float alpha, Allocation X, int incX, Allocation Ap) {
-        int N = validateSPR(Element.F32(mRS), Uplo, X, incX, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_sspr, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, xID, apID, 0.f, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SSYR2 performs the symmetric rank 2 operation
-     * A := alpha*x*y**T + alpha*y*x**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/d99/ssyr2_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     */
-    public void SSYR2(@Uplo int Uplo, float alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        int N = validateSYR2(Element.F32(mRS), Uplo, X, incX, Y, incY, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_ssyr2, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, xID, yID, 0, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SSPR2 performs the symmetric rank 2 operation
-     * A := alpha*x*y**T + alpha*y*x**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/d3e/sspr2_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be supplied in the packed form.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     */
-    public void SSPR2(@Uplo int Uplo, float alpha, Allocation X, int incX, Allocation Y, int incY, Allocation Ap) {
-        int N = validateSPR2(Element.F32(mRS), Uplo, X, incX, Y, incY, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_sspr2, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, xID, yID, 0, apID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSYMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d8/dbe/dsymv_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void DSYMV(@Uplo int Uplo, double alpha, Allocation A, Allocation X, int incX, double beta, Allocation Y, int incY) {
-        int N = validateSYMV(Element.F64(mRS), Uplo, A, X, Y, incX, incY);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dsymv, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, aID, xID, beta, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSBMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d8/d1e/dsbmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of the band matrix A is being supplied.
-     * @param K The number of off-diagonals of the matrix A
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void DSBMV(@Uplo int Uplo, int K, double alpha, Allocation A, Allocation X, int incX, double beta, Allocation Y, int incY) {
-        // SBMV is the same as SYMV + K >= 0
-        if (K < 0) {
-            throw new RSRuntimeException("K must be greater than or equal to 0");
-        }
-        int N = validateSYMV(Element.F64(mRS), Uplo, A, X, Y, incX, incY);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dsbmv, 0, 0, 0, Uplo, 0, 0, N, K, alpha, aID, xID, beta, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSPMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d4/d85/dspmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of the matrix A is supplied in packed form.
-     * @param alpha The scalar alpha.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void DSPMV(@Uplo int Uplo, double alpha, Allocation Ap, Allocation X, int incX, double beta, Allocation Y, int incY) {
-        int N = validateSPMV(Element.F64(mRS), Uplo, Ap, X, incX, Y, incY);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dspmv, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, apID, xID, beta, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DGER performs the rank 1 operation
-     * A := alpha*x*y**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/dc/da8/dger_8f.html
-     *
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     */
-    public void DGER(double alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-        validateGER(Element.F64(mRS), X, incX, Y, incY, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dger, 0, 0, 0, 0, 0, M, N, 0, alpha, xID, yID, 0.f, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSYR performs the rank 1 operation
-     * A := alpha*x*x**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d3/d60/dsyr_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     */
-    public void DSYR(@Uplo int Uplo, double alpha, Allocation X, int incX, Allocation A) {
-        int N = validateSYR(Element.F64(mRS), Uplo, X, incX, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dsyr, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, xID, aID, 0.f, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSPR performs the rank 1 operation
-     * A := alpha*x*x**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/dd/dba/dspr_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be supplied in the packed form.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     */
-    public void DSPR(@Uplo int Uplo, double alpha, Allocation X, int incX, Allocation Ap) {
-        int N = validateSPR(Element.F64(mRS), Uplo, X, incX, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dspr, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, xID, apID, 0.f, 0, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSYR2 performs the symmetric rank 2 operation
-     * A := alpha*x*y**T + alpha*y*x**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/de/d41/dsyr2_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     */
-    public void DSYR2(@Uplo int Uplo, double alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        int N = validateSYR2(Element.F64(mRS), Uplo, X, incX, Y, incY, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dsyr2, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, xID, yID, 0, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSPR2 performs the symmetric rank 2 operation
-     * A := alpha*x*y**T + alpha*y*x**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/dd/d9e/dspr2_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be supplied in the packed form.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     */
-    public void DSPR2(@Uplo int Uplo, double alpha, Allocation X, int incX, Allocation Y, int incY, Allocation Ap) {
-        int N = validateSPR2(Element.F64(mRS), Uplo, X, incX, Y, incY, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dspr2, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, xID, yID, 0, apID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-
-    /**
-     * Level 2, C and Z only
-     */
-
-    static void validateGERU(Element e, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        if (!A.getType().getElement().isCompatible(e) ||
-            !X.getType().getElement().isCompatible(e) ||
-            !Y.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        if (X.getType().getY() > 1 || Y.getType().getY() > 1) {
-            throw new RSRuntimeException("BLAS vectors must have Y dimension of 0 or 1");
-        }
-
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-        if (incX <= 0 || incY <= 0) {
-            throw new RSRuntimeException("Vector increments must be greater than 0");
-        }
-        int expectedXDim = 1 + (M - 1) * incX;
-        if (X.getType().getX() != expectedXDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for GERU");
-        }
-        int expectedYDim = 1 + (N - 1) * incY;
-        if (Y.getType().getX() != expectedYDim) {
-            throw new RSRuntimeException("Incorrect vector dimensions for GERU");
-        }
-
-    }
-
-    /**
-     * CHEMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d7/d51/chemv_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void CHEMV(@Uplo int Uplo, Float2 alpha, Allocation A, Allocation X, int incX, Float2 beta, Allocation Y, int incY) {
-        // HEMV is the same as SYR2 validation-wise
-        int N = validateSYR2(Element.F32_2(mRS), Uplo, X, incX, Y, incY, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_chemv, 0, 0, 0, Uplo, 0, 0, N, 0, alpha.x, alpha.y, aID, xID, beta.x, beta.y, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CHBMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/dc2/chbmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of the band matrix A is being supplied.
-     * @param K The number of off-diagonals of the matrix A
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void CHBMV(@Uplo int Uplo, int K, Float2 alpha, Allocation A, Allocation X, int incX, Float2 beta, Allocation Y, int incY) {
-        // HBMV is the same as SYR2 validation-wise
-        int N = validateSYR2(Element.F32_2(mRS), Uplo, X, incX, Y, incY, A);
-        if (K < 0) {
-            throw new RSRuntimeException("K must be 0 or greater for HBMV");
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_chbmv, 0, 0, 0, Uplo, 0, 0, N, K, alpha.x, alpha.y, aID, xID, beta.x, beta.y, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CHPMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d2/d06/chpmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of the matrix A is supplied in packed form.
-     * @param alpha The scalar alpha.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void CHPMV(@Uplo int Uplo, Float2 alpha, Allocation Ap, Allocation X, int incX, Float2 beta, Allocation Y, int incY) {
-        // HPMV is the same as SPR2
-        int N = validateSPR2(Element.F32_2(mRS), Uplo, X, incX, Y, incY, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_chpmv, 0, 0, 0, Uplo, 0, 0, N, 0, alpha.x, alpha.y, apID, xID, beta.x, beta.y, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CGERU performs the rank 1 operation
-     * A := alpha*x*y**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/d5f/cgeru_8f.html
-     *
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     */
-    public void CGERU(Float2 alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        validateGERU(Element.F32_2(mRS), X, incX, Y, incY, A);
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_cgeru, 0, 0, 0, 0, 0, M, N, 0, alpha.x, alpha.y, xID, yID, 0, 0, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CGERC performs the rank 1 operation
-     * A := alpha*x*y**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/dd/d84/cgerc_8f.html
-     *
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     */
-    public void CGERC(Float2 alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        // same as GERU
-        validateGERU(Element.F32_2(mRS), X, incX, Y, incY, A);
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_cgerc, 0, 0, 0, 0, 0, M, N, 0, alpha.x, alpha.y, xID, yID, 0, 0, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CHER performs the rank 1 operation
-     * A := alpha*x*x**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d3/d6d/cher_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     */
-    public void CHER(@Uplo int Uplo, float alpha, Allocation X, int incX, Allocation A) {
-        // same as SYR
-        int N = validateSYR(Element.F32_2(mRS), Uplo, X, incX, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_cher, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, 0, xID, 0, 0, 0, aID, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CHPR performs the rank 1 operation
-     * A := alpha*x*x**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/dcd/chpr_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be supplied in the packed form.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     */
-    public void CHPR(@Uplo int Uplo, float alpha, Allocation X, int incX, Allocation Ap) {
-        // equivalent to SPR for validation
-        int N = validateSPR(Element.F32_2(mRS), Uplo, X, incX, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_chpr, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, 0, xID, 0, 0, 0, apID, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CHER2 performs the symmetric rank 2 operation
-     * A := alpha*x*y**H + alpha*y*x**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/d87/cher2_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     */
-    public void CHER2(@Uplo int Uplo, Float2 alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        // same as SYR2
-        int N = validateSYR2(Element.F32_2(mRS), Uplo, X, incX, Y, incY, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_cher2, 0, 0, 0, Uplo, 0, 0, N, 0, alpha.x, alpha.y, xID, yID, 0, 0, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CHPR2 performs the symmetric rank 2 operation
-     * A := alpha*x*y**H + alpha*y*x**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d6/d44/chpr2_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be supplied in the packed form.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F32_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F32_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     */
-    public void CHPR2(@Uplo int Uplo, Float2 alpha, Allocation X, int incX, Allocation Y, int incY, Allocation Ap) {
-        // same as SPR2
-        int N = validateSPR2(Element.F32_2(mRS), Uplo, X, incX, Y, incY, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_chpr2, 0, 0, 0, Uplo, 0, 0, N, 0, alpha.x, alpha.y, xID, yID, 0, 0, apID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHEMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d0/ddd/zhemv_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void ZHEMV(@Uplo int Uplo, Double2 alpha, Allocation A, Allocation X, int incX, Double2 beta, Allocation Y, int incY) {
-        // HEMV is the same as SYR2 validation-wise
-        int N = validateSYR2(Element.F64_2(mRS), Uplo, X, incX, Y, incY, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zhemv, 0, 0, 0, Uplo, 0, 0, N, 0, alpha.x, alpha.y, aID, xID, beta.x, beta.y, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHBMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d3/d1a/zhbmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should also be of size N*N (dimY = N, dimX = N),
-     *       but only the region N*(K+1) will be referenced. The following subroutine can is an
-     *       example showing how to convert a UPPER trianglar matrix 'a' to row-based band matrix 'b'.
-     *           for i in range(0, n):
-     *              for j in range(i, min(i+k+1, n)):
-     *                  b[i, j-i] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of the band matrix A is being supplied.
-     * @param K The number of off-diagonals of the matrix A
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void ZHBMV(@Uplo int Uplo, int K, Double2 alpha, Allocation A, Allocation X, int incX, Double2 beta, Allocation Y, int incY) {
-        // HBMV is the same as SYR2 validation-wise
-        int N = validateSYR2(Element.F64_2(mRS), Uplo, X, incX, Y, incY, A);
-        if (K < 0) {
-            throw new RSRuntimeException("K must be 0 or greater for HBMV");
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zhbmv, 0, 0, 0, Uplo, 0, 0, N, K, alpha.x, alpha.y, aID, xID, beta.x, beta.y, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHPMV performs the matrix-vector operation
-     * y := alpha*A*x + beta*y
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d0/d60/zhpmv_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of the matrix A is supplied in packed form.
-     * @param alpha The scalar alpha.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param beta The scalar beta.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     */
-    public void ZHPMV(@Uplo int Uplo, Double2 alpha, Allocation Ap, Allocation X, int incX, Double2 beta, Allocation Y, int incY) {
-        // HPMV is the same as SPR2
-        int N = validateSPR2(Element.F64_2(mRS), Uplo, X, incX, Y, incY, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zhpmv, 0, 0, 0, Uplo, 0, 0, N, 0, alpha.x, alpha.y, apID, xID, beta.x, beta.y, yID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZGERU performs the rank 1 operation
-     * A := alpha*x*y**T + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d7/d12/zgeru_8f.html
-     *
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     */
-    public void ZGERU(Double2 alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        validateGERU(Element.F64_2(mRS), X, incX, Y, incY, A);
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zgeru, 0, 0, 0, 0, 0, M, N, 0, alpha.x, alpha.y, xID, yID, 0, 0, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZGERC performs the rank 1 operation
-     * A := alpha*x*y**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d3/dad/zgerc_8f.html
-     *
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     */
-    public void ZGERC(Double2 alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        // same as GERU
-        validateGERU(Element.F64_2(mRS), X, incX, Y, incY, A);
-        int M = A.getType().getY();
-        int N = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zgerc, 0, 0, 0, 0, 0, M, N, 0, alpha.x, alpha.y, xID, yID, 0, 0, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHER performs the rank 1 operation
-     * A := alpha*x*x**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/de/d0e/zher_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     */
-    public void ZHER(@Uplo int Uplo, double alpha, Allocation X, int incX, Allocation A) {
-        // same as SYR
-        int N = validateSYR(Element.F64_2(mRS), Uplo, X, incX, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zher, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, 0, xID, 0, 0, 0, aID, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHPR performs the rank 1 operation
-     * A := alpha*x*x**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/de/de1/zhpr_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be supplied in the packed form.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     */
-    public void ZHPR(@Uplo int Uplo, double alpha, Allocation X, int incX, Allocation Ap) {
-        // equivalent to SPR for validation
-        int N = validateSPR(Element.F64_2(mRS), Uplo, X, incX, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zhpr, 0, 0, 0, Uplo, 0, 0, N, 0, alpha, 0, xID, 0, 0, 0, apID, incX, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHER2 performs the symmetric rank 2 operation
-     * A := alpha*x*y**H + alpha*y*x**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/da/d8a/zher2_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     */
-    public void ZHER2(@Uplo int Uplo, Double2 alpha, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
-        // same as SYR2
-        int N = validateSYR2(Element.F64_2(mRS), Uplo, X, incX, Y, incY, A);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zher2, 0, 0, 0, Uplo, 0, 0, N, 0, alpha.x, alpha.y, xID, yID, 0, 0, aID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHPR2 performs the symmetric rank 2 operation
-     * A := alpha*x*y**H + alpha*y*x**H + A
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d5/d52/zhpr2_8f.html
-     *
-     * Note: For a N*N matrix, the input Allocation should be a 1D allocation of size dimX = N*(N+1)/2,
-     *       The following subroutine can is an example showing how to convert a UPPER trianglar matrix
-     *       'a' to packed matrix 'b'.
-     *           k = 0
-     *           for i in range(0, n):
-     *              for j in range(i, n):
-     *                  b[k++] = a[i, j]
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part is to be supplied in the packed form.
-     * @param alpha The scalar alpha.
-     * @param X The input allocation contains vector x, supported elements type {@link Element#F64_2}.
-     * @param incX The increment for the elements of vector x, must be larger than zero.
-     * @param Y The input allocation contains vector y, supported elements type {@link Element#F64_2}.
-     * @param incY The increment for the elements of vector y, must be larger than zero.
-     * @param Ap The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     */
-    public void ZHPR2(@Uplo int Uplo, Double2 alpha, Allocation X, int incX, Allocation Y, int incY, Allocation Ap) {
-        // same as SPR2
-        int N = validateSPR2(Element.F64_2(mRS), Uplo, X, incX, Y, incY, Ap);
-
-        boolean mUseIncSupp = isIncSupp();
-        long apID = Ap.getID(mRS);
-        long xID = X.getID(mRS);
-        long yID = Y.getID(mRS);
-        if (mUseIncSupp) {
-            apID = getDummyAlloc(Ap);
-            xID = getDummyAlloc(X);
-            yID = getDummyAlloc(Y);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zhpr2, 0, 0, 0, Uplo, 0, 0, N, 0, alpha.x, alpha.y, xID, yID, 0, 0, apID, incX, incY, 0, 0, mUseIncSupp);
-    }
-
-
-    /**
-     * Level 3 BLAS
-     */
-
-    static void validateL3(Element e, int TransA, int TransB, int Side, Allocation A, Allocation B, Allocation C) {
-        int aM = -1, aN = -1, bM = -1, bN = -1, cM = -1, cN = -1;
-        if ((A != null && !A.getType().getElement().isCompatible(e)) ||
-            (B != null && !B.getType().getElement().isCompatible(e)) ||
-            (C != null && !C.getType().getElement().isCompatible(e))) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        if (C == null) {
-            //since matrix C is used to store the result, it cannot be null.
-            throw new RSRuntimeException("Allocation C cannot be null");
-        }
-        cM = C.getType().getY();
-        cN = C.getType().getX();
-
-        if (Side == RIGHT) {
-            if ((A == null && B != null) || (A != null && B == null)) {
-                throw new RSRuntimeException("Provided Matrix A without Matrix B, or vice versa");
-            }
-            if (B != null) {
-                bM = A.getType().getY();
-                bN = A.getType().getX();
-            }
-            if (A != null) {
-                aM = B.getType().getY();
-                aN = B.getType().getX();
-            }
-        } else {
-            if (A != null) {
-                if (TransA == TRANSPOSE || TransA == CONJ_TRANSPOSE) {
-                    aN = A.getType().getY();
-                    aM = A.getType().getX();
-                } else {
-                    aM = A.getType().getY();
-                    aN = A.getType().getX();
-                }
-            }
-            if (B != null) {
-                if (TransB == TRANSPOSE || TransB == CONJ_TRANSPOSE) {
-                    bN = B.getType().getY();
-                    bM = B.getType().getX();
-                } else {
-                    bM = B.getType().getY();
-                    bN = B.getType().getX();
-                }
-            }
-        }
-        if (A != null && B != null && C != null) {
-            if (aN != bM || aM != cM || bN != cN) {
-                throw new RSRuntimeException("Called BLAS with invalid dimensions");
-            }
-        } else if (A != null && C != null) {
-            // A and C only, for SYRK
-            if (cM != cN) {
-                throw new RSRuntimeException("Matrix C is not symmetric");
-            }
-            if (aM != cM) {
-                throw new RSRuntimeException("Called BLAS with invalid dimensions");
-            }
-        } else if (A != null && B != null) {
-            // A and B only
-            if (aN != bM) {
-                throw new RSRuntimeException("Called BLAS with invalid dimensions");
-            }
-        }
-
-    }
-
-    /**
-     * SGEMM performs one of the matrix-matrix operations
-     * C := alpha*op(A)*op(B) + beta*C   where op(X) is one of op(X) = X  or  op(X) = X**T
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d4/de2/sgemm_8f.html
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param TransB The type of transpose applied to matrix B.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32}.
-     */
-    public void SGEMM(@Transpose int TransA, @Transpose int TransB, float alpha, Allocation A,
-                      Allocation B, float beta, Allocation C) {
-        validateTranspose(TransA);
-        validateTranspose(TransB);
-        validateL3(Element.F32(mRS), TransA, TransB, 0, A, B, C);
-
-        int M = -1, N = -1, K = -1;
-        if (TransA != NO_TRANSPOSE) {
-            M = A.getType().getX();
-            K = A.getType().getY();
-        } else {
-            M = A.getType().getY();
-            K = A.getType().getX();
-        }
-        if (TransB != NO_TRANSPOSE) {
-            N = B.getType().getY();
-        } else {
-            N = B.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_sgemm, TransA, TransB, 0, 0, 0, M, N, K,  alpha, aID, bID,
-                                        beta, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DGEMM performs one of the matrix-matrix operations
-     * C := alpha*op(A)*op(B) + beta*C   where op(X) is one of op(X) = X  or  op(X) = X**T
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d7/d2b/dgemm_8f.html
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param TransB The type of transpose applied to matrix B.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64}.
-     */
-    public void DGEMM(@Transpose int TransA, @Transpose int TransB, double alpha, Allocation A,
-                      Allocation B, double beta, Allocation C) {
-        validateTranspose(TransA);
-        validateTranspose(TransB);
-        validateL3(Element.F64(mRS), TransA, TransB, 0, A, B, C);
-        int M = -1, N = -1, K = -1;
-        if (TransA != NO_TRANSPOSE) {
-            M = A.getType().getX();
-            K = A.getType().getY();
-        } else {
-            M = A.getType().getY();
-            K = A.getType().getX();
-        }
-        if (TransB != NO_TRANSPOSE) {
-            N = B.getType().getY();
-        } else {
-            N = B.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dgemm, TransA, TransB, 0, 0, 0, M, N, K,  alpha, aID, bID,
-                                        beta, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CGEMM performs one of the matrix-matrix operations
-     * C := alpha*op(A)*op(B) + beta*C   where op(X) is one of op(X) = X  or  op(X) = X**T  or  op(X) = X**H
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d6/d5b/cgemm_8f.html
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param TransB The type of transpose applied to matrix B.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32_2}.
-     */
-    public void CGEMM(@Transpose int TransA, @Transpose int TransB, Float2 alpha, Allocation A,
-                      Allocation B, Float2 beta, Allocation C) {
-        validateTranspose(TransA);
-        validateTranspose(TransB);
-        validateL3(Element.F32_2(mRS), TransA, TransB, 0, A, B, C);
-        int M = -1, N = -1, K = -1;
-        if (TransA != NO_TRANSPOSE) {
-            M = A.getType().getX();
-            K = A.getType().getY();
-        } else {
-            M = A.getType().getY();
-            K = A.getType().getX();
-        }
-        if (TransB != NO_TRANSPOSE) {
-            N = B.getType().getY();
-        } else {
-            N = B.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_cgemm, TransA, TransB, 0, 0, 0, M, N, K,  alpha.x, alpha.y, aID, bID,
-                                         beta.x, beta.y, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZGEMM performs one of the matrix-matrix operations
-     * C := alpha*op(A)*op(B) + beta*C   where op(X) is one of op(X) = X  or  op(X) = X**T  or  op(X) = X**H
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d7/d76/zgemm_8f.html
-     *
-     * @param TransA The type of transpose applied to matrix A.
-     * @param TransB The type of transpose applied to matrix B.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64_2
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64_2
-     */
-    public void ZGEMM(@Transpose int TransA, @Transpose int TransB, Double2 alpha, Allocation A,
-                      Allocation B, Double2 beta, Allocation C) {
-        validateTranspose(TransA);
-        validateTranspose(TransB);
-        validateL3(Element.F64_2(mRS), TransA, TransB, 0, A, B, C);
-        int M = -1, N = -1, K = -1;
-        if (TransA != NO_TRANSPOSE) {
-            M = A.getType().getX();
-            K = A.getType().getY();
-        } else {
-            M = A.getType().getY();
-            K = A.getType().getX();
-        }
-        if (TransB != NO_TRANSPOSE) {
-            N = B.getType().getY();
-        } else {
-            N = B.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zgemm, TransA, TransB, 0, 0, 0, M, N, K,  alpha.x, alpha.y, aID, bID,
-                                   beta.x, beta.y, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SSYMM performs one of the matrix-matrix operations
-     * C := alpha*A*B + beta*C   or   C := alpha*B*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d7/d42/ssymm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32}.
-     */
-    public void SSYMM(@Side int Side, @Uplo int Uplo, float alpha, Allocation A,
-                      Allocation B, float beta, Allocation C) {
-        validateSide(Side);
-        validateUplo(Uplo);
-        //For SYMM, Matrix A should be symmetric
-        if (A.getType().getX() != A.getType().getY()) {
-            throw new RSRuntimeException("Matrix A is not symmetric");
-        }
-        validateL3(Element.F32(mRS), 0, 0, Side, A, B, C);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_ssymm, 0, 0, Side, Uplo, 0, C.getType().getY(), C.getType().getX(), 0, alpha, aID, bID,
-                                        beta, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSYMM performs one of the matrix-matrix operations
-     * C := alpha*A*B + beta*C   or   C := alpha*B*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d8/db0/dsymm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64}.
-     */
-    public void DSYMM(@Side int Side, @Uplo int Uplo, double alpha, Allocation A,
-                      Allocation B, double beta, Allocation C) {
-        validateSide(Side);
-        validateUplo(Uplo);
-        if (A.getType().getX() != A.getType().getY()) {
-            throw new RSRuntimeException("Matrix A is not symmetric");
-        }
-        validateL3(Element.F64(mRS), 0, 0, Side, A, B, C);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dsymm, 0, 0, Side, Uplo, 0, C.getType().getY(), C.getType().getX(), 0, alpha, aID, bID,
-                                        beta, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CSYMM performs one of the matrix-matrix operations
-     * C := alpha*A*B + beta*C   or   C := alpha*B*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/db/d59/csymm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32_2}.
-     */
-    public void CSYMM(@Side int Side, @Uplo int Uplo, Float2 alpha, Allocation A,
-                      Allocation B, Float2 beta, Allocation C) {
-        validateSide(Side);
-        validateUplo(Uplo);
-        if (A.getType().getX() != A.getType().getY()) {
-            throw new RSRuntimeException("Matrix A is not symmetric");
-        }
-        validateL3(Element.F32_2(mRS), 0, 0, Side, A, B, C);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_csymm, 0, 0, Side, Uplo, 0, C.getType().getY(), C.getType().getX(), 0, alpha.x, alpha.y, aID, bID,
-                                         beta.x, beta.y, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZSYMM performs one of the matrix-matrix operations
-     * C := alpha*A*B + beta*C   or   C := alpha*B*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/df/d51/zsymm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64_2}.
-     */
-    public void ZSYMM(@Side int Side, @Uplo int Uplo, Double2 alpha, Allocation A,
-                      Allocation B, Double2 beta, Allocation C) {
-        validateSide(Side);
-        validateUplo(Uplo);
-        if (A.getType().getX() != A.getType().getY()) {
-            throw new RSRuntimeException("Matrix A is not symmetric");
-        }
-        validateL3(Element.F64_2(mRS), 0, 0, Side, A, B, C);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zsymm, 0, 0, Side, Uplo, 0, C.getType().getY(), C.getType().getX(), 0, alpha.x, alpha.y, aID, bID,
-                                   beta.x, beta.y, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * SSYRK performs one of the symmetric rank k operations
-     * C := alpha*A*A**T + beta*C   or   C := alpha*A**T*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d0/d40/ssyrk_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32}.
-     */
-    public void SSYRK(@Uplo int Uplo, @Transpose int Trans, float alpha, Allocation A, float beta, Allocation C) {
-        validateTranspose(Trans);
-        validateUplo(Uplo);
-        validateL3(Element.F32(mRS), Trans, 0, 0, A, null, C);
-        int K = -1;
-        if (Trans != NO_TRANSPOSE) {
-            K = A.getType().getY();
-        } else {
-            K = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_ssyrk, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), K, alpha, aID, 0, beta, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSYRK performs one of the symmetric rank k operations
-     * C := alpha*A*A**T + beta*C   or   C := alpha*A**T*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/dc/d05/dsyrk_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64}.
-     */
-    public void DSYRK(@Uplo int Uplo, @Transpose int Trans, double alpha, Allocation A, double beta, Allocation C) {
-        validateTranspose(Trans);
-        validateUplo(Uplo);
-        validateL3(Element.F64(mRS), Trans, 0, 0, A, null, C);
-        int K = -1;
-        if (Trans != NO_TRANSPOSE) {
-            K = A.getType().getY();
-        } else {
-            K = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dsyrk, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), K, alpha, aID, 0, beta, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CSYRK performs one of the symmetric rank k operations
-     * C := alpha*A*A**T + beta*C   or   C := alpha*A**T*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d3/d6a/csyrk_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32_2}.
-     */
-    public void CSYRK(@Uplo int Uplo, @Transpose int Trans, Float2 alpha, Allocation A, Float2 beta, Allocation C) {
-        validateTranspose(Trans);
-        validateUplo(Uplo);
-        validateL3(Element.F32_2(mRS), Trans, 0, 0, A, null, C);
-        int K = -1;
-        if (Trans != NO_TRANSPOSE) {
-            K = A.getType().getY();
-        } else {
-            K = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_csyrk, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), K, alpha.x, alpha.y, aID, 0, beta.x, beta.y,
-                                         C.getID(mRS), 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZSYRK performs one of the symmetric rank k operations
-     * C := alpha*A*A**T + beta*C   or   C := alpha*A**T*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/de/d54/zsyrk_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64_2}.
-     */
-    public void ZSYRK(@Uplo int Uplo, @Transpose int Trans, Double2 alpha, Allocation A, Double2 beta, Allocation C) {
-        validateTranspose(Trans);
-        validateUplo(Uplo);
-        validateL3(Element.F64_2(mRS), Trans, 0, 0, A, null, C);
-        int K = -1;
-        if (Trans != NO_TRANSPOSE) {
-            K = A.getType().getY();
-        } else {
-            K = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zsyrk, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), K, alpha.x, alpha.y, aID, 0, beta.x, beta.y,
-                                   C.getID(mRS), 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    static void validateSYR2K(Element e, @Transpose int Trans, Allocation A, Allocation B, Allocation C) {
-        validateTranspose(Trans);
-        if (!A.getType().getElement().isCompatible(e) ||
-            !B.getType().getElement().isCompatible(e) ||
-            !C.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        int Cdim = -1;
-        // A is n x k if no transpose, k x n if transpose
-        // C is n x n
-        if (Trans == TRANSPOSE) {
-            // check columns versus C
-            Cdim = A.getType().getX();
-        } else {
-            // check rows versus C
-            Cdim = A.getType().getY();
-        }
-        if (C.getType().getX() != Cdim || C.getType().getY() != Cdim) {
-            throw new RSRuntimeException("Invalid symmetric matrix in SYR2K");
-        }
-        // A dims == B dims
-        if (A.getType().getX() != B.getType().getX() || A.getType().getY() != B.getType().getY()) {
-            throw new RSRuntimeException("Invalid A and B in SYR2K");
-        }
-    }
-
-    /**
-     * SSYR2K performs one of the symmetric rank 2k operations
-     * C := alpha*A*B**T + alpha*B*A**T + beta*C   or   C := alpha*A**T*B + alpha*B**T*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/df/d3d/ssyr2k_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32}.
-     */
-    public void SSYR2K(@Uplo int Uplo, @Transpose int Trans, float alpha, Allocation A, Allocation B, float beta, Allocation C) {
-        validateUplo(Uplo);
-        validateSYR2K(Element.F32(mRS), Trans, A, B, C);
-        int K = -1;
-        if (Trans != NO_TRANSPOSE) {
-            K = A.getType().getY();
-        } else {
-            K = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_ssyr2k, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), K, alpha, aID, bID, beta, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DSYR2K performs one of the symmetric rank 2k operations
-     * C := alpha*A*B**T + alpha*B*A**T + beta*C   or   C := alpha*A**T*B + alpha*B**T*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d1/dec/dsyr2k_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64}.
-     */
-    public void DSYR2K(@Uplo int Uplo, @Transpose int Trans, double alpha, Allocation A, Allocation B, double beta, Allocation C) {
-        validateUplo(Uplo);
-        validateSYR2K(Element.F64(mRS), Trans, A, B, C);
-        int K = -1;
-        if (Trans != NO_TRANSPOSE) {
-            K = A.getType().getY();
-        } else {
-            K = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dsyr2k, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), K, alpha, aID, bID, beta, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CSYR2K performs one of the symmetric rank 2k operations
-     * C := alpha*A*B**T + alpha*B*A**T + beta*C   or   C := alpha*A**T*B + alpha*B**T*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/de/d7e/csyr2k_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32_2}.
-     */
-    public void CSYR2K(@Uplo int Uplo, @Transpose int Trans, Float2 alpha, Allocation A, Allocation B, Float2 beta, Allocation C) {
-        validateUplo(Uplo);
-        validateSYR2K(Element.F32_2(mRS), Trans, A, B, C);
-        int K = -1;
-        if (Trans != NO_TRANSPOSE) {
-            K = A.getType().getY();
-        } else {
-            K = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_csyr2k, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), K, alpha.x, alpha.y, aID, bID, beta.x, beta.y, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZSYR2K performs one of the symmetric rank 2k operations
-     * C := alpha*A*B**T + alpha*B*A**T + beta*C   or   C := alpha*A**T*B + alpha*B**T*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/df/d20/zsyr2k_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64_2}.
-     */
-    public void ZSYR2K(@Uplo int Uplo, @Transpose int Trans, Double2 alpha, Allocation A, Allocation B, Double2 beta, Allocation C) {
-        validateUplo(Uplo);
-        validateSYR2K(Element.F64_2(mRS), Trans, A, B, C);
-        int K = -1;
-        if (Trans != NO_TRANSPOSE) {
-            K = A.getType().getY();
-        } else {
-            K = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zsyr2k, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), K, alpha.x, alpha.y, aID, bID, beta.x, beta.y, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    static void validateTRMM(Element e, @Side int Side, @Transpose int TransA, Allocation A, Allocation B) {
-        validateSide(Side);
-        validateTranspose(TransA);
-        int aM = -1, aN = -1, bM = -1, bN = -1;
-        if (!A.getType().getElement().isCompatible(e) ||
-            !B.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-
-        aM = A.getType().getY();
-        aN = A.getType().getX();
-        if (aM != aN) {
-            throw new RSRuntimeException("Called TRMM with a non-symmetric matrix A");
-        }
-
-        bM = B.getType().getY();
-        bN = B.getType().getX();
-        if (Side == LEFT) {
-            if (aN != bM) {
-                throw new RSRuntimeException("Called TRMM with invalid matrices");
-            }
-        } else {
-            if (bN != aM) {
-                throw new RSRuntimeException("Called TRMM with invalid matrices");
-            }
-        }
-    }
-
-    /**
-     * STRMM performs one of the matrix-matrix operations
-     * B := alpha*op(A)*B   or   B := alpha*B*op(A)
-     * op(A) is one of  op(A) = A  or  op(A) = A**T
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/df/d01/strmm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether matrix A is upper or lower triangular.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32}.
-     */
-    public void STRMM(@Side int Side, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, float alpha, Allocation A, Allocation B) {
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        validateTRMM(Element.F32(mRS), Side, TransA, A, B);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_strmm, TransA, 0, Side, Uplo, Diag, B.getType().getY(), B.getType().getX(), 0,
-                                        alpha, aID, bID, 0.f, 0, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DTRMM performs one of the matrix-matrix operations
-     * B := alpha*op(A)*B   or   B := alpha*B*op(A)
-     * op(A) is one of  op(A) = A  or  op(A) = A**T
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/dd/d19/dtrmm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether matrix A is upper or lower triangular.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64}.
-     */
-    public void DTRMM(@Side int Side, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, double alpha, Allocation A, Allocation B) {
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        validateTRMM(Element.F64(mRS), Side, TransA, A, B);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dtrmm, TransA, 0, Side, Uplo, Diag, B.getType().getY(), B.getType().getX(), 0,
-                                        alpha, aID, bID, 0, 0, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CTRMM performs one of the matrix-matrix operations
-     * B := alpha*op(A)*B   or   B := alpha*B*op(A)
-     * op(A) is one of  op(A) = A  or  op(A) = A**T  or  op(A) = A**H
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d4/d9b/ctrmm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether matrix A is upper or lower triangular.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32_2}.
-     */
-    public void CTRMM(@Side int Side, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Float2 alpha, Allocation A, Allocation B) {
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        validateTRMM(Element.F32_2(mRS), Side, TransA, A, B);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_ctrmm, TransA, 0, Side, Uplo, Diag, B.getType().getY(), B.getType().getX(), 0,
-                                         alpha.x, alpha.y, aID, bID, 0, 0, 0, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZTRMM performs one of the matrix-matrix operations
-     * B := alpha*op(A)*B   or   B := alpha*B*op(A)
-     * op(A) is one of  op(A) = A  or  op(A) = A**T  or  op(A) = A**H
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d8/de1/ztrmm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether matrix A is upper or lower triangular.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64_2}.
-     */
-    public void ZTRMM(@Side int Side, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Double2 alpha, Allocation A, Allocation B) {
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        validateTRMM(Element.F64_2(mRS), Side, TransA, A, B);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_ztrmm, TransA, 0, Side, Uplo, Diag, B.getType().getY(), B.getType().getX(), 0,
-                                   alpha.x, alpha.y, aID, bID, 0, 0, 0, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    static void validateTRSM(Element e, @Side int Side, @Transpose int TransA, Allocation A, Allocation B) {
-        int adim = -1, bM = -1, bN = -1;
-        validateSide(Side);
-        validateTranspose(TransA);
-        if (!A.getType().getElement().isCompatible(e) ||
-            !B.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        adim = A.getType().getX();
-        if (adim != A.getType().getY()) {
-            // this may be unnecessary, the restriction could potentially be relaxed
-            // A needs to contain at least that symmetric matrix but could theoretically be larger
-            // for now we assume adapters are sufficient, will reevaluate in the future
-            throw new RSRuntimeException("Called TRSM with a non-symmetric matrix A");
-        }
-        bM = B.getType().getY();
-        bN = B.getType().getX();
-        if (Side == LEFT) {
-            // A is M*M
-            if (adim != bM) {
-                throw new RSRuntimeException("Called TRSM with invalid matrix dimensions");
-            }
-        } else {
-            // A is N*N
-            if (adim != bN) {
-                throw new RSRuntimeException("Called TRSM with invalid matrix dimensions");
-            }
-        }
-    }
-
-    /**
-     * STRSM solves one of the matrix equations
-     * op(A)*X := alpha*B   or   X*op(A) := alpha*B
-     * op(A) is one of  op(A) = A  or  op(A) = A**T
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d2/d8b/strsm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether matrix A is upper or lower triangular.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32}.
-     */
-    public void STRSM(@Side int Side, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, float alpha, Allocation A, Allocation B) {
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        validateTRSM(Element.F32(mRS), Side, TransA, A, B);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-        }
-        mRS.nScriptIntrinsicBLAS_Single(getID(mRS), RsBlas_strsm, TransA, 0, Side, Uplo, Diag, B.getType().getY(), B.getType().getX(), 0,
-                                        alpha, aID, bID, 0, 0, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * DTRSM solves one of the matrix equations
-     * op(A)*X := alpha*B   or   X*op(A) := alpha*B
-     * op(A) is one of  op(A) = A  or  op(A) = A**T
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/de/da7/dtrsm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether matrix A is upper or lower triangular.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64}.
-     */
-    public void DTRSM(@Side int Side, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, double alpha, Allocation A, Allocation B) {
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        validateTRSM(Element.F64(mRS), Side, TransA, A, B);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-        }
-        mRS.nScriptIntrinsicBLAS_Double(getID(mRS), RsBlas_dtrsm, TransA, 0, Side, Uplo, Diag, B.getType().getY(), B.getType().getX(), 0,
-                                        alpha, aID, bID, 0, 0, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * CTRSM solves one of the matrix equations
-     * op(A)*X := alpha*B   or   X*op(A) := alpha*B
-     * op(A) is one of  op(A) = A  or  op(A) = A**T  or  op(A) = A**H
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/de/d30/ctrsm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether matrix A is upper or lower triangular.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32_2}.
-     */
-    public void CTRSM(@Side int Side, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Float2 alpha, Allocation A, Allocation B) {
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        validateTRSM(Element.F32_2(mRS), Side, TransA, A, B);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_ctrsm, TransA, 0, Side, Uplo, Diag, B.getType().getY(), B.getType().getX(), 0,
-                                         alpha.x, alpha.y, aID, bID, 0, 0, 0, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZTRSM solves one of the matrix equations
-     * op(A)*X := alpha*B   or   X*op(A) := alpha*B
-     * op(A) is one of  op(A) = A  or  op(A) = A**T  or  op(A) = A**H
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d1/d39/ztrsm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether matrix A is upper or lower triangular.
-     * @param TransA The type of transpose applied to matrix A.
-     * @param Diag Specifies whether or not A is unit triangular.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64_2}.
-     */
-    public void ZTRSM(@Side int Side, @Uplo int Uplo, @Transpose int TransA, @Diag int Diag, Double2 alpha, Allocation A, Allocation B) {
-        validateUplo(Uplo);
-        validateDiag(Diag);
-        validateTRSM(Element.F64_2(mRS), Side, TransA, A, B);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_ztrsm, TransA, 0, Side, Uplo, Diag, B.getType().getY(), B.getType().getX(), 0,
-                                   alpha.x, alpha.y, aID, bID, 0, 0, 0, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    static void validateHEMM(Element e, @Side int Side, Allocation A, Allocation B, Allocation C) {
-        validateSide(Side);
-
-        if (!A.getType().getElement().isCompatible(e) ||
-            !B.getType().getElement().isCompatible(e) ||
-            !C.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-
-        // A must be square; can potentially be relaxed similar to TRSM
-        int adim = A.getType().getX();
-        if (adim != A.getType().getY()) {
-            throw new RSRuntimeException("Called HEMM with non-square A");
-        }
-        if ((Side == LEFT && adim != B.getType().getY()) ||
-            (Side == RIGHT && adim != B.getType().getX())) {
-            throw new RSRuntimeException("Called HEMM with invalid B");
-        }
-        if (B.getType().getX() != C.getType().getX() ||
-            B.getType().getY() != C.getType().getY()) {
-            throw new RSRuntimeException("Called HEMM with mismatched B and C");
-        }
-    }
-
-    /**
-     * CHEMM performs one of the matrix-matrix operations
-     * C := alpha*A*B + beta*C   or   C := alpha*B*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d3/d66/chemm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32_2}.
-     */
-    public void CHEMM(@Side int Side, @Uplo int Uplo, Float2 alpha, Allocation A, Allocation B, Float2 beta, Allocation C) {
-        validateUplo(Uplo);
-        validateHEMM(Element.F32_2(mRS), Side, A, B, C);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_chemm, 0, 0, Side, Uplo, 0, C.getType().getY(), C.getType().getX(), 0,
-                                         alpha.x, alpha.y, aID, bID, beta.x, beta.y, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHEMM performs one of the matrix-matrix operations
-     * C := alpha*A*B + beta*C   or   C := alpha*B*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d6/d3e/zhemm_8f.html
-     *
-     * @param Side Specifies whether the symmetric matrix A appears on the left or right.
-     * @param Uplo Specifies whether the upper or lower triangular part is to be referenced.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64_2}.
-     */
-    public void ZHEMM(@Side int Side, @Uplo int Uplo, Double2 alpha, Allocation A, Allocation B, Double2 beta, Allocation C) {
-        validateUplo(Uplo);
-        validateHEMM(Element.F64_2(mRS), Side, A, B, C);
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zhemm, 0, 0, Side, Uplo, 0, C.getType().getY(), C.getType().getX(), 0,
-                                   alpha.x, alpha.y, aID, bID, beta.x, beta.y, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    static void validateHERK(Element e, @Transpose int Trans, Allocation A, Allocation C) {
-        if (!A.getType().getElement().isCompatible(e) ||
-            !C.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        validateConjTranspose(Trans);
-        int cdim = C.getType().getX();
-        if (cdim != C.getType().getY()) {
-            throw new RSRuntimeException("Called HERK with non-square C");
-        }
-        if (Trans == NO_TRANSPOSE) {
-            if (cdim != A.getType().getY()) {
-                throw new RSRuntimeException("Called HERK with invalid A");
-            }
-        } else {
-            if (cdim != A.getType().getX()) {
-                throw new RSRuntimeException("Called HERK with invalid A");
-            }
-        }
-    }
-
-    /**
-     * CHERK performs one of the hermitian rank k operations
-     * C := alpha*A*A**H + beta*C   or   C := alpha*A**H*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d8/d52/cherk_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32_2}.
-     */
-    public void CHERK(@Uplo int Uplo, @Transpose int Trans, float alpha, Allocation A, float beta, Allocation C) {
-        validateUplo(Uplo);
-        validateHERK(Element.F32_2(mRS), Trans, A, C);
-        int k = 0;
-        if (Trans == CONJ_TRANSPOSE) {
-            k = A.getType().getY();
-        } else {
-            k = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_cherk, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), k,
-                                         alpha, 0, aID, 0, beta, 0, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHERK performs one of the hermitian rank k operations
-     * C := alpha*A*A**H + beta*C   or   C := alpha*A**H*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d1/db1/zherk_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64_2}.
-     */
-    public void ZHERK(@Uplo int Uplo, @Transpose int Trans, double alpha, Allocation A, double beta, Allocation C) {
-        validateUplo(Uplo);
-        validateHERK(Element.F64_2(mRS), Trans, A, C);
-        int k = 0;
-        if (Trans == CONJ_TRANSPOSE) {
-            k = A.getType().getY();
-        } else {
-            k = A.getType().getX();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zherk, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), k,
-                                   alpha, 0, aID, 0, beta, 0, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    static void validateHER2K(Element e, @Transpose int Trans, Allocation A, Allocation B, Allocation C) {
-        if (!A.getType().getElement().isCompatible(e) ||
-            !B.getType().getElement().isCompatible(e) ||
-            !C.getType().getElement().isCompatible(e)) {
-            throw new RSRuntimeException("Called BLAS with wrong Element type");
-        }
-        validateConjTranspose(Trans);
-        int cdim = C.getType().getX();
-        if (cdim != C.getType().getY()) {
-            throw new RSRuntimeException("Called HER2K with non-square C");
-        }
-        if (Trans == NO_TRANSPOSE) {
-            if (A.getType().getY() != cdim) {
-                throw new RSRuntimeException("Called HER2K with invalid matrices");
-            }
-        } else {
-            if (A.getType().getX() != cdim) {
-                throw new RSRuntimeException("Called HER2K with invalid matrices");
-            }
-        }
-        if (A.getType().getX() != B.getType().getX() || A.getType().getY() != B.getType().getY()) {
-            throw new RSRuntimeException("Called HER2K with invalid A and B matrices");
-        }
-    }
-
-    /**
-     * CHER2K performs one of the hermitian rank 2k operations
-     * C := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C   or   C := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d1/d82/cher2k_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F32_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F32_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F32_2}.
-     */
-    public void CHER2K(@Uplo int Uplo, @Transpose int Trans, Float2 alpha, Allocation A, Allocation B, float beta, Allocation C) {
-        validateUplo(Uplo);
-        validateHER2K(Element.F32_2(mRS), Trans, A, B, C);
-        int k = 0;
-        if (Trans == NO_TRANSPOSE) {
-            k = A.getType().getX();
-        } else {
-            k = A.getType().getY();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Complex(getID(mRS), RsBlas_cher2k, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), k, alpha.x, alpha.y,
-                                         A.getID(mRS), bID, beta, 0, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-    /**
-     * ZHER2K performs one of the hermitian rank 2k operations
-     * C := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C   or   C := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C
-     *
-     * Details: http://www.netlib.org/lapack/explore-html/d7/dfa/zher2k_8f.html
-     *
-     * @param Uplo Specifies whether the upper or lower triangular part of C is to be referenced.
-     * @param Trans The type of transpose applied to the operation.
-     * @param alpha The scalar alpha.
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#F64_2}.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#F64_2}.
-     * @param beta The scalar beta.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#F64_2}.
-     */
-    public void ZHER2K(@Uplo int Uplo, @Transpose int Trans, Double2 alpha, Allocation A, Allocation B, double beta, Allocation C) {
-        validateUplo(Uplo);
-        validateHER2K(Element.F64_2(mRS), Trans, A, B, C);
-        int k = 0;
-        if (Trans == NO_TRANSPOSE) {
-            k = A.getType().getX();
-        } else {
-            k = A.getType().getY();
-        }
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_Z(getID(mRS), RsBlas_zher2k, Trans, 0, 0, Uplo, 0, 0, C.getType().getX(), k, alpha.x, alpha.y,
-                                   A.getID(mRS), bID, beta, 0, cID, 0, 0, 0, 0, mUseIncSupp);
-    }
-
-
-    /**
-     * 8-bit GEMM-like operation for neural networks: C = A * Transpose(B)
-     * Calculations are done in 1.10.21 fixed-point format for the final output,
-     * just before there's a shift down to drop the fractional parts. The output
-     * values are gated to 0 to 255 to fit in a byte, but the 10-bit format
-     * gives some headroom to avoid wrapping around on small overflows.
-     *
-     * @param A The input allocation contains matrix A, supported elements type {@link Element#U8}.
-     * @param a_offset The offset for all values in matrix A, e.g A[i,j] = A[i,j] - a_offset. Value should be from 0 to 255.
-     * @param B The input allocation contains matrix B, supported elements type {@link Element#U8}.
-     * @param b_offset The offset for all values in matrix B, e.g B[i,j] = B[i,j] - b_offset. Value should be from 0 to 255.
-     * @param C The input allocation contains matrix C, supported elements type {@link Element#U8}.
-     * @param c_offset The offset for all values in matrix C.
-     * @param c_mult The multiplier for all values in matrix C, e.g C[i,j] = (C[i,j] + c_offset) * c_mult.
-     **/
-    public void BNNM(Allocation A, int a_offset, Allocation B, int b_offset, Allocation C, int c_offset, int c_mult) {
-        validateL3(Element.U8(mRS), NO_TRANSPOSE, TRANSPOSE, 0, A, B, C);
-
-        if (a_offset < 0 || a_offset > 255) {
-            throw new RSRuntimeException("Invalid a_offset passed to BNNM");
-        }
-        if (b_offset < 0 || b_offset > 255) {
-            throw new RSRuntimeException("Invalid b_offset passed to BNNM");
-        }
-        int M = -1, N = -1, K = -1;
-        M = A.getType().getY();
-        N = B.getType().getY();
-        K = A.getType().getX();
-
-        boolean mUseIncSupp = isIncSupp();
-        long aID = A.getID(mRS);
-        long bID = B.getID(mRS);
-        long cID = C.getID(mRS);
-        if (mUseIncSupp) {
-            aID = getDummyAlloc(A);
-            bID = getDummyAlloc(B);
-            cID = getDummyAlloc(C);
-        }
-        mRS.nScriptIntrinsicBLAS_BNNM(getID(mRS), M, N, K, aID, a_offset, bID, b_offset, cID, c_offset, c_mult, mUseIncSupp);
-
-    }
-
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicBlend.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicBlend.java
deleted file mode 100644
index eef581e..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicBlend.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-
-/**
- * Intrinsic kernels for blending two
- * {@link android.support.v8.renderscript.Allocation} objects.
- **/
-public class ScriptIntrinsicBlend extends ScriptIntrinsic {
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 19;
-
-    ScriptIntrinsicBlend(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Supported elements types are {@link Element#U8_4}
-     *
-     * @param rs The RenderScript context
-     * @param e Element type for inputs and outputs
-     *
-     * @return ScriptIntrinsicBlend
-     */
-    public static ScriptIntrinsicBlend create(RenderScript rs, Element e) {
-        // 7 comes from RS_SCRIPT_INTRINSIC_ID_BLEND in rsDefines.h
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(7, e.getID(rs), mUseIncSupp);
-
-        ScriptIntrinsicBlend si = new ScriptIntrinsicBlend(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        return si;
-
-    }
-
-    private void blend(int id, Allocation ain, Allocation aout) {
-        if (!ain.getElement().isCompatible(Element.U8_4(mRS))) {
-            throw new RSIllegalArgumentException("Input is not of expected format.");
-        }
-        if (!aout.getElement().isCompatible(Element.U8_4(mRS))) {
-            throw new RSIllegalArgumentException("Output is not of expected format.");
-        }
-        forEach(id, ain, aout, null);
-    }
-
-    /**
-     * Sets dst = {0, 0, 0, 0}
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachClear(Allocation ain, Allocation aout) {
-        blend(0, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the Clear kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDClear() {
-        return createKernelID(0, 3, null, null);
-    }
-
-
-    /**
-     * Sets dst = src
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachSrc(Allocation ain, Allocation aout) {
-        blend(1, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the Src kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDSrc() {
-        return createKernelID(1, 3, null, null);
-    }
-
-    /**
-     * Sets dst = dst
-     *
-     * This is a NOP.
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachDst(Allocation ain, Allocation aout) {
-        // NOP
-    }
-
-    /**
-     * Get a KernelID for the Dst kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDDst() {
-        return createKernelID(2, 3, null, null);
-    }
-
-    /**
-     * Sets dst = src + dst * (1.0 - src.a)
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachSrcOver(Allocation ain, Allocation aout) {
-        blend(3, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the SrcOver kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDSrcOver() {
-        return createKernelID(3, 3, null, null);
-    }
-
-    /**
-     * Sets dst = dst + src * (1.0 - dst.a)
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachDstOver(Allocation ain, Allocation aout) {
-        blend(4, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the DstOver kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDDstOver() {
-        return createKernelID(4, 3, null, null);
-    }
-
-    /**
-     * Sets dst = src * dst.a
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachSrcIn(Allocation ain, Allocation aout) {
-        blend(5, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the SrcIn kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDSrcIn() {
-        return createKernelID(5, 3, null, null);
-    }
-
-    /**
-     * Sets dst = dst * src.a
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachDstIn(Allocation ain, Allocation aout) {
-        blend(6, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the DstIn kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDDstIn() {
-        return createKernelID(6, 3, null, null);
-    }
-
-    /**
-     * Sets dst = src * (1.0 - dst.a)
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachSrcOut(Allocation ain, Allocation aout) {
-        blend(7, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the SrcOut kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDSrcOut() {
-        return createKernelID(7, 3, null, null);
-    }
-
-    /**
-     * Sets dst = dst * (1.0 - src.a)
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachDstOut(Allocation ain, Allocation aout) {
-        blend(8, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the DstOut kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDDstOut() {
-        return createKernelID(8, 3, null, null);
-    }
-
-    /**
-     * dst.rgb = src.rgb * dst.a + (1.0 - src.a) * dst.rgb
-     * dst.a = dst.a
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachSrcAtop(Allocation ain, Allocation aout) {
-        blend(9, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the SrcAtop kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDSrcAtop() {
-        return createKernelID(9, 3, null, null);
-    }
-
-    /**
-     * dst = dst.rgb * src.a + (1.0 - dst.a) * src.rgb
-     * dst.a = src.a
-     * Note: Before API 23, the alpha channel was not correctly set.
-     *       Please use with caution when targeting older APIs.
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachDstAtop(Allocation ain, Allocation aout) {
-        blend(10, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the DstAtop kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDDstAtop() {
-        return createKernelID(10, 3, null, null);
-    }
-
-    /**
-     * Sets dst = {src.r ^ dst.r, src.g ^ dst.g, src.b ^ dst.b, src.a ^ dst.a}
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachXor(Allocation ain, Allocation aout) {
-        blend(11, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the Xor kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDXor() {
-        return createKernelID(11, 3, null, null);
-    }
-
-    ////////
-/*
-    public void forEachNormal(Allocation ain, Allocation aout) {
-        blend(12, ain, aout);
-    }
-
-    public void forEachAverage(Allocation ain, Allocation aout) {
-        blend(13, ain, aout);
-    }
-*/
-    /**
-     * Sets dst = src * dst
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachMultiply(Allocation ain, Allocation aout) {
-        blend(14, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the Multiply kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDMultiply() {
-        return createKernelID(14, 3, null, null);
-    }
-
-/*
-    public void forEachScreen(Allocation ain, Allocation aout) {
-        blend(15, ain, aout);
-    }
-
-    public void forEachDarken(Allocation ain, Allocation aout) {
-        blend(16, ain, aout);
-    }
-
-    public void forEachLighten(Allocation ain, Allocation aout) {
-        blend(17, ain, aout);
-    }
-
-    public void forEachOverlay(Allocation ain, Allocation aout) {
-        blend(18, ain, aout);
-    }
-
-    public void forEachHardlight(Allocation ain, Allocation aout) {
-        blend(19, ain, aout);
-    }
-
-    public void forEachSoftlight(Allocation ain, Allocation aout) {
-        blend(20, ain, aout);
-    }
-
-    public void forEachDifference(Allocation ain, Allocation aout) {
-        blend(21, ain, aout);
-    }
-
-    public void forEachNegation(Allocation ain, Allocation aout) {
-        blend(22, ain, aout);
-    }
-
-    public void forEachExclusion(Allocation ain, Allocation aout) {
-        blend(23, ain, aout);
-    }
-
-    public void forEachColorDodge(Allocation ain, Allocation aout) {
-        blend(24, ain, aout);
-    }
-
-    public void forEachInverseColorDodge(Allocation ain, Allocation aout) {
-        blend(25, ain, aout);
-    }
-
-    public void forEachSoftDodge(Allocation ain, Allocation aout) {
-        blend(26, ain, aout);
-    }
-
-    public void forEachColorBurn(Allocation ain, Allocation aout) {
-        blend(27, ain, aout);
-    }
-
-    public void forEachInverseColorBurn(Allocation ain, Allocation aout) {
-        blend(28, ain, aout);
-    }
-
-    public void forEachSoftBurn(Allocation ain, Allocation aout) {
-        blend(29, ain, aout);
-    }
-
-    public void forEachReflect(Allocation ain, Allocation aout) {
-        blend(30, ain, aout);
-    }
-
-    public void forEachGlow(Allocation ain, Allocation aout) {
-        blend(31, ain, aout);
-    }
-
-    public void forEachFreeze(Allocation ain, Allocation aout) {
-        blend(32, ain, aout);
-    }
-
-    public void forEachHeat(Allocation ain, Allocation aout) {
-        blend(33, ain, aout);
-    }
-*/
-    /**
-     * Sets dst = min(src + dst, 1.0)
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachAdd(Allocation ain, Allocation aout) {
-        blend(34, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the Add kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDAdd() {
-        return createKernelID(34, 3, null, null);
-    }
-
-    /**
-     * Sets dst = max(dst - src, 0.0)
-     *
-     * @param ain The source buffer
-     * @param aout The destination buffer
-     */
-    public void forEachSubtract(Allocation ain, Allocation aout) {
-        blend(35, ain, aout);
-    }
-
-    /**
-     * Get a KernelID for the Subtract kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelIDSubtract() {
-        return createKernelID(35, 3, null, null);
-    }
-
-/*
-    public void forEachStamp(Allocation ain, Allocation aout) {
-        blend(36, ain, aout);
-    }
-
-    public void forEachRed(Allocation ain, Allocation aout) {
-        blend(37, ain, aout);
-    }
-
-    public void forEachGreen(Allocation ain, Allocation aout) {
-        blend(38, ain, aout);
-    }
-
-    public void forEachBlue(Allocation ain, Allocation aout) {
-        blend(39, ain, aout);
-    }
-
-    public void forEachHue(Allocation ain, Allocation aout) {
-        blend(40, ain, aout);
-    }
-
-    public void forEachSaturation(Allocation ain, Allocation aout) {
-        blend(41, ain, aout);
-    }
-
-    public void forEachColor(Allocation ain, Allocation aout) {
-        blend(42, ain, aout);
-    }
-
-    public void forEachLuminosity(Allocation ain, Allocation aout) {
-        blend(43, ain, aout);
-    }
-*/
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicBlur.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicBlur.java
deleted file mode 100644
index e1a134a..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicBlur.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.util.Log;
-
-/**
- * Intrinsic Gausian blur filter. Applies a gaussian blur of the
- * specified radius to all elements of an allocation.
- *
- *
- **/
-public class ScriptIntrinsicBlur extends ScriptIntrinsic {
-    private final float[] mValues = new float[9];
-    private Allocation mInput;
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 19;
-
-    protected ScriptIntrinsicBlur(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Create an intrinsic for applying a blur to an allocation. The
-     * default radius is 5.0.
-     *
-     * Supported elements types are {@link Element#U8},
-     * {@link Element#U8_4}.
-     *
-     * @param rs The RenderScript context
-     * @param e Element type for inputs and outputs
-     *
-     * @return ScriptIntrinsicBlur
-     */
-    public static ScriptIntrinsicBlur create(RenderScript rs, Element e) {
-        if ((!e.isCompatible(Element.U8_4(rs))) && (!e.isCompatible(Element.U8(rs)))) {
-            throw new RSIllegalArgumentException("Unsupported element type.");
-        }
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(5, e.getID(rs), mUseIncSupp);
-
-        ScriptIntrinsicBlur si = new ScriptIntrinsicBlur(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        si.setRadius(5.f);
-
-        return si;
-    }
-
-    /**
-     * Set the input of the blur.
-     * Must match the element type supplied during create.
-     *
-     * @param ain The input allocation
-     */
-    public void setInput(Allocation ain) {
-        mInput = ain;
-        setVar(1, ain);
-    }
-
-    /**
-     * Set the radius of the Blur.
-     *
-     * Supported range 0 < radius <= 25
-     *
-     * @param radius The radius of the blur
-     */
-    public void setRadius(float radius) {
-        if (radius <= 0 || radius > 25) {
-            throw new RSIllegalArgumentException("Radius out of range (0 < r <= 25).");
-        }
-        setVar(0, radius);
-    }
-
-    /**
-     * Apply the filter to the input and save to the specified
-     * allocation.
-     *
-     * @param aout Output allocation. Must match creation element
-     *             type.
-     */
-    public void forEach(Allocation aout) {
-        forEach(0, (Allocation) null, aout, null);
-    }
-
-    /**
-     * Get a KernelID for this intrinsic kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelID() {
-        return createKernelID(0, 2, null, null);
-    }
-
-    /**
-     * Get a FieldID for the input field of this intrinsic.
-     *
-     * @return Script.FieldID The FieldID object.
-     */
-    public Script.FieldID getFieldID_Input() {
-        return createFieldID(1, null);
-    }
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrix.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrix.java
deleted file mode 100644
index f03526e..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrix.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.Log;
-
-/**
- * Intrinsic for applying a color matrix to allocations.
- *
- * This has the same effect as loading each element and
- * converting it to a {@link Element#F32_4}, multiplying the
- * result by the 4x4 color matrix as performed by
- * rsMatrixMultiply() and writing it to the output after
- * conversion back to {@link Element#U8_4}.
- **/
-public class ScriptIntrinsicColorMatrix extends ScriptIntrinsic {
-    private final Matrix4f mMatrix = new Matrix4f();
-    private final Float4 mAdd = new Float4();
-    private Allocation mInput;
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 19;
-
-    protected ScriptIntrinsicColorMatrix(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Create an intrinsic for applying a color matrix to an
-     * allocation.
-     *
-     * Supported elements types are {@link Element#U8_4}
-     *
-     * @param rs The RenderScript context
-     * @param e Element type for intputs and outputs
-     *
-     * @return ScriptIntrinsicColorMatrix
-     */
-    public static ScriptIntrinsicColorMatrix create(RenderScript rs, Element e) {
-        if (!e.isCompatible(Element.U8_4(rs))) {
-            throw new RSIllegalArgumentException("Unsupported element type.");
-        }
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(2, e.getID(rs), mUseIncSupp);
-
-        ScriptIntrinsicColorMatrix si = new ScriptIntrinsicColorMatrix(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        return si;
-
-    }
-
-    private void setMatrix() {
-        FieldPacker fp = new FieldPacker(16*4);
-        fp.addMatrix(mMatrix);
-        setVar(0, fp);
-    }
-
-    /**
-     * Set the color matrix which will be applied to each cell of
-     * the image.
-     *
-     * @param m The 4x4 matrix to set.
-     */
-    public void setColorMatrix(Matrix4f m) {
-        mMatrix.load(m);
-        setMatrix();
-    }
-
-    /**
-     * Set the color matrix which will be applied to each cell of the image.
-     * This will set the alpha channel to be a copy.
-     *
-     * @param m The 3x3 matrix to set.
-     */
-    public void setColorMatrix(Matrix3f m) {
-        mMatrix.load(m);
-        setMatrix();
-    }
-
-    /**
-     * Set the value to be added after the color matrix has been
-     * applied. The default value is {0, 0, 0, 0}
-     *
-     * @param f The float4 value to be added.
-     */
-    public void setAdd(Float4 f) {
-        mAdd.x = f.x;
-        mAdd.y = f.y;
-        mAdd.z = f.z;
-        mAdd.w = f.w;
-
-        FieldPacker fp = new FieldPacker(4*4);
-        fp.addF32(f.x);
-        fp.addF32(f.y);
-        fp.addF32(f.z);
-        fp.addF32(f.w);
-        setVar(1, fp);
-    }
-
-    /**
-     * Set the value to be added after the color matrix has been
-     * applied. The default value is {0, 0, 0, 0}
-     *
-     * @param r The red add value.
-     * @param g The green add value.
-     * @param b The blue add value.
-     * @param a The alpha add value.
-     */
-    public void setAdd(float r, float g, float b, float a) {
-        mAdd.x = r;
-        mAdd.y = g;
-        mAdd.z = b;
-        mAdd.w = a;
-
-        FieldPacker fp = new FieldPacker(4*4);
-        fp.addF32(mAdd.x);
-        fp.addF32(mAdd.y);
-        fp.addF32(mAdd.z);
-        fp.addF32(mAdd.w);
-        setVar(1, fp);
-    }
-
-    /**
-     * Set a color matrix to convert from RGB to luminance. The alpha channel
-     * will be a copy.
-     *
-     */
-    public void setGreyscale() {
-        mMatrix.loadIdentity();
-        mMatrix.set(0, 0, 0.299f);
-        mMatrix.set(1, 0, 0.587f);
-        mMatrix.set(2, 0, 0.114f);
-        mMatrix.set(0, 1, 0.299f);
-        mMatrix.set(1, 1, 0.587f);
-        mMatrix.set(2, 1, 0.114f);
-        mMatrix.set(0, 2, 0.299f);
-        mMatrix.set(1, 2, 0.587f);
-        mMatrix.set(2, 2, 0.114f);
-        setMatrix();
-    }
-
-    /**
-     * Set the matrix to convert from YUV to RGB with a direct copy of the 4th
-     * channel.
-     *
-     */
-    public void setYUVtoRGB() {
-        mMatrix.loadIdentity();
-        mMatrix.set(0, 0, 1.f);
-        mMatrix.set(1, 0, 0.f);
-        mMatrix.set(2, 0, 1.13983f);
-        mMatrix.set(0, 1, 1.f);
-        mMatrix.set(1, 1, -0.39465f);
-        mMatrix.set(2, 1, -0.5806f);
-        mMatrix.set(0, 2, 1.f);
-        mMatrix.set(1, 2, 2.03211f);
-        mMatrix.set(2, 2, 0.f);
-        setMatrix();
-    }
-
-    /**
-     * Set the matrix to convert from RGB to YUV with a direct copy of the 4th
-     * channel.
-     *
-     */
-    public void setRGBtoYUV() {
-        mMatrix.loadIdentity();
-        mMatrix.set(0, 0, 0.299f);
-        mMatrix.set(1, 0, 0.587f);
-        mMatrix.set(2, 0, 0.114f);
-        mMatrix.set(0, 1, -0.14713f);
-        mMatrix.set(1, 1, -0.28886f);
-        mMatrix.set(2, 1, 0.436f);
-        mMatrix.set(0, 2, 0.615f);
-        mMatrix.set(1, 2, -0.51499f);
-        mMatrix.set(2, 2, -0.10001f);
-        setMatrix();
-    }
-
-
-    /**
-     * Invoke the kernel and apply the matrix to each cell of ain and copy to
-     * aout.
-     *
-     * @param ain Input allocation
-     * @param aout Output allocation
-     */
-    public void forEach(Allocation ain, Allocation aout) {
-        forEach(0, ain, aout, null);
-    }
-
-    /**
-     * Invoke the kernel and apply the matrix to each cell of input
-     * {@link Allocation} and copy to the output {@link Allocation}.
-     *
-     * If the vector size of the input is less than four, the
-     * remaining components are treated as zero for the matrix
-     * multiply.
-     *
-     * If the output vector size is less than four, the unused
-     * vector components are discarded.
-     *
-     *
-     * @param ain Input allocation
-     * @param aout Output allocation
-     * @param opt LaunchOptions for clipping
-     */
-    public void forEach(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
-        if (!ain.getElement().isCompatible(Element.U8(mRS)) &&
-            !ain.getElement().isCompatible(Element.U8_2(mRS)) &&
-            !ain.getElement().isCompatible(Element.U8_3(mRS)) &&
-            !ain.getElement().isCompatible(Element.U8_4(mRS)) &&
-            !ain.getElement().isCompatible(Element.F32(mRS)) &&
-            !ain.getElement().isCompatible(Element.F32_2(mRS)) &&
-            !ain.getElement().isCompatible(Element.F32_3(mRS)) &&
-            !ain.getElement().isCompatible(Element.F32_4(mRS))) {
-
-            throw new RSIllegalArgumentException("Unsupported element type.");
-        }
-
-        if (!aout.getElement().isCompatible(Element.U8(mRS)) &&
-            !aout.getElement().isCompatible(Element.U8_2(mRS)) &&
-            !aout.getElement().isCompatible(Element.U8_3(mRS)) &&
-            !aout.getElement().isCompatible(Element.U8_4(mRS)) &&
-            !aout.getElement().isCompatible(Element.F32(mRS)) &&
-            !aout.getElement().isCompatible(Element.F32_2(mRS)) &&
-            !aout.getElement().isCompatible(Element.F32_3(mRS)) &&
-            !aout.getElement().isCompatible(Element.F32_4(mRS))) {
-
-            throw new RSIllegalArgumentException("Unsupported element type.");
-        }
-
-        forEach(0, ain, aout, null, opt);
-    }
-
-    /**
-     * Get a KernelID for this intrinsic kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelID() {
-        return createKernelID(0, 3, null, null);
-    }
-
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3.java
deleted file mode 100644
index 17889aa..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.Log;
-
-/**
- * Intrinsic for applying a 3x3 convolve to an allocation.
- *
- **/
-public class ScriptIntrinsicConvolve3x3 extends ScriptIntrinsic {
-    private final float[] mValues = new float[9];
-    private Allocation mInput;
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 19;
-
-    ScriptIntrinsicConvolve3x3(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Supported elements types are {@link Element#U8}, {@link
-     * Element#U8_2}, {@link Element#U8_3}, {@link Element#U8_4},
-     * {@link Element#F32}, {@link Element#F32_2}, {@link
-     * Element#F32_3}, and {@link Element#F32_4}.
-     *
-     * <p> The default coefficients are:
-     * <code>
-     * <p> [ 0,  0,  0 ]
-     * <p> [ 0,  1,  0 ]
-     * <p> [ 0,  0,  0 ]
-     * </code>
-     *
-     * @param rs The RenderScript context
-     * @param e Element type for intputs and outputs
-     *
-     * @return ScriptIntrinsicConvolve3x3
-     */
-    public static ScriptIntrinsicConvolve3x3 create(RenderScript rs, Element e) {
-        float f[] = { 0, 0, 0, 0, 1, 0, 0, 0, 0};
-        if (!e.isCompatible(Element.U8(rs)) &&
-            !e.isCompatible(Element.U8_2(rs)) &&
-            !e.isCompatible(Element.U8_3(rs)) &&
-            !e.isCompatible(Element.U8_4(rs)) &&
-            !e.isCompatible(Element.F32(rs)) &&
-            !e.isCompatible(Element.F32_2(rs)) &&
-            !e.isCompatible(Element.F32_3(rs)) &&
-            !e.isCompatible(Element.F32_4(rs))) {
-            throw new RSIllegalArgumentException("Unsupported element type.");
-        }
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(1, e.getID(rs), mUseIncSupp);
-
-        ScriptIntrinsicConvolve3x3 si = new ScriptIntrinsicConvolve3x3(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        si.setCoefficients(f);
-        return si;
-    }
-
-    /**
-     * Set the input of the 3x3 convolve.
-     * Must match the element type supplied during create.
-     *
-     * @param ain The input allocation.
-     */
-    public void setInput(Allocation ain) {
-        mInput = ain;
-        setVar(1, ain);
-    }
-
-    /**
-     * Set the coefficients for the convolve.
-     *
-     * <p> The convolve layout is:
-     * <code>
-     * <p> [ 0,  1,  2 ]
-     * <p> [ 3,  4,  5 ]
-     * <p> [ 6,  7,  8 ]
-     * </code>
-     *
-     * @param v The array of coefficients to set
-     */
-    public void setCoefficients(float v[]) {
-        FieldPacker fp = new FieldPacker(9*4);
-        for (int ct=0; ct < mValues.length; ct++) {
-            mValues[ct] = v[ct];
-            fp.addF32(mValues[ct]);
-        }
-        setVar(0, fp);
-    }
-
-    /**
-     * Apply the filter to the input and save to the specified
-     * allocation.
-     *
-     * @param aout Output allocation. Must match creation element
-     *             type.
-     */
-    public void forEach(Allocation aout) {
-        forEach(0, (Allocation) null, aout, null);
-    }
-
-    /**
-     * Apply the filter to the input and save to the specified
-     * allocation.
-     *
-     * @param aout Output allocation. Must match creation element
-     *             type.
-     * @param opt LaunchOptions for clipping
-     */
-    public void forEach(Allocation aout, Script.LaunchOptions opt) {
-        forEach(0, (Allocation) null, aout, null, opt);
-    }
-
-    /**
-     * Get a KernelID for this intrinsic kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelID() {
-        return createKernelID(0, 2, null, null);
-    }
-
-    /**
-     * Get a FieldID for the input field of this intrinsic.
-     *
-     * @return Script.FieldID The FieldID object.
-     */
-    public Script.FieldID getFieldID_Input() {
-        return createFieldID(1, null);
-    }
-
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5.java
deleted file mode 100644
index 2c591ba..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.Log;
-
-/**
- * Intrinsic for applying a 5x5 convolve to an allocation.
- *
- **/
-public class ScriptIntrinsicConvolve5x5 extends ScriptIntrinsic {
-    private final float[] mValues = new float[25];
-    private Allocation mInput;
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 19;
-
-    ScriptIntrinsicConvolve5x5(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Supported elements types are {@link Element#U8}, {@link
-     * Element#U8_2}, {@link Element#U8_3}, {@link Element#U8_4},
-     * {@link Element#F32}, {@link Element#F32_2}, {@link
-     * Element#F32_3}, and {@link Element#F32_4}.
-     *
-     * <p> The default coefficients are:
-     * <code>
-     * <p> [ 0,  0,  0,  0,  0  ]
-     * <p> [ 0,  0,  0,  0,  0  ]
-     * <p> [ 0,  0,  1,  0,  0  ]
-     * <p> [ 0,  0,  0,  0,  0  ]
-     * <p> [ 0,  0,  0,  0,  0  ]
-     * </code>
-     *
-     * @param rs The RenderScript context
-     * @param e Element type for intputs and outputs
-     *
-     * @return ScriptIntrinsicConvolve5x5
-     */
-    public static ScriptIntrinsicConvolve5x5 create(RenderScript rs, Element e) {
-        if (!e.isCompatible(Element.U8(rs)) &&
-            !e.isCompatible(Element.U8_2(rs)) &&
-            !e.isCompatible(Element.U8_3(rs)) &&
-            !e.isCompatible(Element.U8_4(rs)) &&
-            !e.isCompatible(Element.F32(rs)) &&
-            !e.isCompatible(Element.F32_2(rs)) &&
-            !e.isCompatible(Element.F32_3(rs)) &&
-            !e.isCompatible(Element.F32_4(rs))) {
-            throw new RSIllegalArgumentException("Unsupported element type.");
-        }
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(4, e.getID(rs), mUseIncSupp);
-
-        ScriptIntrinsicConvolve5x5 si = new ScriptIntrinsicConvolve5x5(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        return si;
-
-    }
-
-    /**
-     * Set the input of the 5x5 convolve.
-     * Must match the element type supplied during create.
-     *
-     * @param ain The input allocation.
-     */
-    public void setInput(Allocation ain) {
-        mInput = ain;
-        setVar(1, ain);
-    }
-
-    /**
-    * Set the coefficients for the convolve.
-    *
-    * <p> The convolve layout is:
-    * <code>
-    * <p> [ 0,  1,  2,  3,  4  ]
-    * <p> [ 5,  6,  7,  8,  9  ]
-    * <p> [ 10, 11, 12, 13, 14 ]
-    * <p> [ 15, 16, 17, 18, 19 ]
-    * <p> [ 20, 21, 22, 23, 24 ]
-    * </code>
-    *
-    * @param v The array of coefficients to set
-    */
-    public void setCoefficients(float v[]) {
-        FieldPacker fp = new FieldPacker(25*4);
-        for (int ct=0; ct < mValues.length; ct++) {
-            mValues[ct] = v[ct];
-            fp.addF32(mValues[ct]);
-        }
-        setVar(0, fp);
-    }
-
-    /**
-     * Apply the filter to the input and save to the specified
-     * allocation.
-     *
-     * @param aout Output allocation. Must match creation element
-     *             type.
-     */
-    public void forEach(Allocation aout) {
-        forEach(0, (Allocation) null, aout, null);
-    }
-
-    /**
-     * Apply the filter to the input and save to the specified
-     * allocation.
-     *
-     * @param aout Output allocation. Must match creation element
-     *             type.
-     * @param opt LaunchOptions for clipping
-     */
-    public void forEach(Allocation aout, Script.LaunchOptions opt) {
-        forEach(0, (Allocation) null, aout, null, opt);
-    }
-
-
-    /**
-     * Get a KernelID for this intrinsic kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelID() {
-        return createKernelID(0, 2, null, null);
-    }
-
-    /**
-     * Get a FieldID for the input field of this intrinsic.
-     *
-     * @return Script.FieldID The FieldID object.
-     */
-    public Script.FieldID getFieldID_Input() {
-        return createFieldID(1, null);
-    }
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicHistogram.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicHistogram.java
deleted file mode 100644
index e3e6406..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicHistogram.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.Log;
-
-/**
- * Intrinsic Histogram filter.
- *
- *
- **/
-public class ScriptIntrinsicHistogram extends ScriptIntrinsic {
-    private Allocation mOut;
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 19;
-
-    protected ScriptIntrinsicHistogram(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Create an intrinsic for calculating the histogram of an uchar
-     * or uchar4 image.
-     *
-     * Supported elements types are
-     * {@link Element#U8_4}, {@link Element#U8_3},
-     * {@link Element#U8_2}, {@link Element#U8}
-     *
-     * @param rs The RenderScript context
-     * @param e Element type for inputs
-     *
-     * @return ScriptIntrinsicHistogram
-     */
-    public static ScriptIntrinsicHistogram create(RenderScript rs, Element e) {
-        if ((!e.isCompatible(Element.U8_4(rs))) &&
-            (!e.isCompatible(Element.U8_3(rs))) &&
-            (!e.isCompatible(Element.U8_2(rs))) &&
-            (!e.isCompatible(Element.U8(rs)))) {
-            throw new RSIllegalArgumentException("Unsupported element type.");
-        }
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(9, e.getID(rs), mUseIncSupp);
-
-        ScriptIntrinsicHistogram si = new ScriptIntrinsicHistogram(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        return si;
-    }
-
-    /**
-     * Process an input buffer and place the histogram into the
-     * output allocation. The output allocation may be a narrower
-     * vector size than the input. In this case the vector size of
-     * the output is used to determine how many of the input
-     * channels are used in the computation. This is useful if you
-     * have an RGBA input buffer but only want the histogram for
-     * RGB.
-     *
-     * 1D and 2D input allocations are supported.
-     *
-     * @param ain The input image
-     */
-    public void forEach(Allocation ain) {
-        forEach(ain, null);
-    }
-
-    /**
-     * Process an input buffer and place the histogram into the
-     * output allocation. The output allocation may be a narrower
-     * vector size than the input. In this case the vector size of
-     * the output is used to determine how many of the input
-     * channels are used in the computation. This is useful if you
-     * have an RGBA input buffer but only want the histogram for
-     * RGB.
-     *
-     * 1D and 2D input allocations are supported.
-     *
-     * @param ain The input image
-     * @param opt LaunchOptions for clipping
-     */
-    public void forEach(Allocation ain, Script.LaunchOptions opt) {
-        if (ain.getType().getElement().getVectorSize() <
-            mOut.getType().getElement().getVectorSize()) {
-
-            throw new RSIllegalArgumentException(
-                "Input vector size must be >= output vector size.");
-        }
-        if (!ain.getType().getElement().isCompatible(Element.U8(mRS)) &&
-            !ain.getType().getElement().isCompatible(Element.U8_2(mRS)) &&
-            !ain.getType().getElement().isCompatible(Element.U8_3(mRS)) &&
-            !ain.getType().getElement().isCompatible(Element.U8_4(mRS))) {
-            throw new RSIllegalArgumentException("Input type must be U8, U8_1, U8_2 or U8_4.");
-        }
-
-        forEach(0, ain, null, null, opt);
-    }
-
-
-
-    /**
-     * Set the coefficients used for the RGBA to Luminocity
-     * calculation. The default is {0.299f, 0.587f, 0.114f, 0.f}.
-     *
-     * Coefficients must be >= 0 and sum to 1.0 or less.
-     *
-     * @param r Red coefficient
-     * @param g Green coefficient
-     * @param b Blue coefficient
-     * @param a Alpha coefficient
-     */
-    public void setDotCoefficients(float r, float g, float b, float a) {
-        if ((r < 0.f) || (g < 0.f) || (b < 0.f) || (a < 0.f)) {
-            throw new RSIllegalArgumentException("Coefficient may not be negative.");
-        }
-        if ((r + g + b + a) > 1.f) {
-            throw new RSIllegalArgumentException("Sum of coefficients must be 1.0 or less.");
-        }
-
-        FieldPacker fp = new FieldPacker(16);
-        fp.addF32(r);
-        fp.addF32(g);
-        fp.addF32(b);
-        fp.addF32(a);
-        setVar(0, fp);
-    }
-
-    /**
-     * Set the output of the histogram.  32 bit integer types are
-     * supported.
-     *
-     * @param aout The output allocation
-     */
-    public void setOutput(Allocation aout) {
-        mOut = aout;
-        if (mOut.getType().getElement() != Element.U32(mRS) &&
-            mOut.getType().getElement() != Element.U32_2(mRS) &&
-            mOut.getType().getElement() != Element.U32_3(mRS) &&
-            mOut.getType().getElement() != Element.U32_4(mRS) &&
-            mOut.getType().getElement() != Element.I32(mRS) &&
-            mOut.getType().getElement() != Element.I32_2(mRS) &&
-            mOut.getType().getElement() != Element.I32_3(mRS) &&
-            mOut.getType().getElement() != Element.I32_4(mRS)) {
-
-            throw new RSIllegalArgumentException("Output type must be U32 or I32.");
-        }
-        if ((mOut.getType().getX() != 256) ||
-            (mOut.getType().getY() != 0) ||
-            mOut.getType().hasMipmaps() ||
-            (mOut.getType().getYuv() != 0)) {
-
-            throw new RSIllegalArgumentException("Output must be 1D, 256 elements.");
-        }
-        setVar(1, aout);
-    }
-
-
-    /**
-     * Process an input buffer and place the histogram into the
-     * output allocation. The dot product of the input channel and
-     * the coefficients from 'setDotCoefficients' are used to
-     * calculate the output values.
-     *
-     * 1D and 2D input allocations are supported.
-     *
-     * @param ain The input image
-     */
-    public void forEach_Dot(Allocation ain) {
-        forEach_Dot(ain, null);
-    }
-
-    /**
-     * Process an input buffer and place the histogram into the
-     * output allocation. The dot product of the input channel and
-     * the coefficients from 'setDotCoefficients' are used to
-     * calculate the output values.
-     *
-     * 1D and 2D input allocations are supported.
-     *
-     * @param ain The input image
-     * @param opt LaunchOptions for clipping
-     */
-    public void forEach_Dot(Allocation ain, Script.LaunchOptions opt) {
-        if (mOut.getType().getElement().getVectorSize() != 1) {
-            throw new RSIllegalArgumentException("Output vector size must be one.");
-        }
-        if (!ain.getType().getElement().isCompatible(Element.U8(mRS)) &&
-            !ain.getType().getElement().isCompatible(Element.U8_2(mRS)) &&
-            !ain.getType().getElement().isCompatible(Element.U8_3(mRS)) &&
-            !ain.getType().getElement().isCompatible(Element.U8_4(mRS))) {
-            throw new RSIllegalArgumentException("Input type must be U8, U8_1, U8_2 or U8_4.");
-        }
-
-        forEach(1, ain, null, null, opt);
-    }
-
-
-
-    /**
-     * Get a KernelID for this intrinsic kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelID_Separate() {
-        return createKernelID(0, 3, null, null);
-    }
-
-    /**
-     * Get a FieldID for the input field of this intrinsic.
-     *
-     * @return Script.FieldID The FieldID object.
-     */
-    public Script.FieldID getFieldID_Input() {
-        return createFieldID(1, null);
-    }
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicLUT.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicLUT.java
deleted file mode 100644
index 0b905ba..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicLUT.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.Log;
-
-/**
- * Intrinsic for applying a per-channel lookup table. Each
- * channel of the input has an independant lookup table. The
- * tables are 256 entries in size and can cover the full value
- * range of {@link Element#U8_4}.
- **/
-public class ScriptIntrinsicLUT extends ScriptIntrinsic {
-    private final Matrix4f mMatrix = new Matrix4f();
-    private Allocation mTables;
-    private final byte mCache[] = new byte[1024];
-    private boolean mDirty = true;
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 19;
-
-    protected ScriptIntrinsicLUT(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Supported elements types are {@link Element#U8_4}
-     *
-     * The defaults tables are identity.
-     *
-     * @param rs The RenderScript context
-     * @param e Element type for intputs and outputs
-     *
-     * @return ScriptIntrinsicLUT
-     */
-    public static ScriptIntrinsicLUT create(RenderScript rs, Element e) {
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(3, e.getID(rs), mUseIncSupp);
-
-        ScriptIntrinsicLUT si = new ScriptIntrinsicLUT(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        si.mTables = Allocation.createSized(rs, Element.U8(rs), 1024);
-        for (int ct=0; ct < 256; ct++) {
-            si.mCache[ct] = (byte)ct;
-            si.mCache[ct + 256] = (byte)ct;
-            si.mCache[ct + 512] = (byte)ct;
-            si.mCache[ct + 768] = (byte)ct;
-        }
-        si.setVar(0, si.mTables);
-        return si;
-    }
-
-
-    private void validate(int index, int value) {
-        if (index < 0 || index > 255) {
-            throw new RSIllegalArgumentException("Index out of range (0-255).");
-        }
-        if (value < 0 || value > 255) {
-            throw new RSIllegalArgumentException("Value out of range (0-255).");
-        }
-    }
-
-    /**
-     * Set an entry in the red channel lookup table
-     *
-     * @param index Must be 0-255
-     * @param value Must be 0-255
-     */
-    public void setRed(int index, int value) {
-        validate(index, value);
-        mCache[index] = (byte)value;
-        mDirty = true;
-    }
-
-    /**
-     * Set an entry in the green channel lookup table
-     *
-     * @param index Must be 0-255
-     * @param value Must be 0-255
-     */
-    public void setGreen(int index, int value) {
-        validate(index, value);
-        mCache[index+256] = (byte)value;
-        mDirty = true;
-    }
-
-    /**
-     * Set an entry in the blue channel lookup table
-     *
-     * @param index Must be 0-255
-     * @param value Must be 0-255
-     */
-    public void setBlue(int index, int value) {
-        validate(index, value);
-        mCache[index+512] = (byte)value;
-        mDirty = true;
-    }
-
-    /**
-     * Set an entry in the alpha channel lookup table
-     *
-     * @param index Must be 0-255
-     * @param value Must be 0-255
-     */
-    public void setAlpha(int index, int value) {
-        validate(index, value);
-        mCache[index+768] = (byte)value;
-        mDirty = true;
-    }
-
-
-    /**
-     * Invoke the kernel and apply the lookup to each cell of ain
-     * and copy to aout.
-     *
-     * @param ain Input allocation
-     * @param aout Output allocation
-     */
-    public void forEach(Allocation ain, Allocation aout) {
-        if (mDirty) {
-            mDirty = false;
-            mTables.copyFromUnchecked(mCache);
-        }
-        forEach(0, ain, aout, null);
-    }
-
-    /**
-     * Get a KernelID for this intrinsic kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelID() {
-        return createKernelID(0, 3, null, null);
-    }
-}
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicResize.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicResize.java
deleted file mode 100644
index 61c169c..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicResize.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import android.util.Log;
-
-/**
- * Intrinsic for performing a resize of a 2D allocation.
- */
-public class ScriptIntrinsicResize extends ScriptIntrinsic {
-    private Allocation mInput;
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 21;
-
-    protected ScriptIntrinsicResize(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Supported elements types are {@link Element#U8}, {@link
-     * Element#U8_2}, {@link Element#U8_3}, {@link Element#U8_4}
-     * {@link Element#F32}, {@link Element#F32_2}, {@link
-     * Element#F32_3}, {@link Element#F32_4}
-     *
-     * @param rs The RenderScript context
-     *
-     * @return ScriptIntrinsicResize
-     */
-    public static ScriptIntrinsicResize create(RenderScript rs) {
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(12, 0, mUseIncSupp);
-
-        ScriptIntrinsicResize si = new ScriptIntrinsicResize(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        return si;
-
-    }
-
-    /**
-     * Set the input of the resize.
-     * Must match the element type supplied during create.
-     *
-     * @param ain The input allocation.
-     */
-    public void setInput(Allocation ain) {
-        Element e = ain.getElement();
-        if (!e.isCompatible(Element.U8(mRS)) &&
-            !e.isCompatible(Element.U8_2(mRS)) &&
-            !e.isCompatible(Element.U8_3(mRS)) &&
-            !e.isCompatible(Element.U8_4(mRS)) &&
-            !e.isCompatible(Element.F32(mRS)) &&
-            !e.isCompatible(Element.F32_2(mRS)) &&
-            !e.isCompatible(Element.F32_3(mRS)) &&
-            !e.isCompatible(Element.F32_4(mRS))) {
-            throw new RSIllegalArgumentException("Unsupported element type.");
-        }
-
-        mInput = ain;
-        setVar(0, ain);
-    }
-
-    /**
-     * Get a FieldID for the input field of this intrinsic.
-     *
-     * @return Script.FieldID The FieldID object.
-     */
-    public Script.FieldID getFieldID_Input() {
-        return createFieldID(0, null);
-    }
-
-
-    /**
-     * Resize copy the input allocation to the output specified. The
-     * Allocation is rescaled if necessary using bi-cubic
-     * interpolation.
-     *
-     * @param aout Output allocation. Element type must match
-     *             current input.  Must not be same as input.
-     */
-    public void forEach_bicubic(Allocation aout) {
-        if (aout == mInput) {
-            throw new RSIllegalArgumentException("Output cannot be same as Input.");
-        }
-        forEach_bicubic(aout, null);
-    }
-
-    /**
-     * Resize copy the input allocation to the output specified. The
-     * Allocation is rescaled if necessary using bi-cubic
-     * interpolation.
-     *
-     * @param aout Output allocation. Element type must match
-     *             current input.
-     * @param opt LaunchOptions for clipping
-     */
-    public void forEach_bicubic(Allocation aout, Script.LaunchOptions opt) {
-        forEach(0, (Allocation) null, aout, null, opt);
-    }
-
-    /**
-     * Get a KernelID for this intrinsic kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelID_bicubic() {
-        return createKernelID(0, 2, null, null);
-    }
-
-
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGB.java b/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGB.java
deleted file mode 100644
index 6c84020..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGB.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-
-/**
- * Intrinsic for converting an Android YUV buffer to RGB.
- *
- * The input allocation is supplied in NV21 format as a U8
- * element type. The output is RGBA, the alpha channel will be
- * set to 255.
- */
-public class ScriptIntrinsicYuvToRGB extends ScriptIntrinsic {
-    private Allocation mInput;
-    // API level for the intrinsic
-    private static final int INTRINSIC_API_LEVEL = 19;
-
-    ScriptIntrinsicYuvToRGB(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /**
-     * Create an intrinsic for converting YUV to RGB.
-     *
-     * Supported elements types are {@link Element#U8_4}
-     *
-     * @param rs The RenderScript context
-     * @param e Element type for output
-     *
-     * @return ScriptIntrinsicYuvToRGB
-     */
-    public static ScriptIntrinsicYuvToRGB create(RenderScript rs, Element e) {
-        // 6 comes from RS_SCRIPT_INTRINSIC_YUV_TO_RGB in rsDefines.h
-        long id;
-        boolean mUseIncSupp = rs.isUseNative() &&
-                              android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
-
-        id = rs.nScriptIntrinsicCreate(6, e.getID(rs), mUseIncSupp);
-
-        ScriptIntrinsicYuvToRGB si = new ScriptIntrinsicYuvToRGB(id, rs);
-        si.setIncSupp(mUseIncSupp);
-        return si;
-    }
-
-
-    /**
-     * Set the input yuv allocation, must be {@link Element#U8}.
-     *
-     * @param ain The input allocation.
-     */
-    public void setInput(Allocation ain) {
-        mInput = ain;
-        setVar(0, ain);
-    }
-
-    /**
-     * Convert the image to RGB.
-     *
-     * @param aout Output allocation. Must match creation element
-     *             type.
-     */
-    public void forEach(Allocation aout) {
-        forEach(0, (Allocation) null, aout, null);
-    }
-
-    /**
-     * Get a KernelID for this intrinsic kernel.
-     *
-     * @return Script.KernelID The KernelID object.
-     */
-    public Script.KernelID getKernelID() {
-        return createKernelID(0, 2, null, null);
-    }
-
-    /**
-     * Get a FieldID for the input field of this intrinsic.
-     *
-     * @return Script.FieldID The FieldID object.
-     */
-    public Script.FieldID getFieldID_Input() {
-        return createFieldID(0, null);
-    }
-}
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Short2.java b/v8/renderscript/java/src/android/support/v8/renderscript/Short2.java
deleted file mode 100644
index 365b319..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Short2.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript Short2 type back to the Android system.
- *
- **/
-public class Short2 {
-    public Short2() {
-    }
-
-    public Short2(short initX, short initY) {
-        x = initX;
-        y = initY;
-    }
-
-    public short x;
-    public short y;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Short3.java b/v8/renderscript/java/src/android/support/v8/renderscript/Short3.java
deleted file mode 100644
index abf8196..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Short3.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript short3 type back to the Android system.
- *
- **/
-public class Short3 {
-    public Short3() {
-    }
-
-    public Short3(short initX, short initY, short initZ) {
-        x = initX;
-        y = initY;
-        z = initZ;
-    }
-
-    public short x;
-    public short y;
-    public short z;
-}
-
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Short4.java b/v8/renderscript/java/src/android/support/v8/renderscript/Short4.java
deleted file mode 100644
index d2108e4..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Short4.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript short4 type back to the Android system.
- *
- **/
-public class Short4 {
-    public Short4() {
-    }
-
-    public Short4(short initX, short initY, short initZ, short initW) {
-        x = initX;
-        y = initY;
-        z = initZ;
-        w = initW;
-    }
-
-    public short x;
-    public short y;
-    public short z;
-    public short w;
-}
-
-
-
diff --git a/v8/renderscript/java/src/android/support/v8/renderscript/Type.java b/v8/renderscript/java/src/android/support/v8/renderscript/Type.java
deleted file mode 100644
index 6aeb9ea..0000000
--- a/v8/renderscript/java/src/android/support/v8/renderscript/Type.java
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v8.renderscript;
-
-
-import java.lang.reflect.Field;
-
-import android.graphics.ImageFormat;
-import android.util.Log;
-
-/**
- * <p>A Type describes the {@link android.support.v8.renderscript.Element} and
- * dimensions used for an {@link android.support.v8.renderscript.Allocation} or
- * a parallel operation. Types are created through
- * {@link android.support.v8.renderscript.Type.Builder}.</p>
- *
- * <p>A Type always includes an {@link android.support.v8.renderscript.Element}
- * and an X dimension. A Type may be multidimensional, up to three dimensions.
- * A nonzero value in the Y or Z dimensions indicates that the dimension is
- * present. Note that a Type with only a given X dimension and a Type with the
- * same X dimension but Y = 1 are not equivalent.</p>
- *
- * <p>A Type also supports inclusion of level of detail (LOD) or cube map
- * faces. LOD and cube map faces are booleans to indicate present or not
- * present. </p>
- *
- * <p>A Type also supports YUV format information to support an {@link
- * android.support.v8.renderscript.Allocation} in a YUV format. The YUV formats
- * supported are {@link android.graphics.ImageFormat#YV12} and {@link
- * android.graphics.ImageFormat#NV21}.</p>
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses RenderScript,
- * read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a>
- * developer guide.</p>
- * </div>
- **/
-public class Type extends BaseObj {
-    int mDimX;
-    int mDimY;
-    int mDimZ;
-    boolean mDimMipmaps;
-    boolean mDimFaces;
-    int mDimYuv;
-    int mElementCount;
-    Element mElement;
-
-    public enum CubemapFace {
-        POSITIVE_X (0),
-        NEGATIVE_X (1),
-        POSITIVE_Y (2),
-        NEGATIVE_Y (3),
-        POSITIVE_Z (4),
-        NEGATIVE_Z (5);
-
-        int mID;
-        CubemapFace(int id) {
-            mID = id;
-        }
-    }
-
-    /**
-     * Return the element associated with this Type.
-     *
-     * @return Element
-     */
-    public Element getElement() {
-        return mElement;
-    }
-
-    /**
-     * Return the value of the X dimension.
-     *
-     * @return int
-     */
-    public int getX() {
-        return mDimX;
-    }
-
-    /**
-     * Return the value of the Y dimension or 0 for a 1D allocation.
-     *
-     * @return int
-     */
-    public int getY() {
-        return mDimY;
-    }
-
-    /**
-     * Return the value of the Z dimension or 0 for a 1D or 2D allocation.
-     *
-     * @return int
-     */
-    public int getZ() {
-        return mDimZ;
-    }
-
-    /**
-     * Get the YUV format
-     *
-     * @return int
-     */
-    public int getYuv() {
-        return mDimYuv;
-    }
-
-    /**
-     * Return if the Type has a mipmap chain.
-     *
-     * @return boolean
-     */
-    public boolean hasMipmaps() {
-        return mDimMipmaps;
-    }
-
-    /**
-     * Return if the Type is a cube map.
-     *
-     * @return boolean
-     */
-    public boolean hasFaces() {
-        return mDimFaces;
-    }
-
-    /**
-     * Return the total number of accessable cells in the Type.
-     *
-     * @return int
-     */
-    public int getCount() {
-        return mElementCount;
-    }
-
-    void calcElementCount() {
-        boolean hasLod = hasMipmaps();
-        int x = getX();
-        int y = getY();
-        int z = getZ();
-        int faces = 1;
-        if (hasFaces()) {
-            faces = 6;
-        }
-        if (x == 0) {
-            x = 1;
-        }
-        if (y == 0) {
-            y = 1;
-        }
-        if (z == 0) {
-            z = 1;
-        }
-
-        int count = x * y * z * faces;
-
-        while (hasLod && ((x > 1) || (y > 1) || (z > 1))) {
-            if(x > 1) {
-                x >>= 1;
-            }
-            if(y > 1) {
-                y >>= 1;
-            }
-            if(z > 1) {
-                z >>= 1;
-            }
-
-            count += x * y * z * faces;
-        }
-        mElementCount = count;
-    }
-
-
-    Type(long id, RenderScript rs) {
-        super(id, rs);
-    }
-
-    /*
-     * Get an identical dummy Type for Compat Context
-     *
-     */
-    public long getDummyType(RenderScript mRS, long eid) {
-        return mRS.nIncTypeCreate(eid, mDimX, mDimY, mDimZ, mDimMipmaps, mDimFaces, mDimYuv);
-    }
-
-    /**
-     * Utility function for creating basic 1D types. The type is
-     * created without mipmaps enabled.
-     *
-     * @param rs The RenderScript context
-     * @param e The Element for the Type
-     * @param dimX The X dimension, must be > 0
-     *
-     * @return Type
-     */
-    static public Type createX(RenderScript rs, Element e, int dimX) {
-        if (dimX < 1) {
-            throw new RSInvalidStateException("Dimension must be >= 1.");
-        }
-
-        long id = rs.nTypeCreate(e.getID(rs), dimX, 0, 0, false, false, 0);
-        Type t = new Type(id, rs);
-        t.mElement = e;
-        t.mDimX = dimX;
-        t.calcElementCount();
-        return t;
-    }
-
-    /**
-     * Utility function for creating basic 2D types. The type is
-     * created without mipmaps or cubemaps.
-     *
-     * @param rs The RenderScript context
-     * @param e The Element for the Type
-     * @param dimX The X dimension, must be > 0
-     * @param dimY The Y dimension, must be > 0
-     *
-     * @return Type
-     */
-    static public Type createXY(RenderScript rs, Element e, int dimX, int dimY) {
-        if ((dimX < 1) || (dimY < 1)) {
-            throw new RSInvalidStateException("Dimension must be >= 1.");
-        }
-
-        long id = rs.nTypeCreate(e.getID(rs), dimX, dimY, 0, false, false, 0);
-        Type t = new Type(id, rs);
-        t.mElement = e;
-        t.mDimX = dimX;
-        t.mDimY = dimY;
-        t.calcElementCount();
-        return t;
-    }
-
-    /**
-     * Utility function for creating basic 3D types. The type is
-     * created without mipmaps.
-     *
-     * @param rs The RenderScript context
-     * @param e The Element for the Type
-     * @param dimX The X dimension, must be > 0
-     * @param dimY The Y dimension, must be > 0
-     * @param dimZ The Z dimension, must be > 0
-     *
-     * @return Type
-     */
-    static public Type createXYZ(RenderScript rs, Element e, int dimX, int dimY, int dimZ) {
-        if ((dimX < 1) || (dimY < 1) || (dimZ < 1)) {
-            throw new RSInvalidStateException("Dimension must be >= 1.");
-        }
-
-        long id = rs.nTypeCreate(e.getID(rs), dimX, dimY, dimZ, false, false, 0);
-        Type t = new Type(id, rs);
-        t.mElement = e;
-        t.mDimX = dimX;
-        t.mDimY = dimY;
-        t.mDimZ = dimZ;
-        t.calcElementCount();
-        return t;
-    }
-
-    /**
-     * Builder class for Type.
-     *
-     */
-    public static class Builder {
-        RenderScript mRS;
-        int mDimX = 1;
-        int mDimY;
-        int mDimZ;
-        boolean mDimMipmaps;
-        boolean mDimFaces;
-        int mYuv;
-
-        Element mElement;
-
-        /**
-         * Create a new builder object.
-         *
-         * @param rs
-         * @param e The element for the type to be created.
-         */
-        public Builder(RenderScript rs, Element e) {
-            e.checkValid();
-            mRS = rs;
-            mElement = e;
-        }
-
-        /**
-         * Add a dimension to the Type.
-         *
-         *
-         * @param value
-         */
-        public Builder setX(int value) {
-            if(value < 1) {
-                throw new RSIllegalArgumentException("Values of less than 1 for Dimension X are not valid.");
-            }
-            mDimX = value;
-            return this;
-        }
-
-        public Builder setY(int value) {
-            if(value < 1) {
-                throw new RSIllegalArgumentException("Values of less than 1 for Dimension Y are not valid.");
-            }
-            mDimY = value;
-            return this;
-        }
-
-        public Builder setZ(int value) {
-            if(value < 1) {
-                throw new RSIllegalArgumentException("Values of less than 1 for Dimension Z are not valid.");
-            }
-            mDimZ = value;
-            return this;
-        }
-
-        public Builder setMipmaps(boolean value) {
-            mDimMipmaps = value;
-            return this;
-        }
-
-        public Builder setFaces(boolean value) {
-            mDimFaces = value;
-            return this;
-        }
-
-        /**
-         * Set the YUV layout for a Type.
-         *
-         * @param yuvFormat {@link android.graphics.ImageFormat#YV12} or {@link android.graphics.ImageFormat#NV21}
-         */
-        public Builder setYuvFormat(int yuvFormat) {
-            switch (yuvFormat) {
-            case android.graphics.ImageFormat.NV21:
-            case android.graphics.ImageFormat.YV12:
-                break;
-
-            default:
-                throw new RSIllegalArgumentException("Only NV21 and YV12 are supported..");
-            }
-
-            mYuv = yuvFormat;
-            return this;
-        }
-
-
-        /**
-         * Validate structure and create a new Type.
-         *
-         * @return Type
-         */
-        public Type create() {
-            if (mDimZ > 0) {
-                if ((mDimX < 1) || (mDimY < 1)) {
-                    throw new RSInvalidStateException("Both X and Y dimension required when Z is present.");
-                }
-                if (mDimFaces) {
-                    throw new RSInvalidStateException("Cube maps not supported with 3D types.");
-                }
-            }
-            if (mDimY > 0) {
-                if (mDimX < 1) {
-                    throw new RSInvalidStateException("X dimension required when Y is present.");
-                }
-            }
-            if (mDimFaces) {
-                if (mDimY < 1) {
-                    throw new RSInvalidStateException("Cube maps require 2D Types.");
-                }
-            }
-
-            if (mYuv != 0) {
-                if ((mDimZ != 0) || mDimFaces || mDimMipmaps) {
-                    throw new RSInvalidStateException("YUV only supports basic 2D.");
-                }
-            }
-
-            Type t;
-            long id = mRS.nTypeCreate(mElement.getID(mRS),
-                                     mDimX, mDimY, mDimZ, mDimMipmaps, mDimFaces, mYuv);
-            t = new Type(id, mRS);
-
-            t.mElement = mElement;
-            t.mDimX = mDimX;
-            t.mDimY = mDimY;
-            t.mDimZ = mDimZ;
-            t.mDimMipmaps = mDimMipmaps;
-            t.mDimFaces = mDimFaces;
-            t.mDimYuv = mYuv;
-
-            t.calcElementCount();
-            return t;
-        }
-    }
-
-}
diff --git a/v8/renderscript/jni/Android.mk b/v8/renderscript/jni/Android.mk
deleted file mode 100644
index d6a800d..0000000
--- a/v8/renderscript/jni/Android.mk
+++ /dev/null
@@ -1,56 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_CLANG := true
-LOCAL_SDK_VERSION := 14
-
-LOCAL_SRC_FILES:= \
-    android_rscompat_usage_io.cpp \
-    android_rscompat_usage_io_driver.cpp
-
-LOCAL_C_INCLUDES += \
-	$(JNI_H_INCLUDE) \
-	frameworks/rs \
-	frameworks/rs/cpp \
-	frameworks/rs/driver
-
-LOCAL_CFLAGS += -Wno-unused-parameter -Werror
-LOCAL_CFLAGS += -DRS_COMPATIBILITY_LIB -std=c++11
-
-LOCAL_MODULE:= libRSSupportIO
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_LDLIBS += -landroid
-LOCAL_LDFLAGS += -ldl -Wl,--exclude-libs,libc++_static.a
-LOCAL_NDK_STL_VARIANT := c++_static
-include $(BUILD_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-
-LOCAL_CLANG := true
-LOCAL_SDK_VERSION := 9
-
-LOCAL_SRC_FILES:= \
-    android_renderscript_RenderScript.cpp
-
-LOCAL_SHARED_LIBRARIES := \
-        libjnigraphics
-
-LOCAL_STATIC_LIBRARIES := \
-        libRSDispatch
-
-LOCAL_C_INCLUDES += \
-	$(JNI_H_INCLUDE) \
-	frameworks/rs \
-	frameworks/rs/cpp
-
-LOCAL_CFLAGS += -Wno-unused-parameter -Werror -std=c++11
-
-LOCAL_MODULE:= librsjni
-LOCAL_MODULE_TAGS := optional
-LOCAL_REQUIRED_MODULES := libRSSupport
-
-LOCAL_LDFLAGS += -ldl -llog -Wl,--exclude-libs,libc++_static.a
-LOCAL_NDK_STL_VARIANT := c++_static
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/v8/renderscript/jni/android_renderscript_RenderScript.cpp b/v8/renderscript/jni/android_renderscript_RenderScript.cpp
deleted file mode 100644
index 5642835..0000000
--- a/v8/renderscript/jni/android_renderscript_RenderScript.cpp
+++ /dev/null
@@ -1,2431 +0,0 @@
-/*
- * Copyright (C) 2011-2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "libRS_jni"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <math.h>
-#include <android/bitmap.h>
-#include <android/log.h>
-
-#include <rsEnv.h>
-#include "rsDispatch.h"
-#include <dlfcn.h>
-
-//#define LOG_API ALOG
-#define LOG_API(...)
-#define LOG_ERR(...) __android_log_print(ANDROID_LOG_ERROR, "RenderScript JNI", __VA_ARGS__);
-#define RS_JNI_VERSION 2301
-
-#define NELEM(m) (sizeof(m) / sizeof((m)[0]))
-
-template <typename... T>
-void UNUSED(T... t) {}
-#define PER_ARRAY_TYPE(flag, fnc, readonly, ...) {                                      \
-    jint len = 0;                                                                       \
-    void *ptr = nullptr;                                                                \
-    void *srcPtr = nullptr;                                                             \
-    size_t typeBytes = 0;                                                               \
-    jint relFlag = 0;                                                                   \
-    if (readonly) {                                                                     \
-        /* The on-release mode should only be JNI_ABORT for read-only accesses. */      \
-        /* readonly = true, also indicates we are copying to the allocation   . */      \
-        relFlag = JNI_ABORT;                                                            \
-    }                                                                                   \
-    switch(dataType) {                                                                  \
-    case RS_TYPE_FLOAT_32:                                                              \
-        len = _env->GetArrayLength((jfloatArray)data);                                  \
-        ptr = _env->GetFloatArrayElements((jfloatArray)data, flag);                     \
-        typeBytes = 4;                                                                  \
-        if (usePadding) {                                                               \
-            srcPtr = ptr;                                                               \
-            len = len / 3 * 4;                                                          \
-            if (count == 0) {                                                           \
-                count = len / 4;                                                        \
-            }                                                                           \
-            ptr = malloc (len * typeBytes);                                             \
-            if (readonly) {                                                             \
-                copyWithPadding(ptr, srcPtr, mSize, count);                             \
-                fnc(__VA_ARGS__);                                                       \
-            } else {                                                                    \
-                fnc(__VA_ARGS__);                                                       \
-                copyWithUnPadding(srcPtr, ptr, mSize, count);                           \
-            }                                                                           \
-            free(ptr);                                                                  \
-            ptr = srcPtr;                                                               \
-        } else {                                                                        \
-            fnc(__VA_ARGS__);                                                           \
-        }                                                                               \
-        _env->ReleaseFloatArrayElements((jfloatArray)data, (jfloat *)ptr, relFlag);     \
-        return;                                                                         \
-    case RS_TYPE_FLOAT_64:                                                              \
-        len = _env->GetArrayLength((jdoubleArray)data);                                 \
-        ptr = _env->GetDoubleArrayElements((jdoubleArray)data, flag);                   \
-        typeBytes = 8;                                                                  \
-        if (usePadding) {                                                               \
-            srcPtr = ptr;                                                               \
-            len = len / 3 * 4;                                                          \
-            if (count == 0) {                                                           \
-                count = len / 4;                                                        \
-            }                                                                           \
-            ptr = malloc (len * typeBytes);                                             \
-            if (readonly) {                                                             \
-                copyWithPadding(ptr, srcPtr, mSize, count);                             \
-                fnc(__VA_ARGS__);                                                       \
-            } else {                                                                    \
-                fnc(__VA_ARGS__);                                                       \
-                copyWithUnPadding(srcPtr, ptr, mSize, count);                           \
-            }                                                                           \
-            free(ptr);                                                                  \
-            ptr = srcPtr;                                                               \
-        } else {                                                                        \
-            fnc(__VA_ARGS__);                                                           \
-        }                                                                               \
-        _env->ReleaseDoubleArrayElements((jdoubleArray)data, (jdouble *)ptr, relFlag);  \
-        return;                                                                         \
-    case RS_TYPE_SIGNED_8:                                                              \
-    case RS_TYPE_UNSIGNED_8:                                                            \
-        len = _env->GetArrayLength((jbyteArray)data);                                   \
-        ptr = _env->GetByteArrayElements((jbyteArray)data, flag);                       \
-        typeBytes = 1;                                                                  \
-        if (usePadding) {                                                               \
-            srcPtr = ptr;                                                               \
-            len = len / 3 * 4;                                                          \
-            if (count == 0) {                                                           \
-                count = len / 4;                                                        \
-            }                                                                           \
-            ptr = malloc (len * typeBytes);                                             \
-            if (readonly) {                                                             \
-                copyWithPadding(ptr, srcPtr, mSize, count);                             \
-                fnc(__VA_ARGS__);                                                       \
-            } else {                                                                    \
-                fnc(__VA_ARGS__);                                                       \
-                copyWithUnPadding(srcPtr, ptr, mSize, count);                           \
-            }                                                                           \
-            free(ptr);                                                                  \
-            ptr = srcPtr;                                                               \
-        } else {                                                                        \
-            fnc(__VA_ARGS__);                                                           \
-        }                                                                               \
-        _env->ReleaseByteArrayElements((jbyteArray)data, (jbyte*)ptr, relFlag);         \
-        return;                                                                         \
-    case RS_TYPE_SIGNED_16:                                                             \
-    case RS_TYPE_UNSIGNED_16:                                                           \
-        len = _env->GetArrayLength((jshortArray)data);                                  \
-        ptr = _env->GetShortArrayElements((jshortArray)data, flag);                     \
-        typeBytes = 2;                                                                  \
-        if (usePadding) {                                                               \
-            srcPtr = ptr;                                                               \
-            len = len / 3 * 4;                                                          \
-            if (count == 0) {                                                           \
-                count = len / 4;                                                        \
-            }                                                                           \
-            ptr = malloc (len * typeBytes);                                             \
-            if (readonly) {                                                             \
-                copyWithPadding(ptr, srcPtr, mSize, count);                             \
-                fnc(__VA_ARGS__);                                                       \
-            } else {                                                                    \
-                fnc(__VA_ARGS__);                                                       \
-                copyWithUnPadding(srcPtr, ptr, mSize, count);                           \
-            }                                                                           \
-            free(ptr);                                                                  \
-            ptr = srcPtr;                                                               \
-        } else {                                                                        \
-            fnc(__VA_ARGS__);                                                           \
-        }                                                                               \
-        _env->ReleaseShortArrayElements((jshortArray)data, (jshort *)ptr, relFlag);     \
-        return;                                                                         \
-    case RS_TYPE_SIGNED_32:                                                             \
-    case RS_TYPE_UNSIGNED_32:                                                           \
-        len = _env->GetArrayLength((jintArray)data);                                    \
-        ptr = _env->GetIntArrayElements((jintArray)data, flag);                         \
-        typeBytes = 4;                                                                  \
-        if (usePadding) {                                                               \
-            srcPtr = ptr;                                                               \
-            len = len / 3 * 4;                                                          \
-            if (count == 0) {                                                           \
-                count = len / 4;                                                        \
-            }                                                                           \
-            ptr = malloc (len * typeBytes);                                             \
-            if (readonly) {                                                             \
-                copyWithPadding(ptr, srcPtr, mSize, count);                             \
-                fnc(__VA_ARGS__);                                                       \
-            } else {                                                                    \
-                fnc(__VA_ARGS__);                                                       \
-                copyWithUnPadding(srcPtr, ptr, mSize, count);                           \
-            }                                                                           \
-            free(ptr);                                                                  \
-            ptr = srcPtr;                                                               \
-        } else {                                                                        \
-            fnc(__VA_ARGS__);                                                           \
-        }                                                                               \
-        _env->ReleaseIntArrayElements((jintArray)data, (jint *)ptr, relFlag);           \
-        return;                                                                         \
-    case RS_TYPE_SIGNED_64:                                                             \
-    case RS_TYPE_UNSIGNED_64:                                                           \
-        len = _env->GetArrayLength((jlongArray)data);                                   \
-        ptr = _env->GetLongArrayElements((jlongArray)data, flag);                       \
-        typeBytes = 8;                                                                  \
-        if (usePadding) {                                                               \
-            srcPtr = ptr;                                                               \
-            len = len / 3 * 4;                                                          \
-            if (count == 0) {                                                           \
-                count = len / 4;                                                        \
-            }                                                                           \
-            ptr = malloc (len * typeBytes);                                             \
-            if (readonly) {                                                             \
-                copyWithPadding(ptr, srcPtr, mSize, count);                             \
-                fnc(__VA_ARGS__);                                                       \
-            } else {                                                                    \
-                fnc(__VA_ARGS__);                                                       \
-                copyWithUnPadding(srcPtr, ptr, mSize, count);                           \
-            }                                                                           \
-            free(ptr);                                                                  \
-            ptr = srcPtr;                                                               \
-        } else {                                                                        \
-            fnc(__VA_ARGS__);                                                           \
-        }                                                                               \
-        _env->ReleaseLongArrayElements((jlongArray)data, (jlong *)ptr, relFlag);        \
-        return;                                                                         \
-    default:                                                                            \
-        break;                                                                          \
-    }                                                                                   \
-    UNUSED(len, ptr, srcPtr, typeBytes, relFlag);                                       \
-}
-
-
-class AutoJavaStringToUTF8 {
-public:
-    AutoJavaStringToUTF8(JNIEnv* env, jstring str) : fEnv(env), fJStr(str) {
-        fCStr = env->GetStringUTFChars(str, NULL);
-        fLength = env->GetStringUTFLength(str);
-    }
-    ~AutoJavaStringToUTF8() {
-        fEnv->ReleaseStringUTFChars(fJStr, fCStr);
-    }
-    const char* c_str() const { return fCStr; }
-    jsize length() const { return fLength; }
-
-private:
-    JNIEnv*     fEnv;
-    jstring     fJStr;
-    const char* fCStr;
-    jsize       fLength;
-};
-
-class AutoJavaStringArrayToUTF8 {
-public:
-    AutoJavaStringArrayToUTF8(JNIEnv* env, jobjectArray strings, jsize stringsLength)
-    : mEnv(env), mStrings(strings), mStringsLength(stringsLength) {
-        mCStrings = NULL;
-        mSizeArray = NULL;
-        if (stringsLength > 0) {
-            mCStrings = (const char **)calloc(stringsLength, sizeof(char *));
-            mSizeArray = (size_t*)calloc(stringsLength, sizeof(size_t));
-            for (jsize ct = 0; ct < stringsLength; ct ++) {
-                jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct);
-                mCStrings[ct] = mEnv->GetStringUTFChars(s, NULL);
-                mSizeArray[ct] = mEnv->GetStringUTFLength(s);
-            }
-        }
-    }
-    ~AutoJavaStringArrayToUTF8() {
-        for (jsize ct=0; ct < mStringsLength; ct++) {
-            jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct);
-            mEnv->ReleaseStringUTFChars(s, mCStrings[ct]);
-        }
-        free(mCStrings);
-        free(mSizeArray);
-    }
-    const char **c_str() const { return mCStrings; }
-    size_t *c_str_len() const { return mSizeArray; }
-    jsize length() const { return mStringsLength; }
-
-private:
-    JNIEnv      *mEnv;
-    jobjectArray mStrings;
-    const char **mCStrings;
-    size_t      *mSizeArray;
-    jsize        mStringsLength;
-};
-
-
-// ---------------------------------------------------------------------------
-static dispatchTable dispatchTab;
-// Incremental Support lib
-static dispatchTable dispatchTabInc;
-
-static jboolean nLoadSO(JNIEnv *_env, jobject _this, jboolean useNative, jint targetApi, jstring libPath) {
-    void* handle = NULL;
-    if (useNative) {
-        handle = dlopen("libRS.so", RTLD_LAZY | RTLD_LOCAL);
-    } else {
-        // For API 9+, dlopen the full path of libRSSupport.
-        if (libPath != NULL) {
-            const char * libPathJni = _env->GetStringUTFChars(libPath, JNI_FALSE);
-            handle = dlopen(libPathJni, RTLD_LAZY | RTLD_LOCAL);
-            _env->ReleaseStringUTFChars(libPath, libPathJni);
-        } else {
-            handle = dlopen("libRSSupport.so", RTLD_LAZY | RTLD_LOCAL);
-        }
-    }
-    if (handle == NULL) {
-        LOG_ERR("couldn't dlopen %s; librsjni version: %d", dlerror(), RS_JNI_VERSION);
-        return false;
-    }
-
-    if (loadSymbols(handle, dispatchTab, targetApi) == false) {
-        LOG_ERR("Dispatch table init failed! librsjni version: %d", RS_JNI_VERSION);
-        dlclose(handle);
-        return false;
-    }
-    LOG_API("Successfully loaded runtime");
-    return true;
-}
-
-static ioSuppDT ioDispatch;
-static jboolean nLoadIOSO(JNIEnv *_env, jobject _this) {
-    void* handleIO = NULL;
-    handleIO = dlopen("libRSSupportIO.so", RTLD_LAZY | RTLD_LOCAL);
-    if (handleIO == NULL) {
-        LOG_ERR("Couldn't load libRSSupportIO.so, librsjni version: %d", RS_JNI_VERSION);
-        return false;
-    }
-    if (loadIOSuppSyms(handleIO, ioDispatch) == false) {
-        LOG_ERR("libRSSupportIO init failed! librsjni version: %d", RS_JNI_VERSION);
-        return false;
-    }
-    return true;
-}
-
-// ---------------------------------------------------------------------------
-
-static void copyWithPadding(void* ptr, void* srcPtr, int mSize, int count) {
-    int sizeBytesPad = mSize * 4;
-    int sizeBytes = mSize * 3;
-    uint8_t *dst = static_cast<uint8_t *>(ptr);
-    uint8_t *src = static_cast<uint8_t *>(srcPtr);
-    for (int i = 0; i < count; i++) {
-        memcpy(dst, src, sizeBytes);
-        dst += sizeBytesPad;
-        src += sizeBytes;
-    }
-}
-
-static void copyWithUnPadding(void* ptr, void* srcPtr, int mSize, int count) {
-    int sizeBytesPad = mSize * 4;
-    int sizeBytes = mSize * 3;
-    uint8_t *dst = static_cast<uint8_t *>(ptr);
-    uint8_t *src = static_cast<uint8_t *>(srcPtr);
-    for (int i = 0; i < count; i++) {
-        memcpy(dst, src, sizeBytes);
-        dst += sizeBytes;
-        src += sizeBytesPad;
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-
-static void
-nContextFinish(JNIEnv *_env, jobject _this, jlong con)
-{
-    LOG_API("nContextFinish, con(%p)", (RsContext)con);
-    dispatchTab.ContextFinish((RsContext)con);
-}
-
-static jlong
-nClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong kernelID,
-               jlong returnValue, jlongArray fieldIDArray,
-               jlongArray valueArray, jintArray sizeArray,
-               jlongArray depClosureArray, jlongArray depFieldIDArray) {
-  jlong ret = 0;
-
-  jlong* jFieldIDs = _env->GetLongArrayElements(fieldIDArray, nullptr);
-  jsize fieldIDs_length = _env->GetArrayLength(fieldIDArray);
-  jlong* jValues = _env->GetLongArrayElements(valueArray, nullptr);
-  jsize values_length = _env->GetArrayLength(valueArray);
-  jint* jSizes = _env->GetIntArrayElements(sizeArray, nullptr);
-  jsize sizes_length = _env->GetArrayLength(sizeArray);
-  jlong* jDepClosures =
-      _env->GetLongArrayElements(depClosureArray, nullptr);
-  jsize depClosures_length = _env->GetArrayLength(depClosureArray);
-  jlong* jDepFieldIDs =
-      _env->GetLongArrayElements(depFieldIDArray, nullptr);
-  jsize depFieldIDs_length = _env->GetArrayLength(depFieldIDArray);
-
-  size_t numValues, numDependencies;
-  RsScriptFieldID* fieldIDs;
-  RsClosure* depClosures;
-  RsScriptFieldID* depFieldIDs;
-
-  if (fieldIDs_length != values_length || values_length != sizes_length) {
-      LOG_ERR("Unmatched field IDs, values, and sizes in closure creation.");
-      goto exit;
-  }
-
-  numValues = (size_t)fieldIDs_length;
-
-  if (depClosures_length != depFieldIDs_length) {
-      LOG_ERR("Unmatched closures and field IDs for dependencies in closure creation.");
-      goto exit;
-  }
-
-  numDependencies = (size_t)depClosures_length;
-
-  if (numDependencies > numValues) {
-      LOG_ERR("Unexpected number of dependencies in closure creation");
-      goto exit;
-  }
-
-  if (numValues > RS_CLOSURE_MAX_NUMBER_ARGS_AND_BINDINGS) {
-      LOG_ERR("Too many arguments or globals in closure creation");
-      goto exit;
-  }
-
-  if (numValues > 0) {
-      fieldIDs = (RsScriptFieldID*)alloca(sizeof(RsScriptFieldID) * numValues);
-      if (fieldIDs == nullptr) {
-          goto exit;
-      }
-  } else {
-      // numValues == 0
-      // alloca(0) implementation is platform dependent
-      fieldIDs = nullptr;
-  }
-
-  for (size_t i = 0; i < numValues; i++) {
-    fieldIDs[i] = (RsScriptFieldID)jFieldIDs[i];
-  }
-
-  if (numDependencies > 0) {
-      depClosures = (RsClosure*)alloca(sizeof(RsClosure) * numDependencies);
-      if (depClosures == nullptr) {
-          goto exit;
-      }
-
-      for (size_t i = 0; i < numDependencies; i++) {
-          depClosures[i] = (RsClosure)jDepClosures[i];
-      }
-
-      depFieldIDs = (RsScriptFieldID*)alloca(sizeof(RsScriptFieldID) * numDependencies);
-      if (depFieldIDs == nullptr) {
-          goto exit;
-      }
-
-      for (size_t i = 0; i < numDependencies; i++) {
-          depFieldIDs[i] = (RsClosure)jDepFieldIDs[i];
-      }
-  } else {
-      // numDependencies == 0
-      // alloca(0) implementation is platform dependent
-      depClosures = nullptr;
-      depFieldIDs = nullptr;
-  }
-
-  ret = (jlong)(uintptr_t)dispatchTab.ClosureCreate(
-      (RsContext)con, (RsScriptKernelID)kernelID, (RsAllocation)returnValue,
-      fieldIDs, numValues, jValues, numValues,
-      (int*)jSizes, numValues,
-      depClosures, numDependencies,
-      depFieldIDs, numDependencies);
-
-exit:
-
-  _env->ReleaseLongArrayElements(depFieldIDArray, jDepFieldIDs, JNI_ABORT);
-  _env->ReleaseLongArrayElements(depClosureArray, jDepClosures, JNI_ABORT);
-  _env->ReleaseIntArrayElements (sizeArray,       jSizes,       JNI_ABORT);
-  _env->ReleaseLongArrayElements(valueArray,      jValues,      JNI_ABORT);
-  _env->ReleaseLongArrayElements(fieldIDArray,    jFieldIDs,    JNI_ABORT);
-
-  return ret;
-}
-
-static jlong
-nInvokeClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong invokeID,
-                     jbyteArray paramArray, jlongArray fieldIDArray, jlongArray valueArray,
-                     jintArray sizeArray) {
-  jlong ret = 0;
-
-  jbyte* jParams = _env->GetByteArrayElements(paramArray, nullptr);
-  jsize jParamLength = _env->GetArrayLength(paramArray);
-  jlong* jFieldIDs = _env->GetLongArrayElements(fieldIDArray, nullptr);
-  jsize fieldIDs_length = _env->GetArrayLength(fieldIDArray);
-  jlong* jValues = _env->GetLongArrayElements(valueArray, nullptr);
-  jsize values_length = _env->GetArrayLength(valueArray);
-  jint* jSizes = _env->GetIntArrayElements(sizeArray, nullptr);
-  jsize sizes_length = _env->GetArrayLength(sizeArray);
-
-  size_t numValues;
-  RsScriptFieldID* fieldIDs;
-
-  if (fieldIDs_length != values_length || values_length != sizes_length) {
-      LOG_ERR("Unmatched field IDs, values, and sizes in closure creation.");
-      goto exit;
-  }
-
-  numValues = (size_t) fieldIDs_length;
-
-  if (numValues > RS_CLOSURE_MAX_NUMBER_ARGS_AND_BINDINGS) {
-      LOG_ERR("Too many arguments or globals in closure creation");
-      goto exit;
-  }
-
-  fieldIDs = (RsScriptFieldID*)alloca(sizeof(RsScriptFieldID) * numValues);
-  if (fieldIDs == nullptr) {
-      goto exit;
-  }
-
-  for (size_t i = 0; i < numValues; i++) {
-    fieldIDs[i] = (RsScriptFieldID)jFieldIDs[i];
-  }
-
-  ret = (jlong)(uintptr_t)dispatchTab.InvokeClosureCreate(
-      (RsContext)con, (RsScriptInvokeID)invokeID, jParams, jParamLength,
-      fieldIDs, numValues, jValues, numValues,
-      (int*)jSizes, numValues);
-
-exit:
-
-  _env->ReleaseIntArrayElements (sizeArray,       jSizes,       JNI_ABORT);
-  _env->ReleaseLongArrayElements(valueArray,      jValues,      JNI_ABORT);
-  _env->ReleaseLongArrayElements(fieldIDArray,    jFieldIDs,    JNI_ABORT);
-  _env->ReleaseByteArrayElements(paramArray,      jParams,      JNI_ABORT);
-
-  return ret;
-}
-
-static void
-nClosureSetArg(JNIEnv *_env, jobject _this, jlong con, jlong closureID,
-               jint index, jlong value, jint size) {
-  // Size is signed with -1 indicating the values is an Allocation
-  dispatchTab.ClosureSetArg((RsContext)con, (RsClosure)closureID, (uint32_t)index,
-                  (uintptr_t)value, size);
-}
-
-static void
-nClosureSetGlobal(JNIEnv *_env, jobject _this, jlong con, jlong closureID,
-                  jlong fieldID, jlong value, jint size) {
-  // Size is signed with -1 indicating the values is an Allocation
-  dispatchTab.ClosureSetGlobal((RsContext)con, (RsClosure)closureID,
-                     (RsScriptFieldID)fieldID, (int64_t)value, size);
-}
-
-static long
-nScriptGroup2Create(JNIEnv *_env, jobject _this, jlong con, jstring name,
-                    jstring cacheDir, jlongArray closureArray) {
-  jlong ret = 0;
-
-  AutoJavaStringToUTF8 nameUTF(_env, name);
-  AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir);
-
-  jlong* jClosures = _env->GetLongArrayElements(closureArray, nullptr);
-  jsize numClosures = _env->GetArrayLength(closureArray);
-
-  RsClosure* closures;
-
-  if (numClosures > (jsize) RS_SCRIPT_GROUP_MAX_NUMBER_CLOSURES) {
-    LOG_ERR("Too many closures in script group");
-    goto exit;
-  }
-
-  closures = (RsClosure*)alloca(sizeof(RsClosure) * numClosures);
-  if (closures == nullptr) {
-      goto exit;
-  }
-
-  for (int i = 0; i < numClosures; i++) {
-    closures[i] = (RsClosure)jClosures[i];
-  }
-
-  ret = (jlong)(uintptr_t)dispatchTab.ScriptGroup2Create(
-      (RsContext)con, nameUTF.c_str(), nameUTF.length(),
-      cacheDirUTF.c_str(), cacheDirUTF.length(),
-      closures, numClosures);
-
-exit:
-
-  _env->ReleaseLongArrayElements(closureArray, jClosures, JNI_ABORT);
-
-  return ret;
-}
-
-static void
-nScriptGroup2Execute(JNIEnv *_env, jobject _this, jlong con, jlong groupID) {
-  dispatchTab.ScriptGroupExecute((RsContext)con, (RsScriptGroup2)groupID);
-}
-
-static void
-nObjDestroy(JNIEnv *_env, jobject _this, jlong con, jlong obj)
-{
-    LOG_API("nObjDestroy, con(%p) obj(%p)", (RsContext)con, (void *)obj);
-    dispatchTab.ObjDestroy((RsContext)con, (void *)obj);
-}
-
-
-static void
-nScriptIntrinsicBLAS_Single(JNIEnv *_env, jobject _this, jlong con, jlong incCon, jlong id, jint func, jint TransA,
-                            jint TransB, jint Side, jint Uplo, jint Diag, jint M, jint N, jint K,
-                            jfloat alpha, jlong A, jlong B, jfloat beta, jlong C, jint incX, jint incY,
-                            jint KL, jint KU, jboolean mUseInc) {
-    RsBlasCall call;
-    memset(&call, 0, sizeof(call));
-    call.func = (RsBlasFunction)func;
-    call.transA = (RsBlasTranspose)TransA;
-    call.transB = (RsBlasTranspose)TransB;
-    call.side = (RsBlasSide)Side;
-    call.uplo = (RsBlasUplo)Uplo;
-    call.diag = (RsBlasDiag)Diag;
-    call.M = M;
-    call.N = N;
-    call.K = K;
-    call.alpha.f = alpha;
-    call.beta.f = beta;
-    call.incX = incX;
-    call.incY = incY;
-    call.KL = KL;
-    call.KU = KU;
-
-    RsAllocation in_allocs[3];
-    in_allocs[0] = (RsAllocation)A;
-    in_allocs[1] = (RsAllocation)B;
-    in_allocs[2] = (RsAllocation)C;
-
-    if (mUseInc) {
-        dispatchTab.ContextFinish((RsContext)con);
-        dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, NELEM(in_allocs), nullptr,
-                                          &call, sizeof(call), nullptr, 0);
-    } else {
-        dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                       in_allocs, NELEM(in_allocs), nullptr,
-                                       &call, sizeof(call), nullptr, 0);
-    }
-}
-
-static void
-nScriptIntrinsicBLAS_Double(JNIEnv *_env, jobject _this, jlong con, jlong incCon, jlong id, jint func, jint TransA,
-                            jint TransB, jint Side, jint Uplo, jint Diag, jint M, jint N, jint K,
-                            jdouble alpha, jlong A, jlong B, jdouble beta, jlong C, jint incX, jint incY,
-                            jint KL, jint KU, jboolean mUseInc) {
-    RsBlasCall call;
-    memset(&call, 0, sizeof(call));
-    call.func = (RsBlasFunction)func;
-    call.transA = (RsBlasTranspose)TransA;
-    call.transB = (RsBlasTranspose)TransB;
-    call.side = (RsBlasSide)Side;
-    call.uplo = (RsBlasUplo)Uplo;
-    call.diag = (RsBlasDiag)Diag;
-    call.M = M;
-    call.N = N;
-    call.K = K;
-    call.alpha.d = alpha;
-    call.beta.d = beta;
-    call.incX = incX;
-    call.incY = incY;
-    call.KL = KL;
-    call.KU = KU;
-
-    RsAllocation in_allocs[3];
-    in_allocs[0] = (RsAllocation)A;
-    in_allocs[1] = (RsAllocation)B;
-    in_allocs[2] = (RsAllocation)C;
-
-    if (mUseInc) {
-        dispatchTab.ContextFinish((RsContext)con);
-        dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, NELEM(in_allocs), nullptr,
-                                          &call, sizeof(call), nullptr, 0);
-    } else {
-        dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                        in_allocs, NELEM(in_allocs), nullptr,
-                                        &call, sizeof(call), nullptr, 0);
-    }
-}
-
-static void
-nScriptIntrinsicBLAS_Complex(JNIEnv *_env, jobject _this, jlong con, jlong incCon, jlong id, jint func, jint TransA,
-                             jint TransB, jint Side, jint Uplo, jint Diag, jint M, jint N, jint K,
-                             jfloat alphaX, jfloat alphaY, jlong A, jlong B, jfloat betaX,
-                             jfloat betaY, jlong C, jint incX, jint incY, jint KL, jint KU, jboolean mUseInc) {
-    RsBlasCall call;
-    memset(&call, 0, sizeof(call));
-    call.func = (RsBlasFunction)func;
-    call.transA = (RsBlasTranspose)TransA;
-    call.transB = (RsBlasTranspose)TransB;
-    call.side = (RsBlasSide)Side;
-    call.uplo = (RsBlasUplo)Uplo;
-    call.diag = (RsBlasDiag)Diag;
-    call.M = M;
-    call.N = N;
-    call.K = K;
-    call.alpha.c.r = alphaX;
-    call.alpha.c.i = alphaY;
-    call.beta.c.r = betaX;
-    call.beta.c.i = betaY;
-    call.incX = incX;
-    call.incY = incY;
-    call.KL = KL;
-    call.KU = KU;
-
-    RsAllocation in_allocs[3];
-    in_allocs[0] = (RsAllocation)A;
-    in_allocs[1] = (RsAllocation)B;
-    in_allocs[2] = (RsAllocation)C;
-
-
-    if (mUseInc) {
-        dispatchTab.ContextFinish((RsContext)con);
-        dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, NELEM(in_allocs), nullptr,
-                                          &call, sizeof(call), nullptr, 0);
-    } else {
-        dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                       in_allocs, NELEM(in_allocs), nullptr,
-                                       &call, sizeof(call), nullptr, 0);
-    }
-}
-
-static void
-nScriptIntrinsicBLAS_Z(JNIEnv *_env, jobject _this, jlong con, jlong incCon, jlong id, jint func, jint TransA,
-                       jint TransB, jint Side, jint Uplo, jint Diag, jint M, jint N, jint K,
-                       jdouble alphaX, jdouble alphaY, jlong A, jlong B, jdouble betaX,
-                       jdouble betaY, jlong C, jint incX, jint incY, jint KL, jint KU, jboolean mUseInc) {
-    RsBlasCall call;
-    memset(&call, 0, sizeof(call));
-    call.func = (RsBlasFunction)func;
-    call.transA = (RsBlasTranspose)TransA;
-    call.transB = (RsBlasTranspose)TransB;
-    call.side = (RsBlasSide)Side;
-    call.uplo = (RsBlasUplo)Uplo;
-    call.diag = (RsBlasDiag)Diag;
-    call.M = M;
-    call.N = N;
-    call.K = K;
-    call.alpha.z.r = alphaX;
-    call.alpha.z.i = alphaY;
-    call.beta.z.r = betaX;
-    call.beta.z.i = betaY;
-    call.incX = incX;
-    call.incY = incY;
-    call.KL = KL;
-    call.KU = KU;
-
-    RsAllocation in_allocs[3];
-    in_allocs[0] = (RsAllocation)A;
-    in_allocs[1] = (RsAllocation)B;
-    in_allocs[2] = (RsAllocation)C;
-
-
-    if (mUseInc) {
-        dispatchTab.ContextFinish((RsContext)con);
-        dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, NELEM(in_allocs), nullptr,
-                                          &call, sizeof(call), nullptr, 0);
-    } else {
-        dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                        in_allocs, NELEM(in_allocs), nullptr,
-                                        &call, sizeof(call), nullptr, 0);
-    }
-}
-
-
-static void
-nScriptIntrinsicBLAS_BNNM(JNIEnv *_env, jobject _this, jlong con, jlong incCon, jlong id, jint M, jint N, jint K,
-                          jlong A, jint a_offset, jlong B, jint b_offset, jlong C, jint c_offset,
-                          jint c_mult_int, jboolean mUseInc) {
-    RsBlasCall call;
-    memset(&call, 0, sizeof(call));
-    call.func = RsBlas_bnnm;
-    call.M = M;
-    call.N = N;
-    call.K = K;
-    call.a_offset = a_offset & 0xFF;
-    call.b_offset = b_offset & 0xFF;
-    call.c_offset = c_offset;
-    call.c_mult_int = c_mult_int;
-
-    RsAllocation in_allocs[3];
-    in_allocs[0] = (RsAllocation)A;
-    in_allocs[1] = (RsAllocation)B;
-    in_allocs[2] = (RsAllocation)C;
-
-    if (mUseInc) {
-        dispatchTab.ContextFinish((RsContext)con);
-        dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, NELEM(in_allocs), nullptr,
-                                          &call, sizeof(call), nullptr, 0);
-    } else {
-        dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                        in_allocs, NELEM(in_allocs), nullptr,
-                                        &call, sizeof(call), nullptr, 0);
-    }
-}
-// ---------------------------------------------------------------------------
-static jlong
-nDeviceCreate(JNIEnv *_env, jobject _this)
-{
-    LOG_API("nDeviceCreate");
-    return (jlong)(uintptr_t)dispatchTab.DeviceCreate();
-}
-
-static void
-nDeviceDestroy(JNIEnv *_env, jobject _this, jlong dev)
-{
-    LOG_API("nDeviceDestroy");
-    return dispatchTab.DeviceDestroy((RsDevice)dev);
-}
-
-static void
-nDeviceSetConfig(JNIEnv *_env, jobject _this, jlong dev, jint p, jint value)
-{
-    LOG_API("nDeviceSetConfig  dev(%p), param(%i), value(%i)", (void *)dev, p, value);
-    return dispatchTab.DeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value);
-}
-
-static jlong
-nContextCreate(JNIEnv *_env, jobject _this, jlong dev, jint ver, jint sdkVer,
-               jint ct, jstring nativeLibDirJava)
-{
-    LOG_API("nContextCreate");
-    // Access the NativeLibDir in the Java Context.
-    const char * nativeLibDir = _env->GetStringUTFChars(nativeLibDirJava, JNI_FALSE);
-    size_t length = (size_t)_env->GetStringUTFLength(nativeLibDirJava);
-
-    jlong id = (jlong)(uintptr_t)dispatchTab.ContextCreate((RsDevice)dev, ver,
-                                                           sdkVer,
-                                                           (RsContextType)ct, 0);
-    if (dispatchTab.SetNativeLibDir) {
-        dispatchTab.SetNativeLibDir((RsContext)id, nativeLibDir, length);
-    }
-
-    _env->ReleaseStringUTFChars(nativeLibDirJava, nativeLibDir);
-    return id;
-}
-
-
-static void
-nContextSetPriority(JNIEnv *_env, jobject _this, jlong con, jint p)
-{
-    LOG_API("ContextSetPriority, con(%p), priority(%i)", (RsContext)con, p);
-    dispatchTab.ContextSetPriority((RsContext)con, p);
-}
-
-
-
-static void
-nContextDestroy(JNIEnv *_env, jobject _this, jlong con)
-{
-    LOG_API("nContextDestroy, con(%p)", (RsContext)con);
-    dispatchTab.ContextDestroy((RsContext)con);
-}
-
-static void
-nContextDump(JNIEnv *_env, jobject _this, jlong con, jint bits)
-{
-    LOG_API("nContextDump, con(%p)  bits(%i)", (RsContext)con, bits);
-    dispatchTab.ContextDump((RsContext)con, bits);
-}
-
-
-static jstring
-nContextGetErrorMessage(JNIEnv *_env, jobject _this, jlong con)
-{
-    LOG_API("nContextGetErrorMessage, con(%p)", (RsContext)con);
-    char buf[1024];
-
-    size_t receiveLen;
-    uint32_t subID;
-    int id = dispatchTab.ContextGetMessage((RsContext)con,
-                                           buf, sizeof(buf),
-                                           &receiveLen, sizeof(receiveLen),
-                                           &subID, sizeof(subID));
-    if (!id && receiveLen) {
-        //        __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG,
-        //            "message receive buffer too small.  %zu", receiveLen);
-    }
-    return _env->NewStringUTF(buf);
-}
-
-static jint
-nContextGetUserMessage(JNIEnv *_env, jobject _this, jlong con, jintArray data)
-{
-    jint len = _env->GetArrayLength(data);
-    LOG_API("nContextGetMessage, con(%p), len(%i)", (RsContext)con, len);
-    jint *ptr = _env->GetIntArrayElements(data, NULL);
-    size_t receiveLen;
-    uint32_t subID;
-    int id = dispatchTab.ContextGetMessage((RsContext)con,
-                                           ptr, len * 4,
-                                           &receiveLen, sizeof(receiveLen),
-                                           &subID, sizeof(subID));
-    if (!id && receiveLen) {
-        //        __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG,
-        //            "message receive buffer too small.  %zu", receiveLen);
-    }
-    _env->ReleaseIntArrayElements(data, ptr, 0);
-    return (jint)id;
-}
-
-static jint
-nContextPeekMessage(JNIEnv *_env, jobject _this, jlong con, jintArray auxData)
-{
-    LOG_API("nContextPeekMessage, con(%p)", (RsContext)con);
-    jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL);
-    size_t receiveLen;
-    uint32_t subID;
-    int id = dispatchTab.ContextPeekMessage((RsContext)con, &receiveLen, sizeof(receiveLen),
-                                  &subID, sizeof(subID));
-    auxDataPtr[0] = (jint)subID;
-    auxDataPtr[1] = (jint)receiveLen;
-    _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0);
-    return (jint)id;
-}
-
-static void nContextInitToClient(JNIEnv *_env, jobject _this, jlong con)
-{
-    LOG_API("nContextInitToClient, con(%p)", (RsContext)con);
-    dispatchTab.ContextInitToClient((RsContext)con);
-}
-
-static void nContextDeinitToClient(JNIEnv *_env, jobject _this, jlong con)
-{
-    LOG_API("nContextDeinitToClient, con(%p)", (RsContext)con);
-    dispatchTab.ContextDeinitToClient((RsContext)con);
-}
-
-static void
-nContextSendMessage(JNIEnv *_env, jobject _this, jlong con, jint id, jintArray data)
-{
-    jint *ptr = NULL;
-    jint len = 0;
-    if (data) {
-        len = _env->GetArrayLength(data);
-        ptr = _env->GetIntArrayElements(data, NULL);
-    }
-    LOG_API("nContextSendMessage, con(%p), id(%i), len(%i)", (RsContext)con, id, len);
-    dispatchTab.ContextSendMessage((RsContext)con, id, (const uint8_t *)ptr, len * sizeof(int));
-    if (data) {
-        _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT);
-    }
-}
-
-
-
-static jlong
-nElementCreate(JNIEnv *_env, jobject _this, jlong con, jlong type, jint kind,
-               jboolean norm, jint size)
-{
-    LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", (RsContext)con,
-            type, kind, norm, size);
-    return (jlong)(uintptr_t)dispatchTab.ElementCreate((RsContext)con,
-                                                       (RsDataType)type,
-                                                       (RsDataKind)kind,
-                                                       norm, size);
-}
-
-static jlong
-nElementCreate2(JNIEnv *_env, jobject _this, jlong con,
-                jlongArray _ids, jobjectArray _names, jintArray _arraySizes)
-{
-    int fieldCount = _env->GetArrayLength(_ids);
-    LOG_API("nElementCreate2, con(%p)", (RsContext)con);
-
-    jlong *jIds = _env->GetLongArrayElements(_ids, NULL);
-    jint *jArraySizes = _env->GetIntArrayElements(_arraySizes, NULL);
-
-    RsElement *ids = (RsElement*)malloc(fieldCount * sizeof(RsElement));
-    uint32_t *arraySizes = (uint32_t *)malloc(fieldCount * sizeof(uint32_t));
-
-    for(int i = 0; i < fieldCount; i ++) {
-        ids[i] = (RsElement)jIds[i];
-        arraySizes[i] = (uint32_t)jArraySizes[i];
-    }
-
-    AutoJavaStringArrayToUTF8 names(_env, _names, fieldCount);
-
-    const char **nameArray = names.c_str();
-    size_t *sizeArray = names.c_str_len();
-
-    jlong id = (jlong)(uintptr_t)dispatchTab.ElementCreate2((RsContext)con, (RsElement *)ids,
-                                                            fieldCount, nameArray,
-                                                            fieldCount * sizeof(size_t),  sizeArray,
-                                                            (const uint32_t *)arraySizes, fieldCount);
-
-    free(ids);
-    free(arraySizes);
-    _env->ReleaseLongArrayElements(_ids, jIds, JNI_ABORT);
-    _env->ReleaseIntArrayElements(_arraySizes, jArraySizes, JNI_ABORT);
-    return id;
-}
-
-
-
-
-static void
-nElementGetSubElements(JNIEnv *_env, jobject _this, jlong con, jlong id,
-                       jlongArray _IDs,
-                       jobjectArray _names,
-                       jintArray _arraySizes)
-{
-    uint32_t dataSize = _env->GetArrayLength(_IDs);
-    LOG_API("nElementGetSubElements, con(%p)", (RsContext)con);
-
-    uintptr_t *ids = (uintptr_t *)malloc(dataSize * sizeof(uintptr_t));
-    const char **names = (const char **)malloc((uint32_t)dataSize * sizeof(const char *));
-    uint32_t *arraySizes = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t));
-
-    dispatchTab.ElementGetSubElements((RsContext)con, (RsElement)id, ids, names, arraySizes,
-                                      (uint32_t)dataSize);
-
-    for(uint32_t i = 0; i < dataSize; i++) {
-        const jlong id = (jlong)(uintptr_t)ids[i];
-        const jint arraySize = (jint)arraySizes[i];
-        _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i]));
-        _env->SetLongArrayRegion(_IDs, i, 1, &id);
-        _env->SetIntArrayRegion(_arraySizes, i, 1, &arraySize);
-    }
-
-    free(ids);
-    free(names);
-    free(arraySizes);
-}
-
-// -----------------------------------
-
-static jlong
-nTypeCreate(JNIEnv *_env, jobject _this, jlong con, jlong eid,
-            jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces, jint yuv)
-{
-    LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i), yuv(%i)",
-            (RsContext)con, eid, dimx, dimy, dimz, mips, faces, yuv);
-
-    return (jlong)(uintptr_t)dispatchTab.TypeCreate((RsContext)con, (RsElement)eid, dimx, dimy,
-                                                    dimz, mips, faces, yuv);
-}
-
-// -----------------------------------
-
-static jlong
-nAllocationCreateTyped(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mips, jint usage,
-                       jlong pointer)
-{
-    LOG_API("nAllocationCreateTyped, con(%p), type(%p), mip(%i), usage(%i), ptr(%p)",
-            (RsContext)con, (RsElement)type, mips, usage, (void *)pointer);
-    return (jlong)(uintptr_t) dispatchTab.AllocationCreateTyped((RsContext)con, (RsType)type,
-                                                                (RsAllocationMipmapControl)mips,
-                                                                (uint32_t)usage, (uintptr_t)pointer);
-}
-
-static void
-nAllocationSyncAll(JNIEnv *_env, jobject _this, jlong con, jlong a, jint bits)
-{
-    LOG_API("nAllocationSyncAll, con(%p), a(%p), bits(0x%08x)", (RsContext)con, (RsAllocation)a, bits);
-    dispatchTab.AllocationSyncAll((RsContext)con, (RsAllocation)a, (RsAllocationUsageType)bits);
-}
-
-static void
-nAllocationSetSurface(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobject sur)
-{
-    ioDispatch.sAllocationSetSurface(_env, _this, (RsContext)con, (RsAllocation)alloc, sur, dispatchTab);
-}
-
-static void
-nAllocationIoSend(JNIEnv *_env, jobject _this, jlong con, jlong alloc)
-{
-    dispatchTab.AllocationIoSend((RsContext)con, (RsAllocation)alloc);
-}
-
-static void
-nAllocationGenerateMipmaps(JNIEnv *_env, jobject _this, jlong con, jlong alloc)
-{
-    LOG_API("nAllocationGenerateMipmaps, con(%p), a(%p)", (RsContext)con, (RsAllocation)alloc);
-    dispatchTab.AllocationGenerateMipmaps((RsContext)con, (RsAllocation)alloc);
-}
-
-static size_t GetBitmapSize(JNIEnv *env, jobject jbitmap) {
-    AndroidBitmapInfo info;
-    memset(&info, 0, sizeof(info));
-    AndroidBitmap_getInfo(env, jbitmap, &info);
-    size_t s = info.width * info.height;
-    switch (info.format) {
-        case ANDROID_BITMAP_FORMAT_RGBA_8888: s *= 4; break;
-        case ANDROID_BITMAP_FORMAT_RGB_565: s *= 2; break;
-        case ANDROID_BITMAP_FORMAT_RGBA_4444: s *= 2; break;
-    }
-    return s;
-}
-
-static jlong
-nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mip,
-                            jobject jbitmap, jint usage)
-{
-    jlong id = 0;
-    void *pixels = NULL;
-    AndroidBitmap_lockPixels(_env, jbitmap, &pixels);
-
-    if (pixels != NULL) {
-        id = (jlong)(uintptr_t)dispatchTab.AllocationCreateFromBitmap((RsContext)con,
-                                                                      (RsType)type,
-                                                                      (RsAllocationMipmapControl)mip,
-                                                                      pixels,
-                                                                      GetBitmapSize(_env, jbitmap),
-                                                                      usage);
-        AndroidBitmap_unlockPixels(_env, jbitmap);
-    }
-    return id;
-}
-
-static jlong
-nAllocationCreateBitmapBackedAllocation(JNIEnv *_env, jobject _this, jlong con, jlong type,
-                                        jint mip, jobject jbitmap, jint usage)
-{
-    jlong id = 0;
-    void *pixels = NULL;
-    AndroidBitmap_lockPixels(_env, jbitmap, &pixels);
-
-    if (pixels != NULL) {
-        id = (jlong)(uintptr_t)dispatchTab.AllocationCreateTyped((RsContext)con,
-                                                                 (RsType)type,
-                                                                 (RsAllocationMipmapControl)mip,
-                                                                 (uint32_t)usage,
-                                                                 (uintptr_t)pixels);
-        AndroidBitmap_unlockPixels(_env, jbitmap);
-    }
-    return id;
-}
-
-static jlong
-nAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong type,
-                                jint mip, jobject jbitmap, jint usage)
-{
-    void *pixels = NULL;
-    AndroidBitmap_lockPixels(_env, jbitmap, &pixels);
-
-    jlong id = 0;
-    if (pixels != NULL) {
-        id = (jlong)(uintptr_t)dispatchTab.AllocationCubeCreateFromBitmap((RsContext)con,
-                                                                          (RsType)type,
-                                                                          (RsAllocationMipmapControl)mip,
-                                                                          pixels,
-                                                                          GetBitmapSize(_env, jbitmap),
-                                                                          usage);
-        AndroidBitmap_unlockPixels(_env, jbitmap);
-    }
-    return id;
-}
-
-static void
-nAllocationCopyFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobject jbitmap)
-{
-    AndroidBitmapInfo info;
-    memset(&info, 0, sizeof(info));
-    AndroidBitmap_getInfo(_env, jbitmap, &info);
-
-    void *pixels = NULL;
-    AndroidBitmap_lockPixels(_env, jbitmap, &pixels);
-
-    if (pixels != NULL) {
-        dispatchTab.Allocation2DData((RsContext)con, (RsAllocation)alloc, 0, 0, 0,
-                                     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, info.width,
-                                     info.height, pixels, GetBitmapSize(_env, jbitmap), 0);
-        AndroidBitmap_unlockPixels(_env, jbitmap);
-    }
-}
-
-static void
-nAllocationCopyToBitmap(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobject jbitmap)
-{
-    AndroidBitmapInfo info;
-    memset(&info, 0, sizeof(info));
-    AndroidBitmap_getInfo(_env, jbitmap, &info);
-
-    void *pixels = NULL;
-    AndroidBitmap_lockPixels(_env, jbitmap, &pixels);
-
-    if (pixels != NULL) {
-        dispatchTab.AllocationCopyToBitmap((RsContext)con, (RsAllocation)alloc, pixels,
-                                           GetBitmapSize(_env, jbitmap));
-        AndroidBitmap_unlockPixels(_env, jbitmap);
-    }
-    //bitmap.notifyPixelsChanged();
-}
-
-// Copies from the Java object data into the Allocation pointed to by _alloc.
-static void
-nAllocationData1D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint offset, jint lod,
-                  jint count, jobject data, jint sizeBytes, jint dataType, jint mSize,
-                  jboolean usePadding)
-{
-    RsAllocation *alloc = (RsAllocation *)_alloc;
-    LOG_API("nAllocation1DData, con(%p), adapter(%p), offset(%i), count(%i), sizeBytes(%i), "
-            "dataType(%i)", (RsContext)con, (RsAllocation)alloc, offset, count, sizeBytes,
-            dataType);
-    PER_ARRAY_TYPE(nullptr, dispatchTab.Allocation1DData, true,
-                   (RsContext)con, alloc, offset, lod, count, ptr, sizeBytes);
-}
-
-
-static void
-nAllocationElementData1D(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jint xoff,
-                         jint lod, jint compIdx, jbyteArray data, jint sizeBytes)
-{
-    LOG_API("nAllocationElementData1D, con(%p), alloc(%p), xoff(%i), comp(%i), len(%i), "
-            "sizeBytes(%i)", (RsContext)con, (RsAllocation)alloc, xoff, compIdx,
-            _env->GetArrayLength(data),
-            sizeBytes);
-    jbyte *ptr = _env->GetByteArrayElements(data, nullptr);
-    dispatchTab.Allocation1DElementData((RsContext)con, (RsAllocation)alloc, xoff,
-                                        lod, ptr, sizeBytes, compIdx);
-    _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-}
-
-/*
-static void
-nAllocationElementData(JNIEnv *_env, jobject _this, jlong con, jlong alloc,
-                       jint xoff, jint yoff, jint zoff,
-                       jint lod, jint compIdx, jbyteArray data, jint sizeBytes)
-{
-    jint len = _env->GetArrayLength(data);
-    LOG_API("nAllocationElementData, con(%p), alloc(%p), xoff(%i), yoff(%i), zoff(%i), comp(%i), len(%i), "
-            "sizeBytes(%i)", (RsContext)con, (RsAllocation)alloc, xoff, yoff, zoff, compIdx, len,
-            sizeBytes);
-    jbyte *ptr = _env->GetByteArrayElements(data, nullptr);
-    dispatchTab.AllocationElementData((RsContext)con, (RsAllocation)alloc,
-                                      xoff, yoff, zoff,
-                                      lod, ptr, sizeBytes, compIdx);
-    _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-}
-*/
-
-// Copies from the Java object data into the Allocation pointed to by _alloc.
-static void
-nAllocationData2D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint lod, jint _face,
-                  jint w, jint h, jobject data, jint sizeBytes, jint dataType, jint mSize,
-                  jboolean usePadding)
-{
-    RsAllocation *alloc = (RsAllocation *)_alloc;
-    RsAllocationCubemapFace face = (RsAllocationCubemapFace)_face;
-    LOG_API("nAllocation2DData, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i) "
-            "type(%i)", (RsContext)con, alloc, xoff, yoff, w, h, sizeBytes, dataType);
-    int count = w * h;
-    PER_ARRAY_TYPE(nullptr, dispatchTab.Allocation2DData, true,
-                   (RsContext)con, alloc, xoff, yoff, lod, face, w, h, ptr, sizeBytes, 0);
-}
-
-static void
-nAllocationData2D_alloc(JNIEnv *_env, jobject _this, jlong con,
-                        jlong dstAlloc, jint dstXoff, jint dstYoff,
-                        jint dstMip, jint dstFace,
-                        jint width, jint height,
-                        jlong srcAlloc, jint srcXoff, jint srcYoff,
-                        jint srcMip, jint srcFace)
-{
-    LOG_API("nAllocation2DData_s, con(%p), dstAlloc(%p), dstXoff(%i), dstYoff(%i),"
-            " dstMip(%i), dstFace(%i), width(%i), height(%i),"
-            " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i), srcFace(%i)",
-            (RsContext)con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, dstFace,
-            width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip, srcFace);
-
-    dispatchTab.AllocationCopy2DRange((RsContext)con,
-                                      (RsAllocation)dstAlloc,
-                                      dstXoff, dstYoff,
-                                      dstMip, dstFace,
-                                      width, height,
-                                      (RsAllocation)srcAlloc,
-                                      srcXoff, srcYoff,
-                                      srcMip, srcFace);
-}
-
-// Copies from the Java object data into the Allocation pointed to by _alloc.
-static void
-nAllocationData3D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint zoff, jint lod,
-                  jint w, jint h, jint d, jobject data, jint sizeBytes, jint dataType,
-                  jint mSize, jboolean usePadding)
-{
-    RsAllocation *alloc = (RsAllocation *)_alloc;
-    LOG_API("nAllocation3DData, con(%p), alloc(%p), xoff(%i), yoff(%i), zoff(%i), lod(%i), w(%i),"
-            " h(%i), d(%i), sizeBytes(%i)", (RsContext)con, (RsAllocation)alloc, xoff, yoff, zoff,
-            lod, w, h, d, sizeBytes);
-    int count = w * h * d;
-    PER_ARRAY_TYPE(nullptr, dispatchTab.Allocation3DData, true,
-                   (RsContext)con, alloc, xoff, yoff, zoff, lod, w, h, d, ptr, sizeBytes, 0);
-}
-
-static void
-nAllocationData3D_alloc(JNIEnv *_env, jobject _this, jlong con,
-                        jlong dstAlloc, jint dstXoff, jint dstYoff, jint dstZoff,
-                        jint dstMip,
-                        jint width, jint height, jint depth,
-                        jlong srcAlloc, jint srcXoff, jint srcYoff, jint srcZoff,
-                        jint srcMip)
-{
-    LOG_API("nAllocationData3D_alloc, con(%p), dstAlloc(%p), dstXoff(%i), dstYoff(%i),"
-            " dstMip(%i), width(%i), height(%i),"
-            " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i)",
-            (RsContext)con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, dstFace,
-            width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip, srcFace);
-
-    dispatchTab.AllocationCopy3DRange((RsContext)con,
-                                      (RsAllocation)dstAlloc,
-                                      dstXoff, dstYoff, dstZoff, dstMip,
-                                      width, height, depth,
-                                      (RsAllocation)srcAlloc,
-                                      srcXoff, srcYoff, srcZoff, srcMip);
-}
-
-// Copies from the Allocation pointed to by _alloc into the Java object data.
-static void
-nAllocationRead(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jobject data, jint dataType,
-                jint mSize, jboolean usePadding)
-{
-    RsAllocation *alloc = (RsAllocation *)_alloc;
-    LOG_API("nAllocationRead, con(%p), alloc(%p)", (RsContext)con, (RsAllocation)alloc);
-    int count = 0;
-    PER_ARRAY_TYPE(0, dispatchTab.AllocationRead, false,
-                   (RsContext)con, alloc, ptr, len * typeBytes);
-}
-
-// Copies from the Allocation pointed to by _alloc into the Java object data.
-static void
-nAllocationRead1D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint offset, jint lod,
-                  jint count, jobject data, jint sizeBytes, jint dataType,
-                  jint mSize, jboolean usePadding)
-{
-    RsAllocation *alloc = (RsAllocation *)_alloc;
-    LOG_API("nAllocation1DRead, con(%p), adapter(%p), offset(%i), count(%i), sizeBytes(%i), "
-              "dataType(%i)", (RsContext)con, alloc, offset, count, sizeBytes, dataType);
-    PER_ARRAY_TYPE(0, dispatchTab.Allocation1DRead, false,
-                   (RsContext)con, alloc, offset, lod, count, ptr, sizeBytes);
-}
-
-// Copies from the Element in the Allocation pointed to by _alloc into the Java array data.
-/*
-static void
-nAllocationElementRead(JNIEnv *_env, jobject _this, jlong con, jlong _alloc,
-                       jint xoff, jint yoff, jint zoff,
-                       jint lod, jint compIdx, jobject data, jint sizeBytes)
-{
-    jint len = _env->GetArrayLength(data);
-    LOG_API("nAllocationElementRead, con(%p), alloc(%p), xoff(%i), yoff(%i), zoff(%i), comp(%i), len(%i), "
-            "sizeBytes(%i)", (RsContext)con, (RsAllocation)alloc, xoff, yoff, zoff, compIdx, len,
-            sizeBytes);
-    jbyte *ptr = _env->GetByteArrayElements(data, nullptr);
-    dispatchTab.AllocationElementRead((RsContext)con, (RsAllocation)alloc,
-                                      xoff, yoff, zoff,
-                                      lod, ptr, sizeBytes, compIdx);
-    _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-}
-*/
-
-// Copies from the Allocation pointed to by _alloc into the Java object data.
-static void
-nAllocationRead2D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint lod, jint _face,
-                  jint w, jint h, jobject data, jint sizeBytes, jint dataType,
-                  jint mSize, jboolean usePadding)
-{
-    RsAllocation *alloc = (RsAllocation *)_alloc;
-    RsAllocationCubemapFace face = (RsAllocationCubemapFace)_face;
-    LOG_API("nAllocation2DRead, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i) "
-              "type(%i)", (RsContext)con, alloc, xoff, yoff, w, h, sizeBytes, dataType);
-    int count = w * h;
-    PER_ARRAY_TYPE(0, dispatchTab.Allocation2DRead, false,
-                   (RsContext)con, alloc, xoff, yoff, lod, face, w, h, ptr, sizeBytes, 0);
-}
-
-// Copies from the Allocation pointed to by _alloc into the Java object data.
-/*
-static void
-nAllocationRead3D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint zoff, jint lod,
-                  jint w, jint h, jint d, jobject data, int sizeBytes, int dataType,
-                  jint mSize, jboolean usePadding)
-{
-    RsAllocation *alloc = (RsAllocation *)_alloc;
-    LOG_API("nAllocation3DRead, con(%p), alloc(%p), xoff(%i), yoff(%i), zoff(%i), lod(%i), w(%i),"
-            " h(%i), d(%i), sizeBytes(%i)", (RsContext)con, (RsAllocation)alloc, xoff, yoff, zoff,
-            lod, w, h, d, sizeBytes);
-    int count = w * h * d;
-    PER_ARRAY_TYPE(nullptr, dispatchTab.Allocation3DRead, false,
-                   (RsContext)con, alloc, xoff, yoff, zoff, lod, w, h, d, ptr, sizeBytes, 0);
-}
-*/
-
-static jlong
-nAllocationGetType(JNIEnv *_env, jobject _this, jlong con, jlong a)
-{
-    LOG_API("nAllocationGetType, con(%p), a(%p)", (RsContext)con, (RsAllocation)a);
-    return (jlong)(uintptr_t) dispatchTab.AllocationGetType((RsContext)con, (RsAllocation)a);
-}
-
-static void
-nAllocationResize1D(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jint dimX)
-{
-    LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", (RsContext)con,
-            (RsAllocation)alloc, dimX);
-    dispatchTab.AllocationResize1D((RsContext)con, (RsAllocation)alloc, dimX);
-}
-
-// -----------------------------------
-
-static void
-nScriptBindAllocation(JNIEnv *_env, jobject _this, jlong con, jlong script, jlong alloc, jint slot, jboolean mUseInc)
-{
-    LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)",
-            (RsContext)con, (RsScript)script, (RsAllocation)alloc, slot);
-    if (mUseInc) {
-        dispatchTabInc.ScriptBindAllocation((RsContext)con, (RsScript)script, (RsAllocation)alloc, slot);
-    } else {
-        dispatchTab.ScriptBindAllocation((RsContext)con, (RsScript)script, (RsAllocation)alloc, slot);
-    }
-}
-
-static void
-nScriptSetVarI(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jint val, jboolean mUseInc)
-{
-    LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", (RsContext)con,
-            (void *)script, slot, val);
-    if (mUseInc) {
-        dispatchTabInc.ScriptSetVarI((RsContext)con, (RsScript)script, slot, val);
-    } else {
-        dispatchTab.ScriptSetVarI((RsContext)con, (RsScript)script, slot, val);
-    }
-}
-
-static void
-nScriptSetVarObj(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jlong val, jboolean mUseInc)
-{
-    LOG_API("nScriptSetVarObj, con(%p), s(%p), slot(%i), val(%i)", (RsContext)con,
-            (void *)script, slot, val);
-    if (mUseInc) {
-        dispatchTabInc.ScriptSetVarObj((RsContext)con, (RsScript)script, slot, (RsObjectBase)val);
-    } else {
-        dispatchTab.ScriptSetVarObj((RsContext)con, (RsScript)script, slot, (RsObjectBase)val);
-    }
-}
-
-static void
-nScriptSetVarJ(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jlong val, jboolean mUseInc)
-{
-    LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", (RsContext)con,
-            (void *)script, slot, val);
-    if (mUseInc) {
-        dispatchTabInc.ScriptSetVarJ((RsContext)con, (RsScript)script, slot, val);
-    } else {
-        dispatchTab.ScriptSetVarJ((RsContext)con, (RsScript)script, slot, val);
-    }
-}
-
-static void
-nScriptSetVarF(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, float val, jboolean mUseInc)
-{
-    LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", (RsContext)con,
-            (void *)script, slot, val);
-    if (mUseInc) {
-        dispatchTabInc.ScriptSetVarF((RsContext)con, (RsScript)script, slot, val);
-    } else {
-        dispatchTab.ScriptSetVarF((RsContext)con, (RsScript)script, slot, val);
-    }
-}
-
-static void
-nScriptSetVarD(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, double val, jboolean mUseInc)
-{
-    LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", (RsContext)con,
-            (void *)script, slot, val);
-    if (mUseInc) {
-        dispatchTabInc.ScriptSetVarD((RsContext)con, (RsScript)script, slot, val);
-    } else {
-        dispatchTab.ScriptSetVarD((RsContext)con, (RsScript)script, slot, val);
-    }
-}
-
-static void
-nScriptSetVarV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data, jboolean mUseInc)
-{
-    LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot);
-    jint len = _env->GetArrayLength(data);
-    jbyte *ptr = _env->GetByteArrayElements(data, NULL);
-    if (mUseInc) {
-        dispatchTabInc.ScriptSetVarV((RsContext)con, (RsScript)script, slot, ptr, len);
-    } else {
-        dispatchTab.ScriptSetVarV((RsContext)con, (RsScript)script, slot, ptr, len);
-    }
-    _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-}
-
-static void
-nScriptSetVarVE(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data,
-                jlong elem, jintArray dims, jboolean mUseInc)
-{
-    LOG_API("nScriptSetVarVE, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot);
-    jint len = _env->GetArrayLength(data);
-    jbyte *ptr = _env->GetByteArrayElements(data, NULL);
-    jint dimsLen = _env->GetArrayLength(dims) * sizeof(int);
-    jint *dimsPtr = _env->GetIntArrayElements(dims, NULL);
-    if (mUseInc) {
-        dispatchTabInc.ScriptSetVarVE((RsContext)con, (RsScript)script, slot, ptr, len, (RsElement)elem,
-                                      (const uint32_t *)dimsPtr, dimsLen);
-    } else {
-        dispatchTab.ScriptSetVarVE((RsContext)con, (RsScript)script, slot, ptr, len, (RsElement)elem,
-                                   (const uint32_t *)dimsPtr, dimsLen);
-    }
-    _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-    _env->ReleaseIntArrayElements(dims, dimsPtr, JNI_ABORT);
-}
-
-
-static void
-nScriptSetTimeZone(JNIEnv *_env, jobject _this, jlong con, jlong script, jbyteArray timeZone, jboolean mUseInc)
-{
-    LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", (RsContext)con,
-            (void *)script, (const char *)timeZone);
-
-    jint length = _env->GetArrayLength(timeZone);
-    jbyte* timeZone_ptr;
-    timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0);
-    if (mUseInc) {
-        dispatchTabInc.ScriptSetTimeZone((RsContext)con, (RsScript)script, (const char *)timeZone_ptr, length);
-    } else {
-        dispatchTab.ScriptSetTimeZone((RsContext)con, (RsScript)script, (const char *)timeZone_ptr, length);
-    }
-
-    if (timeZone_ptr) {
-        _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0);
-    }
-}
-
-static void
-nScriptInvoke(JNIEnv *_env, jobject _this, jlong con, jlong obj, jint slot, jboolean mUseInc)
-{
-    LOG_API("nScriptInvoke, con(%p), script(%p)", (RsContext)con, (void *)obj);
-    if (mUseInc) {
-        dispatchTabInc.ScriptInvoke((RsContext)con, (RsScript)obj, slot);
-    } else {
-        dispatchTab.ScriptInvoke((RsContext)con, (RsScript)obj, slot);
-    }
-}
-
-static void
-nScriptInvokeV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data, jboolean mUseInc)
-{
-    LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot);
-    jint len = _env->GetArrayLength(data);
-    jbyte *ptr = _env->GetByteArrayElements(data, NULL);
-    if (mUseInc) {
-        dispatchTabInc.ScriptInvokeV((RsContext)con, (RsScript)script, slot, ptr, len);
-    } else {
-        dispatchTab.ScriptInvokeV((RsContext)con, (RsScript)script, slot, ptr, len);
-    }
-    _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-}
-
-static void
-nScriptForEach(JNIEnv *_env, jobject _this, jlong con, jlong incCon,
-               jlong script, jint slot, jlong ain, jlong aout, jboolean mUseInc)
-{
-    LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot);
-    if (mUseInc) {
-        dispatchTab.ContextFinish((RsContext)con);
-        dispatchTabInc.ScriptForEach((RsContext)incCon, (RsScript)script, slot,
-                                     (RsAllocation)ain, (RsAllocation)aout,
-                                     NULL, 0, NULL, 0);
-    } else {
-        dispatchTab.ScriptForEach((RsContext)con, (RsScript)script, slot,
-                                  (RsAllocation)ain, (RsAllocation)aout,
-                                  NULL, 0, NULL, 0);
-    }
-}
-
-static void
-nScriptForEachV(JNIEnv *_env, jobject _this, jlong con, jlong incCon,
-                jlong script, jint slot, jlong ain, jlong aout, jbyteArray params, jboolean mUseInc)
-{
-    LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot);
-    jint len = _env->GetArrayLength(params);
-    jbyte *ptr = _env->GetByteArrayElements(params, NULL);
-    if (mUseInc) {
-        dispatchTab.ContextFinish((RsContext)con);
-        dispatchTabInc.ScriptForEach((RsContext)incCon, (RsScript)script, slot,
-                                     (RsAllocation)ain, (RsAllocation)aout,
-                                     ptr, len, NULL, 0);
-    } else {
-        dispatchTab.ScriptForEach((RsContext)con, (RsScript)script, slot,
-                                  (RsAllocation)ain, (RsAllocation)aout,
-                                  ptr, len, NULL, 0);
-    }
-    _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT);
-}
-
-static void
-nScriptForEachClipped(JNIEnv *_env, jobject _this, jlong con, jlong incCon,
-                      jlong script, jint slot, jlong ain, jlong aout,
-                      jint xstart, jint xend,
-                      jint ystart, jint yend, jint zstart, jint zend, jboolean mUseInc)
-{
-    LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot);
-    RsScriptCall sc;
-    sc.xStart = xstart;
-    sc.xEnd = xend;
-    sc.yStart = ystart;
-    sc.yEnd = yend;
-    sc.zStart = zstart;
-    sc.zEnd = zend;
-    sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE;
-    sc.arrayStart = 0;
-    sc.arrayEnd = 0;
-    sc.array2Start = 0;
-    sc.array2End = 0;
-    sc.array3Start = 0;
-    sc.array3End = 0;
-    sc.array4Start = 0;
-    sc.array4End = 0;
-    if (mUseInc) {
-        dispatchTab.ContextFinish((RsContext)con);
-        dispatchTabInc.ScriptForEach((RsContext)incCon, (RsScript)script, slot,
-                                     (RsAllocation)ain, (RsAllocation)aout,
-                                     NULL, 0, &sc, sizeof(sc));
-    } else {
-        dispatchTab.ScriptForEach((RsContext)con, (RsScript)script, slot,
-                                  (RsAllocation)ain, (RsAllocation)aout,
-                                  NULL, 0, &sc, sizeof(sc));
-    }
-}
-
-static void
-nScriptForEachClippedV(JNIEnv *_env, jobject _this, jlong con, jlong incCon,
-                       jlong script, jint slot, jlong ain, jlong aout,
-                       jbyteArray params, jint xstart, jint xend,
-                       jint ystart, jint yend, jint zstart, jint zend, jboolean mUseInc)
-{
-    LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot);
-    jint len = _env->GetArrayLength(params);
-    jbyte *ptr = _env->GetByteArrayElements(params, NULL);
-    RsScriptCall sc;
-    sc.xStart = xstart;
-    sc.xEnd = xend;
-    sc.yStart = ystart;
-    sc.yEnd = yend;
-    sc.zStart = zstart;
-    sc.zEnd = zend;
-    sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE;
-    sc.arrayStart = 0;
-    sc.arrayEnd = 0;
-    sc.array2Start = 0;
-    sc.array2End = 0;
-    sc.array3Start = 0;
-    sc.array3End = 0;
-    sc.array4Start = 0;
-    sc.array4End = 0;
-    if (mUseInc) {
-        dispatchTab.ContextFinish((RsContext)con);
-        dispatchTabInc.ScriptForEach((RsContext)incCon, (RsScript)script, slot,
-                                     (RsAllocation)ain, (RsAllocation)aout,
-                                     ptr, len, &sc, sizeof(sc));
-    } else {
-        dispatchTab.ScriptForEach((RsContext)con, (RsScript)script, slot,
-                                  (RsAllocation)ain, (RsAllocation)aout,
-                                  ptr, len, &sc, sizeof(sc));
-    }
-    _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT);
-}
-
-static void
-nScriptForEachMulti(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot,
-                    jlongArray ains, jlong aout, jbyteArray params,
-                    jintArray limits)
-{
-    LOG_API("nScriptForEach, con(%p), s(%p), slot(%i) ains(%p) aout(%" PRId64 ")", (RsContext)con, (void *)script, slot, ains, aout);
-
-    jint   in_len = 0;
-    jlong *in_ptr = nullptr;
-
-    RsAllocation *in_allocs = nullptr;
-
-    if (ains != nullptr) {
-        in_len = _env->GetArrayLength(ains);
-        if (in_len > (jint)RS_KERNEL_MAX_ARGUMENTS) {
-            LOG_ERR("Too many arguments in kernel launch.");
-            // TODO (b/20758983): Report back to Java and throw an exception
-            return;
-        }
-
-        // TODO (b/20760800): Check in_ptr is not null
-        in_ptr = _env->GetLongArrayElements(ains, nullptr);
-        if (sizeof(RsAllocation) == sizeof(jlong)) {
-            in_allocs = (RsAllocation*)in_ptr;
-
-        } else {
-            // Convert from 64-bit jlong types to the native pointer type.
-
-            in_allocs = (RsAllocation*)alloca(in_len * sizeof(RsAllocation));
-            if (in_allocs == nullptr) {
-                LOG_ERR("Failed launching kernel for lack of memory.");
-                _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT);
-                return;
-            }
-
-            for (int index = in_len; --index >= 0;) {
-                in_allocs[index] = (RsAllocation)in_ptr[index];
-            }
-        }
-    }
-
-    jint   param_len = 0;
-    jbyte *param_ptr = nullptr;
-
-    if (params != nullptr) {
-        param_len = _env->GetArrayLength(params);
-        param_ptr = _env->GetByteArrayElements(params, nullptr);
-    }
-
-    RsScriptCall sc, *sca = nullptr;
-    uint32_t sc_size = 0;
-
-    jint  limit_len = 0;
-    jint *limit_ptr = nullptr;
-
-    if (limits != nullptr) {
-        limit_len = _env->GetArrayLength(limits);
-        limit_ptr = _env->GetIntArrayElements(limits, nullptr);
-
-        if (limit_len != 6) {
-            LOG_ERR("LaunchOptions cannot be recognized.");
-            goto exit;
-        }
-
-        sc.xStart     = limit_ptr[0];
-        sc.xEnd       = limit_ptr[1];
-        sc.yStart     = limit_ptr[2];
-        sc.yEnd       = limit_ptr[3];
-        sc.zStart     = limit_ptr[4];
-        sc.zEnd       = limit_ptr[5];
-        sc.strategy   = RS_FOR_EACH_STRATEGY_DONT_CARE;
-        sc.arrayStart = 0;
-        sc.arrayEnd = 0;
-        sc.array2Start = 0;
-        sc.array2End = 0;
-        sc.array3Start = 0;
-        sc.array3End = 0;
-        sc.array4Start = 0;
-        sc.array4End = 0;
-
-        sca = &sc;
-    }
-
-    dispatchTabInc.ScriptForEachMulti((RsContext)con, (RsScript)script, slot,
-                                      in_allocs, in_len, (RsAllocation)aout,
-                                      param_ptr, param_len, sca, sc_size);
-
-exit:
-
-    if (ains != nullptr) {
-        _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT);
-    }
-
-    if (params != nullptr) {
-        _env->ReleaseByteArrayElements(params, param_ptr, JNI_ABORT);
-    }
-
-    if (limits != nullptr) {
-        _env->ReleaseIntArrayElements(limits, limit_ptr, JNI_ABORT);
-    }
-}
-
-static void
-nScriptReduce(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot,
-              jlongArray ains, jlong aout, jintArray limits)
-{
-    LOG_API("nScriptReduce, con(%p), s(%p), slot(%i) ains(%p) aout(%" PRId64 ")", (RsContext)con, (void *)script, slot, ains, aout);
-
-    if (ains == nullptr) {
-        LOG_ERR("At least one input required.");
-        // TODO (b/20758983): Report back to Java and throw an exception
-        return;
-    }
-    jint in_len = _env->GetArrayLength(ains);
-    if (in_len > (jint)RS_KERNEL_MAX_ARGUMENTS) {
-        LOG_ERR("Too many arguments in kernel launch.");
-        // TODO (b/20758983): Report back to Java and throw an exception
-        return;
-    }
-
-    jlong *in_ptr = _env->GetLongArrayElements(ains, nullptr);
-    if (in_ptr == nullptr) {
-        LOG_ERR("Failed to get Java array elements");
-        // TODO (b/20758983): Report back to Java and throw an exception
-        return;
-    }
-
-    RsAllocation *in_allocs = nullptr;
-    if (sizeof(RsAllocation) == sizeof(jlong)) {
-        in_allocs = (RsAllocation*)in_ptr;
-    } else {
-        // Convert from 64-bit jlong types to the native pointer type.
-
-        in_allocs = (RsAllocation*)alloca(in_len * sizeof(RsAllocation));
-        if (in_allocs == nullptr) {
-            LOG_ERR("Failed launching kernel for lack of memory.");
-            // TODO (b/20758983): Report back to Java and throw an exception
-            _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT);
-            return;
-        }
-
-        for (int index = in_len; --index >= 0;) {
-            in_allocs[index] = (RsAllocation)in_ptr[index];
-        }
-    }
-
-    RsScriptCall sc, *sca = nullptr;
-    uint32_t sc_size = 0;
-
-    jint  limit_len = 0;
-    jint *limit_ptr = nullptr;
-
-    if (limits != nullptr) {
-        limit_len = _env->GetArrayLength(limits);
-        limit_ptr = _env->GetIntArrayElements(limits, nullptr);
-        if (limit_ptr == nullptr) {
-            LOG_ERR("Failed to get Java array elements");
-            // TODO (b/20758983): Report back to Java and throw an exception
-            _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT);
-            return;
-        }
-
-        if (limit_len != 6) {
-            LOG_ERR("LaunchOptions cannot be recognized");
-            // TODO (b/20758983): Report back to Java and throw an exception
-            _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT);
-            return;
-        }
-
-        sc.xStart     = limit_ptr[0];
-        sc.xEnd       = limit_ptr[1];
-        sc.yStart     = limit_ptr[2];
-        sc.yEnd       = limit_ptr[3];
-        sc.zStart     = limit_ptr[4];
-        sc.zEnd       = limit_ptr[5];
-        sc.strategy   = RS_FOR_EACH_STRATEGY_DONT_CARE;
-        sc.arrayStart = 0;
-        sc.arrayEnd = 0;
-        sc.array2Start = 0;
-        sc.array2End = 0;
-        sc.array3Start = 0;
-        sc.array3End = 0;
-        sc.array4Start = 0;
-        sc.array4End = 0;
-
-        sca = &sc;
-        sc_size = sizeof(sc);
-    }
-
-    dispatchTab.ScriptReduce((RsContext)con, (RsScript)script, slot,
-                             in_allocs, in_len, (RsAllocation)aout,
-                             sca, sc_size);
-
-    _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT);
-
-    if (limits != nullptr) {
-        _env->ReleaseIntArrayElements(limits, limit_ptr, JNI_ABORT);
-    }
-}
-
-// -----------------------------------
-
-static jlong
-nScriptCCreate(JNIEnv *_env, jobject _this, jlong con,
-               jstring resName, jstring cacheDir,
-               jbyteArray scriptRef, jint length)
-{
-    LOG_API("nScriptCCreate, con(%p)", (RsContext)con);
-
-    AutoJavaStringToUTF8 resNameUTF(_env, resName);
-    AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir);
-    jlong ret = 0;
-    jbyte* script_ptr = NULL;
-    jint _exception = 0;
-    jint remaining;
-    if (!scriptRef) {
-        _exception = 1;
-        //jniThrowException(_env, "java/lang/IllegalArgumentException", "script == null");
-        goto exit;
-    }
-    if (length < 0) {
-        _exception = 1;
-        //jniThrowException(_env, "java/lang/IllegalArgumentException", "length < 0");
-        goto exit;
-    }
-    remaining = _env->GetArrayLength(scriptRef);
-    if (remaining < length) {
-        _exception = 1;
-        //jniThrowException(_env, "java/lang/IllegalArgumentException",
-        //        "length > script.length - offset");
-        goto exit;
-    }
-    script_ptr = (jbyte *)
-        _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0);
-
-    //rsScriptCSetText(con, (const char *)script_ptr, length);
-
-    ret = (jlong)(uintptr_t)dispatchTab.ScriptCCreate((RsContext)con,
-                                                      resNameUTF.c_str(), resNameUTF.length(),
-                                                      cacheDirUTF.c_str(), cacheDirUTF.length(),
-                                                      (const char *)script_ptr, length);
-
-exit:
-    if (script_ptr) {
-        _env->ReleasePrimitiveArrayCritical(scriptRef, script_ptr,
-                _exception ? JNI_ABORT: 0);
-    }
-
-    return (jlong)(uintptr_t)ret;
-}
-
-static jlong
-nScriptIntrinsicCreate(JNIEnv *_env, jobject _this, jlong con, jint id, jlong eid, jboolean mUseInc)
-{
-    LOG_API("nScriptIntrinsicCreate, con(%p) id(%i) element(%p)", (RsContext)con, id, (void *)eid);
-    if (mUseInc) {
-        return (jlong)(uintptr_t)dispatchTabInc.ScriptIntrinsicCreate((RsContext)con, id, (RsElement)eid);
-    } else {
-        return (jlong)(uintptr_t)dispatchTab.ScriptIntrinsicCreate((RsContext)con, id, (RsElement)eid);
-    }
-}
-
-static jlong
-nScriptKernelIDCreate(JNIEnv *_env, jobject _this, jlong con, jlong sid, jint slot, jint sig, jboolean mUseInc)
-{
-    LOG_API("nScriptKernelIDCreate, con(%p) script(%p), slot(%i), sig(%i)", (RsContext)con,
-            (void *)sid, slot, sig);
-    if (mUseInc) {
-        return (jlong)(uintptr_t)dispatchTabInc.ScriptKernelIDCreate((RsContext)con, (RsScript)sid,
-                                                                     slot, sig);
-    } else {
-        return (jlong)(uintptr_t)dispatchTab.ScriptKernelIDCreate((RsContext)con, (RsScript)sid,
-                                                                  slot, sig);
-    }
-}
-
-static jlong
-nScriptInvokeIDCreate(JNIEnv *_env, jobject _this, jlong con, jlong sid, jint slot)
-{
-    LOG_API("nScriptInvokeIDCreate, con(%p) script(%p), slot(%i), sig(%i)", con,
-            (void *)sid, slot);
-    return (jlong)dispatchTab.ScriptInvokeIDCreate((RsContext)con, (RsScript)sid, slot);
-}
-
-static jlong
-nScriptFieldIDCreate(JNIEnv *_env, jobject _this, jlong con, jlong sid, jint slot, jboolean mUseInc)
-{
-    LOG_API("nScriptFieldIDCreate, con(%p) script(%p), slot(%i)", (RsContext)con, (void *)sid, slot);
-    if (mUseInc) {
-        return (jlong)(uintptr_t)dispatchTabInc.ScriptFieldIDCreate((RsContext)con, (RsScript)sid, slot);
-    } else {
-        return (jlong)(uintptr_t)dispatchTab.ScriptFieldIDCreate((RsContext)con, (RsScript)sid, slot);
-    }
-}
-
-static jlong
-nScriptGroupCreate(JNIEnv *_env, jobject _this, jlong con, jlongArray _kernels, jlongArray _src,
-    jlongArray _dstk, jlongArray _dstf, jlongArray _types)
-{
-    LOG_API("nScriptGroupCreate, con(%p)", (RsContext)con);
-
-    jlong id = 0;
-
-    RsScriptKernelID* kernelsPtr;
-    jint kernelsLen = _env->GetArrayLength(_kernels);
-    jlong *jKernelsPtr = _env->GetLongArrayElements(_kernels, nullptr);
-
-    RsScriptKernelID* srcPtr;
-    jint srcLen = _env->GetArrayLength(_src);
-    jlong *jSrcPtr = _env->GetLongArrayElements(_src, nullptr);
-
-    RsScriptKernelID* dstkPtr;
-    jint dstkLen = _env->GetArrayLength(_dstk);
-    jlong *jDstkPtr = _env->GetLongArrayElements(_dstk, nullptr);
-
-    RsScriptKernelID* dstfPtr;
-    jint dstfLen = _env->GetArrayLength(_dstf);
-    jlong *jDstfPtr = _env->GetLongArrayElements(_dstf, nullptr);
-
-    RsType* typesPtr;
-    jint typesLen = _env->GetArrayLength(_types);
-    jlong *jTypesPtr = _env->GetLongArrayElements(_types, nullptr);
-
-    if (jKernelsPtr == nullptr) {
-        LOG_ERR("Failed to get Java array elements: kernels");
-        goto cleanup;
-    }
-    if (jSrcPtr == nullptr) {
-        LOG_ERR("Failed to get Java array elements: src");
-        goto cleanup;
-    }
-    if (jDstkPtr == nullptr) {
-        LOG_ERR("Failed to get Java array elements: dstk");
-        goto cleanup;
-    }
-    if (jDstfPtr == nullptr) {
-        LOG_ERR("Failed to get Java array elements: dstf");
-        goto cleanup;
-    }
-    if (jTypesPtr == nullptr) {
-        LOG_ERR("Failed to get Java array elements: types");
-        goto cleanup;
-    }
-
-    kernelsPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * kernelsLen);
-    for(int i = 0; i < kernelsLen; ++i) {
-        kernelsPtr[i] = (RsScriptKernelID)jKernelsPtr[i];
-    }
-
-    srcPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * srcLen);
-    for(int i = 0; i < srcLen; ++i) {
-        srcPtr[i] = (RsScriptKernelID)jSrcPtr[i];
-    }
-
-    dstkPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstkLen);
-    for(int i = 0; i < dstkLen; ++i) {
-        dstkPtr[i] = (RsScriptKernelID)jDstkPtr[i];
-    }
-
-    dstfPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstfLen);
-    for(int i = 0; i < dstfLen; ++i) {
-        dstfPtr[i] = (RsScriptKernelID)jDstfPtr[i];
-    }
-
-    typesPtr = (RsType*) malloc(sizeof(RsType) * typesLen);
-    for(int i = 0; i < typesLen; ++i) {
-        typesPtr[i] = (RsType)jTypesPtr[i];
-    }
-
-    id = (jlong)(uintptr_t) dispatchTab.ScriptGroupCreate((RsContext)con,
-                               (RsScriptKernelID *)kernelsPtr, kernelsLen * sizeof(RsScriptKernelID),
-                               (RsScriptKernelID *)srcPtr, srcLen * sizeof(RsScriptKernelID),
-                               (RsScriptKernelID *)dstkPtr, dstkLen * sizeof(RsScriptKernelID),
-                               (RsScriptFieldID *)dstfPtr, dstfLen * sizeof(RsScriptKernelID),
-                               (RsType *)typesPtr, typesLen * sizeof(RsType));
-
-    free(kernelsPtr);
-    free(srcPtr);
-    free(dstkPtr);
-    free(dstfPtr);
-    free(typesPtr);
-
-cleanup:
-    if (jKernelsPtr != nullptr) {
-        _env->ReleaseLongArrayElements(_kernels, jKernelsPtr, 0);
-    }
-    if (jSrcPtr != nullptr) {
-        _env->ReleaseLongArrayElements(_src, jSrcPtr, 0);
-    }
-    if (jDstkPtr != nullptr) {
-        _env->ReleaseLongArrayElements(_dstk, jDstkPtr, 0);
-    }
-    if (jDstfPtr != nullptr) {
-        _env->ReleaseLongArrayElements(_dstf, jDstfPtr, 0);
-    }
-    if (jTypesPtr != nullptr) {
-        _env->ReleaseLongArrayElements(_types, jTypesPtr, 0);
-    }
-
-    return id;
-}
-
-static void
-nScriptGroupSetInput(JNIEnv *_env, jobject _this, jlong con, jlong gid, jlong kid, jlong alloc)
-{
-    LOG_API("nScriptGroupSetInput, con(%p) group(%p), kernelId(%p), alloc(%p)", (RsContext)con,
-            (void *)gid, (void *)kid, (void *)alloc);
-    dispatchTab.ScriptGroupSetInput((RsContext)con, (RsScriptGroup)gid, (RsScriptKernelID)kid,
-                                    (RsAllocation)alloc);
-}
-
-static void
-nScriptGroupSetOutput(JNIEnv *_env, jobject _this, jlong con, jlong gid, jlong kid, jlong alloc)
-{
-    LOG_API("nScriptGroupSetOutput, con(%p) group(%p), kernelId(%p), alloc(%p)", (RsContext)con,
-            (void *)gid, (void *)kid, (void *)alloc);
-    dispatchTab.ScriptGroupSetOutput((RsContext)con, (RsScriptGroup)gid, (RsScriptKernelID)kid,
-                                     (RsAllocation)alloc);
-}
-
-static void
-nScriptGroupExecute(JNIEnv *_env, jobject _this, jlong con, jlong gid)
-{
-    LOG_API("nScriptGroupSetOutput, con(%p) group(%p)", (RsContext)con, (void *)gid);
-    dispatchTab.ScriptGroupExecute((RsContext)con, (RsScriptGroup)gid);
-}
-
-// ---------------------------------------------------------------------------
-
-static jlong
-nSamplerCreate(JNIEnv *_env, jobject _this, jlong con, jint magFilter, jint minFilter,
-               jint wrapS, jint wrapT, jint wrapR, jfloat aniso)
-{
-    LOG_API("nSamplerCreate, con(%p)", (RsContext)con);
-    return (jlong)(uintptr_t)dispatchTab.SamplerCreate((RsContext)con,
-                                                       (RsSamplerValue)magFilter,
-                                                       (RsSamplerValue)minFilter,
-                                                       (RsSamplerValue)wrapS,
-                                                       (RsSamplerValue)wrapT,
-                                                       (RsSamplerValue)wrapR,
-                                                       aniso);
-}
-
-static jint
-nSystemGetPointerSize(JNIEnv *_env, jobject _this) {
-    return (jint)sizeof(void*);
-}
-
-// ---------------------------------------------------------------------------
-// For Incremental Intrinsic Support
-static jboolean nIncLoadSO(JNIEnv *_env, jobject _this, jint deviceApi, jstring libPath) {
-    void* handle = NULL;
-    // For API 9+, dlopen the full path of libRSSupport.
-    if (libPath != NULL) {
-        const char * libPathJni = _env->GetStringUTFChars(libPath, JNI_FALSE);
-        handle = dlopen(libPathJni, RTLD_LAZY | RTLD_LOCAL);
-        _env->ReleaseStringUTFChars(libPath, libPathJni);
-    } else {
-        handle = dlopen("libRSSupport.so", RTLD_LAZY | RTLD_LOCAL);
-    }
-
-    if (handle == NULL) {
-        LOG_ERR("couldn't dlopen %s;  librsjni version: %d", dlerror(), RS_JNI_VERSION);
-        return false;
-    }
-
-    if (loadSymbols(handle, dispatchTabInc, deviceApi) == false) {
-        LOG_ERR("Dispatch Table init failed! librsjni version: %d", RS_JNI_VERSION);
-        dlclose(handle);
-        return false;
-    }
-    dispatchTabInc.AllocationCreateStrided = (AllocationCreateStridedFnPtr)dlsym(handle, "rsAllocationCreateStrided");
-    if (dispatchTabInc.AllocationCreateStrided == NULL) {
-        LOG_ERR("Couldn't initialize dispatchTabInc.AllocationCreateStrided");
-        dlclose(handle);
-        return false;
-    }
-    LOG_API("Successfully loaded compat runtime");
-    return true;
-}
-
-// -----------------------------------
-// To create/destroy a dummy context
-static void
-nIncObjDestroy(JNIEnv *_env, jobject _this, jlong con, jlong obj)
-{
-    LOG_API("nObjDestroy, con(%p) obj(%p)", (RsContext)con, (void *)obj);
-    dispatchTabInc.ObjDestroy((RsContext)con, (void *)obj);
-}
-
-
-static jlong
-nIncDeviceCreate(JNIEnv *_env, jobject _this)
-{
-    LOG_API("nDeviceCreate");
-    return (jlong)(uintptr_t)dispatchTabInc.DeviceCreate();
-}
-
-static void
-nIncDeviceDestroy(JNIEnv *_env, jobject _this, jlong dev)
-{
-    LOG_API("nDeviceDestroy");
-    return dispatchTabInc.DeviceDestroy((RsDevice)dev);
-}
-
-static jlong
-nIncContextCreate(JNIEnv *_env, jobject _this, jlong dev, jint ver, jint sdkVer, jint ct)
-{
-    LOG_API("nContextCreate");
-    //The compat context for incremental support will be synchronous.
-    return (jlong)(uintptr_t)dispatchTabInc.ContextCreate((RsDevice)dev, ver, sdkVer,
-                                                          (RsContextType)ct,
-                                                          RS_CONTEXT_SYNCHRONOUS);
-}
-
-static void
-nIncContextFinish(JNIEnv *_env, jobject _this, jlong con)
-{
-    LOG_API("nContextFinish, con(%p)", (RsContext)con);
-    dispatchTabInc.ContextFinish((RsContext)con);
-}
-
-static void
-nIncContextDestroy(JNIEnv *_env, jobject _this, jlong con)
-{
-    LOG_API("nContextDestroy, con(%p)", (RsContext)con);
-    dispatchTabInc.ContextDestroy((RsContext)con);
-}
-
-// -----------------------------------
-// Create dummy Element
-static jlong
-nIncElementCreate(JNIEnv *_env, jobject _this, jlong con, jlong type, jint kind, jboolean norm, jint size)
-{
-    LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", (RsContext)con,
-            type, kind, norm, size);
-    return (jlong)(uintptr_t)dispatchTabInc.ElementCreate((RsContext)con, (RsDataType)type,
-                                                          (RsDataKind)kind, norm, size);
-}
-// -----------------------------------
-// Create dummy Type
-static jlong
-nIncTypeCreate(JNIEnv *_env, jobject _this, jlong con, jlong eid,
-            jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces, jint yuv)
-{
-    LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i), yuv(%i)",
-            incCon, eid, dimx, dimy, dimz, mips, faces, yuv);
-
-    return (jlong)(uintptr_t)dispatchTabInc.TypeCreate((RsContext)con, (RsElement)eid, dimx, dimy,
-                                                       dimz, mips, faces, yuv);
-}
-
-// -----------------------------------
-// Create Allocation from pointer
-static jlong
-nIncAllocationCreateTyped(JNIEnv *_env, jobject _this, jlong con, jlong incCon, jlong alloc, jlong type, jint xBytesSize)
-{
-    LOG_API("nAllocationCreateTyped, con(%p), type(%p), mip(%i), usage(%i), ptr(%p)",
-            incCon, (RsElement)type, mips, usage, (void *)pointer);
-    size_t strideIn;
-    void* pIn = NULL;
-    RsAllocation ainI = NULL;
-    if (alloc != 0) {
-        pIn = dispatchTab.AllocationGetPointer((RsContext)con, (RsAllocation)alloc, 0,
-                                               RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, 0, 0,
-                                               &strideIn, sizeof(size_t));
-        /*
-         * By definition stride is a roundup of xBytesSize with requiredAlignment, so requiredAlignment must
-         * be strictly larger than the difference of (stride - xBytesSize).
-         *
-         * We can prove that as long as requiredAlignment satisfies the following two conditions, the
-         * memory layout will be identical :
-         * 1. Smaller or equal than stride;
-         * 2. Larger than minRequiredAlignment.
-         *
-         * In this case we can simply choose the first power of 2 that satisfies both conditions.
-         */
-        size_t requiredAlignment = 16;
-        size_t minRequiredAlignment = strideIn - xBytesSize;
-        while (requiredAlignment <= minRequiredAlignment) {
-            requiredAlignment <<= 1;
-        }
-        ainI = dispatchTabInc.AllocationCreateStrided((RsContext)incCon, (RsType)type,
-                                                      RS_ALLOCATION_MIPMAP_NONE,
-                                                      RS_ALLOCATION_USAGE_INCREMENTAL_SUPPORT | RS_ALLOCATION_USAGE_SHARED,
-                                                      (uintptr_t)pIn, requiredAlignment);
-    }
-    return (jlong)(uintptr_t) ainI;
-}
-
-static jobject
-nAllocationGetByteBuffer(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jint xBytesSize, jint dimY, jint dimZ)
-{
-    LOG_API("nAllocationGetByteBuffer, con(%p), alloc(%p)", (RsContext)con, (RsAllocation)alloc);
-    size_t strideIn = xBytesSize;
-    void* ptr = NULL;
-    if (alloc != 0 && dispatchTab.AllocationGetPointer != nullptr) {
-        ptr = dispatchTab.AllocationGetPointer((RsContext)con, (RsAllocation)alloc, 0,
-                                               RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, dimZ, 0,
-                                               &strideIn, sizeof(size_t));
-    }
-    if (ptr != NULL) {
-        size_t bufferSize = strideIn;
-        if (dimY > 0) {
-            bufferSize *= dimY;
-        }
-        if (dimZ > 0) {
-            bufferSize *= dimZ;
-        }
-        jobject byteBuffer = _env->NewDirectByteBuffer(ptr, (jlong) bufferSize);
-        return byteBuffer;
-    } else {
-        return NULL;
-    }
-}
-
-static jlong
-nAllocationGetStride(JNIEnv *_env, jobject _this, jlong con, jlong alloc)
-{
-    LOG_API("nAllocationGetStride, con(%p), alloc(%p)", (RsContext)con, (RsAllocation)alloc);
-    size_t strideIn = 0;
-    if (alloc != 0 && dispatchTab.AllocationGetPointer != nullptr) {
-        dispatchTab.AllocationGetPointer((RsContext)con, (RsAllocation)alloc, 0,
-                                         RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, 0, 0,
-                                         &strideIn, sizeof(size_t));
-    }
-    return (jlong)strideIn;
-}
-
-// ---------------------------------------------------------------------------
-
-
-static const char *classPathName = "android/support/v8/renderscript/RenderScript";
-
-static JNINativeMethod methods[] = {
-{"nLoadSO",                        "(ZILjava/lang/String;)Z",                 (bool*)nLoadSO },
-{"nLoadIOSO",                      "()Z",                                     (bool*)nLoadIOSO },
-{"nDeviceCreate",                  "()J",                                     (void*)nDeviceCreate },
-{"nDeviceDestroy",                 "(J)V",                                    (void*)nDeviceDestroy },
-{"nDeviceSetConfig",               "(JII)V",                                  (void*)nDeviceSetConfig },
-{"nContextGetUserMessage",         "(J[I)I",                                  (void*)nContextGetUserMessage },
-{"nContextGetErrorMessage",        "(J)Ljava/lang/String;",                   (void*)nContextGetErrorMessage },
-{"nContextPeekMessage",            "(J[I)I",                                  (void*)nContextPeekMessage },
-{"nContextInitToClient",           "(J)V",                                    (void*)nContextInitToClient },
-{"nContextDeinitToClient",         "(J)V",                                    (void*)nContextDeinitToClient },
-
-
-// All methods below are thread protected in java.
-{"rsnContextCreate",                 "(JIIILjava/lang/String;)J",             (void*)nContextCreate },
-{"rsnContextFinish",                 "(J)V",                                  (void*)nContextFinish },
-{"rsnContextSetPriority",            "(JI)V",                                 (void*)nContextSetPriority },
-{"rsnContextDestroy",                "(J)V",                                  (void*)nContextDestroy },
-{"rsnContextDump",                   "(JI)V",                                 (void*)nContextDump },
-{"rsnContextSendMessage",            "(JI[I)V",                               (void*)nContextSendMessage },
-{"rsnClosureCreate",                 "(JJJ[J[J[I[J[J)J",                      (void*)nClosureCreate },
-{"rsnInvokeClosureCreate",           "(JJ[B[J[J[I)J",                         (void*)nInvokeClosureCreate },
-{"rsnClosureSetArg",                 "(JJIJI)V",                              (void*)nClosureSetArg },
-{"rsnClosureSetGlobal",              "(JJJJI)V",                              (void*)nClosureSetGlobal },
-{"rsnObjDestroy",                    "(JJ)V",                                 (void*)nObjDestroy },
-
-{"rsnElementCreate",                 "(JJIZI)J",                              (void*)nElementCreate },
-{"rsnElementCreate2",                "(J[J[Ljava/lang/String;[I)J",           (void*)nElementCreate2 },
-{"rsnElementGetSubElements",         "(JJ[J[Ljava/lang/String;[I)V",          (void*)nElementGetSubElements },
-
-{"rsnTypeCreate",                    "(JJIIIZZI)J",                           (void*)nTypeCreate },
-
-{"rsnAllocationCreateTyped",         "(JJIIJ)J",                              (void*)nAllocationCreateTyped },
-{"rsnAllocationCreateFromBitmap",    "(JJILandroid/graphics/Bitmap;I)J",      (void*)nAllocationCreateFromBitmap },
-{"rsnAllocationCreateBitmapBackedAllocation",    "(JJILandroid/graphics/Bitmap;I)J",      (void*)nAllocationCreateBitmapBackedAllocation },
-{"rsnAllocationCubeCreateFromBitmap","(JJILandroid/graphics/Bitmap;I)J",      (void*)nAllocationCubeCreateFromBitmap },
-
-{"rsnAllocationCopyFromBitmap",      "(JJLandroid/graphics/Bitmap;)V",        (void*)nAllocationCopyFromBitmap },
-{"rsnAllocationCopyToBitmap",        "(JJLandroid/graphics/Bitmap;)V",        (void*)nAllocationCopyToBitmap },
-
-{"rsnAllocationSyncAll",             "(JJI)V",                                (void*)nAllocationSyncAll },
-{"rsnAllocationSetSurface",          "(JJLandroid/view/Surface;)V",           (void*)nAllocationSetSurface },
-{"rsnAllocationIoSend",              "(JJ)V",                                 (void*)nAllocationIoSend },
-{"rsnAllocationData1D",              "(JJIIILjava/lang/Object;IIIZ)V",        (void*)nAllocationData1D },
-{"rsnAllocationElementData1D",       "(JJIII[BI)V",                           (void*)nAllocationElementData1D },
-//{"rsnAllocationElementData",         "(JJIIIII[BI)V",                         (void*)nAllocationElementData },
-{"rsnAllocationData2D",              "(JJIIIIIILjava/lang/Object;IIIZ)V",     (void*)nAllocationData2D },
-{"rsnAllocationData2D",              "(JJIIIIIIJIIII)V",                      (void*)nAllocationData2D_alloc },
-{"rsnAllocationData3D",              "(JJIIIIIIILjava/lang/Object;IIIZ)V",    (void*)nAllocationData3D },
-{"rsnAllocationData3D",              "(JJIIIIIIIJIIII)V",                     (void*)nAllocationData3D_alloc },
-{"rsnAllocationRead",                "(JJLjava/lang/Object;IIZ)V",            (void*)nAllocationRead },
-{"rsnAllocationRead1D",              "(JJIIILjava/lang/Object;IIIZ)V",        (void*)nAllocationRead1D },
-//{"rsnAllocationElementRead",         "(JJIIIII[BI)V",                         (void*)nAllocationElementRead },
-{"rsnAllocationRead2D",              "(JJIIIIIILjava/lang/Object;IIIZ)V",     (void*)nAllocationRead2D },
-//{"rsnAllocationRead3D",              "(JJIIIIIIILjava/lang/Object;IIIZ)V",  (void*)nAllocationRead3D },
-{"rsnAllocationGetType",             "(JJ)J",                                 (void*)nAllocationGetType},
-{"rsnAllocationResize1D",            "(JJI)V",                                (void*)nAllocationResize1D },
-{"rsnAllocationGenerateMipmaps",     "(JJ)V",                                 (void*)nAllocationGenerateMipmaps },
-
-{"rsnScriptBindAllocation",          "(JJJIZ)V",                              (void*)nScriptBindAllocation },
-{"rsnScriptSetTimeZone",             "(JJ[BZ)V",                              (void*)nScriptSetTimeZone },
-{"rsnScriptInvoke",                  "(JJIZ)V",                               (void*)nScriptInvoke },
-{"rsnScriptInvokeV",                 "(JJI[BZ)V",                             (void*)nScriptInvokeV },
-{"rsnScriptForEach",                 "(JJJIJJZ)V",                            (void*)nScriptForEach },
-{"rsnScriptForEach",                 "(JJJIJJ[BZ)V",                          (void*)nScriptForEachV },
-{"rsnScriptForEach",                 "(JJI[JJ[B[I)V",                         (void*)nScriptForEachMulti },
-{"rsnScriptForEachClipped",          "(JJJIJJIIIIIIZ)V",                      (void*)nScriptForEachClipped },
-{"rsnScriptForEachClipped",          "(JJJIJJ[BIIIIIIZ)V",                    (void*)nScriptForEachClippedV },
-{"rsnScriptReduce",                  "(JJI[JJ[I)V",                           (void*)nScriptReduce },
-{"rsnScriptSetVarI",                 "(JJIIZ)V",                              (void*)nScriptSetVarI },
-{"rsnScriptSetVarJ",                 "(JJIJZ)V",                              (void*)nScriptSetVarJ },
-{"rsnScriptSetVarF",                 "(JJIFZ)V",                              (void*)nScriptSetVarF },
-{"rsnScriptSetVarD",                 "(JJIDZ)V",                              (void*)nScriptSetVarD },
-{"rsnScriptSetVarV",                 "(JJI[BZ)V",                             (void*)nScriptSetVarV },
-{"rsnScriptSetVarVE",                "(JJI[BJ[IZ)V",                          (void*)nScriptSetVarVE },
-{"rsnScriptSetVarObj",               "(JJIJZ)V",                              (void*)nScriptSetVarObj },
-
-{"rsnScriptCCreate",                 "(JLjava/lang/String;Ljava/lang/String;[BI)J",  (void*)nScriptCCreate },
-{"rsnScriptIntrinsicCreate",         "(JIJZ)J",                               (void*)nScriptIntrinsicCreate },
-{"rsnScriptKernelIDCreate",          "(JJIIZ)J",                              (void*)nScriptKernelIDCreate },
-{"rsnScriptInvokeIDCreate",          "(JJI)J",                                (void*)nScriptInvokeIDCreate },
-{"rsnScriptFieldIDCreate",           "(JJIZ)J",                               (void*)nScriptFieldIDCreate },
-{"rsnScriptGroupCreate",             "(J[J[J[J[J[J)J",                        (void*)nScriptGroupCreate },
-{"rsnScriptGroup2Create",            "(JLjava/lang/String;Ljava/lang/String;[J)J", (void*)nScriptGroup2Create },
-{"rsnScriptGroupSetInput",           "(JJJJ)V",                               (void*)nScriptGroupSetInput },
-{"rsnScriptGroupSetOutput",          "(JJJJ)V",                               (void*)nScriptGroupSetOutput },
-{"rsnScriptGroupExecute",            "(JJ)V",                                 (void*)nScriptGroupExecute },
-{"rsnScriptGroup2Execute",           "(JJ)V",                                 (void*)nScriptGroup2Execute },
-
-{"rsnScriptIntrinsicBLAS_Single",    "(JJJIIIIIIIIIFJJFJIIIIZ)V",             (void*)nScriptIntrinsicBLAS_Single },
-{"rsnScriptIntrinsicBLAS_Double",    "(JJJIIIIIIIIIDJJDJIIIIZ)V",             (void*)nScriptIntrinsicBLAS_Double },
-{"rsnScriptIntrinsicBLAS_Complex",   "(JJJIIIIIIIIIFFJJFFJIIIIZ)V",           (void*)nScriptIntrinsicBLAS_Complex },
-{"rsnScriptIntrinsicBLAS_Z",         "(JJJIIIIIIIIIDDJJDDJIIIIZ)V",           (void*)nScriptIntrinsicBLAS_Z },
-
-{"rsnScriptIntrinsicBLAS_BNNM",      "(JJJIIIJIJIJIIZ)V",                     (void*)nScriptIntrinsicBLAS_BNNM },
-
-{"rsnSamplerCreate",                 "(JIIIIIF)J",                            (void*)nSamplerCreate },
-
-{"rsnSystemGetPointerSize",          "()I",                                   (void*)nSystemGetPointerSize },
-
-// Entry points for Inc libRSSupport
-{"nIncLoadSO",                       "(ILjava/lang/String;)Z",                (bool*)nIncLoadSO },
-{"nIncDeviceCreate",                 "()J",                                   (void*)nIncDeviceCreate },
-{"nIncDeviceDestroy",                "(J)V",                                  (void*)nIncDeviceDestroy },
-{"rsnIncContextCreate",              "(JIII)J",                               (void*)nIncContextCreate },
-{"rsnIncContextFinish",              "(J)V",                                  (void*)nIncContextFinish },
-{"rsnIncContextDestroy",             "(J)V",                                  (void*)nIncContextDestroy },
-{"rsnIncObjDestroy",                 "(JJ)V",                                 (void*)nIncObjDestroy },
-{"rsnIncElementCreate",              "(JJIZI)J",                              (void*)nIncElementCreate },
-{"rsnIncTypeCreate",                 "(JJIIIZZI)J",                           (void*)nIncTypeCreate },
-{"rsnIncAllocationCreateTyped",      "(JJJJI)J",                              (void*)nIncAllocationCreateTyped },
-{"rsnAllocationGetByteBuffer",       "(JJIII)Ljava/nio/ByteBuffer;",          (void*)nAllocationGetByteBuffer },
-{"rsnAllocationGetStride",           "(JJ)J",                                 (void*)nAllocationGetStride },
-};
-
-// ---------------------------------------------------------------------------
-
-jint JNI_OnLoad(JavaVM* vm, void* reserved)
-{
-    JNIEnv* env = NULL;
-    jclass clazz = NULL;
-    jint result = -1;
-
-    if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
-        //        __android_log_print(ANDROID_LOG_ERROR, LOG_TAG,
-        //            "ERROR: GetEnv failed\n");
-        goto bail;
-    }
-    if (env == NULL) {
-        //        __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "ERROR: env == NULL");
-        goto bail;
-    }
-
-    clazz = env->FindClass(classPathName);
-    if (clazz == NULL) {
-        goto bail;
-    }
-
-    if (env->RegisterNatives(clazz, methods, NELEM(methods)) < 0) {
-        //        __android_log_print(ANDROID_LOG_ERROR, LOG_TAG,
-        //            "ERROR: MediaPlayer native registration failed\n");
-        goto bail;
-    }
-
-    /* success -- return valid version number */
-    result = JNI_VERSION_1_4;
-
-bail:
-    return result;
-}
diff --git a/v8/renderscript/jni/android_rscompat_usage_io.cpp b/v8/renderscript/jni/android_rscompat_usage_io.cpp
deleted file mode 100644
index e29be1a..0000000
--- a/v8/renderscript/jni/android_rscompat_usage_io.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <android/log.h>
-#include <android/native_window.h>
-#include <android/native_window_jni.h>
-
-#include <rsEnv.h>
-#include "rsDispatch.h"
-#define LOG_API(...)
-
-extern "C" void AllocationSetSurface(JNIEnv *_env, jobject _this, RsContext con, RsAllocation alloc, jobject sur, dispatchTable dispatchTab)
-{
-    LOG_API("nAllocationSetSurface, con(%p), alloc(%p), surface(%p)",
-            con, alloc, sur);
-
-    ANativeWindow* s = NULL;
-    if (sur != 0) {
-        s = ANativeWindow_fromSurface(_env, sur);
-    }
-    dispatchTab.AllocationSetSurface(con, alloc, s);
-}
-
diff --git a/v8/renderscript/jni/android_rscompat_usage_io_driver.cpp b/v8/renderscript/jni/android_rscompat_usage_io_driver.cpp
deleted file mode 100644
index 96eb19a..0000000
--- a/v8/renderscript/jni/android_rscompat_usage_io_driver.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-#include <android/native_window.h>
-#include <android/log.h>
-
-#include "rsCompatibilityLib.h"
-
-#include "rsdCore.h"
-#include "rsdAllocation.h"
-#include "rsAllocation.h"
-
-#define LOG_API(...)
-
-using namespace android;
-using namespace android::renderscript;
-
-static bool IoGetBuffer(const Context *rsc, Allocation *alloc, ANativeWindow *nw) {
-    DrvAllocation *drv = (DrvAllocation *)alloc->mHal.drv;
-    // Must lock the whole surface
-    if(drv->wndBuffer == NULL) {
-        drv->wndBuffer = new ANativeWindow_Buffer;
-    }
-    int32_t r = ANativeWindow_lock(nw, drv->wndBuffer, NULL);
-    if (r) {
-        LOG_API("Error Locking IO output buffer.");
-        return false;
-    }
-
-    void *dst = drv->wndBuffer->bits;
-    alloc->mHal.drvState.lod[0].mallocPtr = dst;
-    alloc->mHal.drvState.lod[0].stride = drv->wndBuffer->stride * alloc->mHal.state.elementSizeBytes;
-    return true;
-}
-
-extern "C" void rscAllocationSetSurface(RsContext rscR, RsAllocation allocR, ANativeWindow *nw) {
-    Context *rsc = (Context *)rscR;
-    Allocation *alloc = (Allocation *)allocR;
-    DrvAllocation *drv = (DrvAllocation *)alloc->mHal.drv;
-
-    // Cleanup old surface if there is one.
-    if (drv->wndSurface) {
-        ANativeWindow *old = drv->wndSurface;
-        ANativeWindow_unlockAndPost(old);
-        drv->wndSurface = NULL;
-        ANativeWindow_release(old);
-        old = NULL;
-    }
-
-    if (nw != NULL) {
-        int32_t r;
-        r = ANativeWindow_setBuffersGeometry(nw, alloc->mHal.drvState.lod[0].dimX,
-                                                 alloc->mHal.drvState.lod[0].dimY,
-                                                 WINDOW_FORMAT_RGBA_8888);
-        if (r) {
-            LOG_API("Error setting IO output buffer geometry.");
-            goto errorcmp;
-        }
-
-        IoGetBuffer(rsc, alloc, nw);
-        drv->wndSurface = nw;
-    }
-
-    return;
-
- errorcmp:
-
-    if (nw) {
-        nw = NULL;
-    }
-
-}
-
-extern "C" void rscAllocationDestroy(const Context *rsc, Allocation *alloc) {
-    DrvAllocation *drv = (DrvAllocation *)alloc->mHal.drv;
-    if (alloc->mHal.drvState.lod[0].mallocPtr) {
-        // don't free user-allocated ptrs or IO_OUTPUT buffers
-        if (!(drv->useUserProvidedPtr) &&
-            !(alloc->mHal.state.usageFlags & RS_ALLOCATION_USAGE_IO_INPUT) &&
-            !(alloc->mHal.state.usageFlags & RS_ALLOCATION_USAGE_IO_OUTPUT)) {
-                free(alloc->mHal.drvState.lod[0].mallocPtr);
-        }
-        alloc->mHal.drvState.lod[0].mallocPtr = NULL;
-    }
-
-    if ((alloc->mHal.state.usageFlags & RS_ALLOCATION_USAGE_IO_OUTPUT) &&
-        (alloc->mHal.state.usageFlags & RS_ALLOCATION_USAGE_SCRIPT)) {
-        ANativeWindow *nw = drv->wndSurface;
-        if (nw) {
-            //If we have an attached surface, need to release it.
-            ANativeWindow_unlockAndPost(nw);
-            drv->wndSurface = NULL;
-            ANativeWindow_release(nw);
-            nw = NULL;
-        }
-    }
-}
-
-extern "C" void rscAllocationIoSend(const Context *rsc, Allocation *alloc) {
-    DrvAllocation *drv = (DrvAllocation *)alloc->mHal.drv;
-    ANativeWindow *nw = drv->wndSurface;
-    if (nw) {
-        if (alloc->mHal.state.usageFlags & RS_ALLOCATION_USAGE_SCRIPT) {
-            int32_t r = ANativeWindow_unlockAndPost(nw);
-            if (r) {
-                LOG_API("Error sending IO output buffer.");
-                return;
-            }
-            IoGetBuffer(rsc, alloc, nw);
-        }
-    } else {
-        LOG_API("Sent IO buffer with no attached surface.");
-        return;
-    }
-}
-
diff --git a/v8/renderscript/rs_support/Android.mk b/v8/renderscript/rs_support/Android.mk
deleted file mode 100644
index de8fae0..0000000
--- a/v8/renderscript/rs_support/Android.mk
+++ /dev/null
@@ -1,189 +0,0 @@
-
-LOCAL_PATH:=frameworks/rs
-rs_base_CFLAGS := -Werror -Wall -Wno-unused-parameter -Wno-unused-variable \
-		  -Wno-overloaded-virtual -DRS_COMPATIBILITY_LIB -std=c++11
-
-ifeq ($(ARCH_ARM_HAVE_NEON),true)
-rs_base_CFLAGS += -DARCH_ARM_HAVE_NEON
-endif
-
-ifeq ($(TARGET_BUILD_PDK), true)
-  rs_base_CFLAGS += -D__RS_PDK__
-endif
-
-# Build rsg-generator ====================
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := rsg-generator_support
-
-# These symbols are normally defined by BUILD_XXX, but we need to define them
-# here so that local-intermediates-dir works.
-
-LOCAL_IS_HOST_MODULE := true
-LOCAL_MODULE_CLASS := EXECUTABLES
-intermediates := $(local-intermediates-dir)
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES:= \
-    spec.l \
-    rsg_generator.c
-
-LOCAL_CXX_STL := none
-LOCAL_SANITIZE := never
-
-include $(BUILD_HOST_EXECUTABLE)
-
-# TODO: This should go into build/core/config.mk
-RSG_GENERATOR_SUPPORT:=$(LOCAL_BUILT_MODULE)
-
-include $(CLEAR_VARS)
-LOCAL_CLANG := true
-LOCAL_MODULE := libRSSupport
-LOCAL_SDK_VERSION := 9
-
-
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-generated_sources_dir := $(call local-generated-sources-dir)
-
-# Generate custom headers
-
-GEN := $(addprefix $(generated_sources_dir)/, \
-            rsgApiStructs.h \
-            rsgApiFuncDecl.h \
-        )
-
-$(GEN) : PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN) : PRIVATE_CUSTOM_TOOL = cat $(PRIVATE_PATH)/rs.spec $(PRIVATE_PATH)/rs_compat.spec | $(RSG_GENERATOR_SUPPORT) $< $@
-$(GEN) : $(RSG_GENERATOR_SUPPORT) $(LOCAL_PATH)/rs.spec $(LOCAL_PATH)/rs_compat.spec
-$(GEN): $(generated_sources_dir)/%.h : $(LOCAL_PATH)/%.h.rsg
-	$(transform-generated-source)
-
-# used in jni/Android.mk
-rs_generated_source += $(GEN)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-# Generate custom source files
-
-GEN := $(addprefix $(generated_sources_dir)/, \
-            rsgApi.cpp \
-            rsgApiReplay.cpp \
-        )
-
-$(GEN) : PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN) : PRIVATE_CUSTOM_TOOL = cat $(PRIVATE_PATH)/rs.spec $(PRIVATE_PATH)/rs_compat.spec | $(RSG_GENERATOR_SUPPORT) $< $@
-$(GEN) : $(RSG_GENERATOR_SUPPORT) $(LOCAL_PATH)/rs.spec $(LOCAL_PATH)/rs_compat.spec
-$(GEN): $(generated_sources_dir)/%.cpp : $(LOCAL_PATH)/%.cpp.rsg
-	$(transform-generated-source)
-
-# used in jni/Android.mk
-rs_generated_source += $(GEN)
-
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-LOCAL_SRC_FILES:= \
-	rsAllocation.cpp \
-	rsApiAllocation.cpp \
-	rsApiContext.cpp \
-	rsApiDevice.cpp \
-	rsApiElement.cpp \
-	rsApiType.cpp \
-	rsClosure.cpp \
-	rsCompatibilityLib.cpp \
-	rsComponent.cpp \
-	rsContext.cpp \
-	rsCppUtils.cpp \
-	rsDevice.cpp \
-	rsDriverLoader.cpp \
-	rsElement.cpp \
-	rsFifoSocket.cpp \
-	rsObjectBase.cpp \
-	rsMatrix2x2.cpp \
-	rsMatrix3x3.cpp \
-	rsMatrix4x4.cpp \
-	rsMutex.cpp \
-	rsSampler.cpp \
-	rsScript.cpp \
-	rsScriptC.cpp \
-	rsScriptC_Lib.cpp \
-	rsScriptGroup.cpp \
-	rsScriptGroup2.cpp \
-	rsScriptIntrinsic.cpp \
-	rsSignal.cpp \
-	rsStream.cpp \
-	rsThreadIO.cpp \
-	rsType.cpp \
-	driver/rsdAllocation.cpp \
-	driver/rsdBcc.cpp \
-	driver/rsdCore.cpp \
-	driver/rsdElement.cpp \
-	driver/rsdRuntimeStubs.cpp \
-	driver/rsdSampler.cpp \
-	driver/rsdScriptGroup.cpp \
-	driver/rsdType.cpp \
-	cpu_ref/rsCpuCore.cpp \
-	cpu_ref/rsCpuExecutable.cpp \
-	cpu_ref/rsCpuScript.cpp \
-	cpu_ref/rsCpuRuntimeMath.cpp \
-	cpu_ref/rsCpuScriptGroup.cpp \
-	cpu_ref/rsCpuScriptGroup2.cpp \
-	cpu_ref/rsCpuIntrinsic.cpp \
-	cpu_ref/rsCpuIntrinsic3DLUT.cpp \
-	cpu_ref/rsCpuIntrinsicBlend.cpp \
-	cpu_ref/rsCpuIntrinsicBlur.cpp \
-	cpu_ref/rsCpuIntrinsicBLAS.cpp \
-	cpu_ref/rsCpuIntrinsicColorMatrix.cpp \
-	cpu_ref/rsCpuIntrinsicConvolve3x3.cpp \
-	cpu_ref/rsCpuIntrinsicConvolve5x5.cpp \
-	cpu_ref/rsCpuIntrinsicHistogram.cpp \
-	cpu_ref/rsCpuIntrinsicLUT.cpp \
-	cpu_ref/rsCpuIntrinsicResize.cpp \
-	cpu_ref/rsCpuIntrinsicYuvToRGB.cpp
-
-ifeq ($(ARCH_ARM_HAVE_ARMV7A),true)
-LOCAL_CFLAGS_arm := -DARCH_ARM_HAVE_VFP -DARCH_ARM_USE_INTRINSICS
-LOCAL_ASFLAGS_arm := -mfpu=neon
-LOCAL_SRC_FILES_arm := \
-    cpu_ref/rsCpuIntrinsics_neon_3DLUT.S \
-    cpu_ref/rsCpuIntrinsics_neon_Blend.S \
-    cpu_ref/rsCpuIntrinsics_neon_Blur.S \
-    cpu_ref/rsCpuIntrinsics_neon_ColorMatrix.S \
-    cpu_ref/rsCpuIntrinsics_neon_Convolve.S \
-    cpu_ref/rsCpuIntrinsics_neon_Resize.S \
-    cpu_ref/rsCpuIntrinsics_neon_YuvToRGB.S
-endif
-
-LOCAL_CFLAGS_arm64 += \
-    -DARCH_ARM_USE_INTRINSICS \
-    -DARCH_ARM64_USE_INTRINSICS \
-    -DARCH_ARM64_HAVE_NEON
-LOCAL_SRC_FILES_arm64 += \
-    cpu_ref/rsCpuIntrinsics_advsimd_3DLUT.S \
-    cpu_ref/rsCpuIntrinsics_advsimd_Blend.S \
-    cpu_ref/rsCpuIntrinsics_advsimd_Blur.S \
-    cpu_ref/rsCpuIntrinsics_advsimd_ColorMatrix.S \
-    cpu_ref/rsCpuIntrinsics_advsimd_Convolve.S \
-    cpu_ref/rsCpuIntrinsics_advsimd_Resize.S \
-    cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S
-
-LOCAL_CFLAGS_x86 += -DARCH_X86_HAVE_SSSE3
-LOCAL_SRC_FILES_x86 += cpu_ref/rsCpuIntrinsics_x86.cpp
-LOCAL_CFLAGS_x86_64 += -DARCH_X86_HAVE_SSSE3
-LOCAL_SRC_FILES_x86_64 += cpu_ref/rsCpuIntrinsics_x86.cpp
-
-LOCAL_REQUIRED_MODULES := libblasV8
-LOCAL_STATIC_LIBRARIES := libbnnmlowpV8
-LOCAL_LDFLAGS += -llog -ldl -Wl,--exclude-libs,libc++_static.a
-LOCAL_NDK_STL_VARIANT := c++_static
-
-LOCAL_C_INCLUDES += external/cblas/include
-LOCAL_C_INCLUDES += external/gemmlowp/eight_bit_int_gemm
-
-LOCAL_CFLAGS += $(rs_base_CFLAGS) -DGEMMLOWP_USE_STLPORT
-
-LOCAL_MODULE:= libRSSupport
-LOCAL_MODULE_TAGS := optional
-
-# TODO: why isn't this picked up from the host GLOBAL_CFLAGS?
-LOCAL_CFLAGS += -D__STDC_FORMAT_MACROS
-
-include $(BUILD_SHARED_LIBRARY)