// Path: systemlib/src/main/java/android/graphics/RecordingCanvas.java
// public class RecordingCanvas extends Canvas {
//   private static final int POOL_LIMIT = 25;
//   private static final Pools.SynchronizedPool<RecordingCanvas> sPool =
//       new Pools.SynchronizedPool<>(POOL_LIMIT);
// 
// 
//   public void enableZ() {
//   }
// 
//   public void disableZ() {
//   }
// 
//   public void drawRenderNode(RenderNode renderNode) {
//   }
// }
// 
// Path: systemlib/src/main/java/android/graphics/RenderNode.java
// public class RenderNode {
//   public RenderNode(String name) {
// 
//   }
// 
//   public boolean setLeftTopRightBottom(int left, int top, int right, int bottom) {
//     return false;
//   }
// 
//   public boolean setAlpha(float alpha) {
//     return false;
//   }
// 
//   public boolean setHasOverlappingRendering(boolean hasOverlappingRendering) {
//     return false;
//   }
// 
//   public boolean setClipToBounds(boolean clipToBounds) {
//     return false;
//   }
// 
// 
//   public RecordingCanvas beginRecording(int width, int height) {
//     return null;
//   }
// 
//   public RecordingCanvas beginRecording() {
//     return null;
//   }
// 
// 
//   public void endRecording() {
//   }
// 
//   public boolean hasDisplayList() {
//     throw new IllegalStateException();
//   }
// }


import android.graphics.Canvas;
import android.graphics.RecordingCanvas;
import android.graphics.RenderNode;
import java.lang.reflect.Method;
package com.wanjian.sak.system.rendernode;



public class RenderNodeV29Impl extends RenderNodeCompact {

  private RenderNode renderNode;

  public RenderNodeV29Impl(String name) {
    renderNode = new RenderNode(name);
  }

  @Override
  public void drawRenderNode(Canvas canvas) {
    ((RecordingCanvas) canvas).drawRenderNode(renderNode);
  }

  @Override
// Path: systemlib/src/main/java/android/graphics/RecordingCanvas.java
// public class RecordingCanvas extends Canvas {
//   private static final int POOL_LIMIT = 25;
//   private static final Pools.SynchronizedPool<RecordingCanvas> sPool =
//       new Pools.SynchronizedPool<>(POOL_LIMIT);
// 
// 
//   public void enableZ() {
//   }
// 
//   public void disableZ() {
//   }
// 
//   public void drawRenderNode(RenderNode renderNode) {
//   }
// }
// 
// Path: systemlib/src/main/java/android/graphics/RenderNode.java
// public class RenderNode {
//   public RenderNode(String name) {
// 
//   }
// 
//   public boolean setLeftTopRightBottom(int left, int top, int right, int bottom) {
//     return false;
//   }
// 
//   public boolean setAlpha(float alpha) {
//     return false;
//   }
// 
//   public boolean setHasOverlappingRendering(boolean hasOverlappingRendering) {
//     return false;
//   }
// 
//   public boolean setClipToBounds(boolean clipToBounds) {
//     return false;
//   }
// 
// 
//   public RecordingCanvas beginRecording(int width, int height) {
//     return null;
//   }
// 
//   public RecordingCanvas beginRecording() {
//     return null;
//   }
// 
// 
//   public void endRecording() {
//   }
// 
//   public boolean hasDisplayList() {
//     throw new IllegalStateException();
//   }
// }


// Path: saklib/src/main/java/com/wanjian/sak/system/rendernode/RenderNodeV29Impl.java
import android.graphics.Canvas;
import android.graphics.RecordingCanvas;
import android.graphics.RenderNode;
import java.lang.reflect.Method;

package com.wanjian.sak.system.rendernode;



public class RenderNodeV29Impl extends RenderNodeCompact {

  private RenderNode renderNode;

  public RenderNodeV29Impl(String name) {
    renderNode = new RenderNode(name);
  }

  @Override
  public void drawRenderNode(Canvas canvas) {
    ((RecordingCanvas) canvas).drawRenderNode(renderNode);
  }

  @Override
  public RecordingCanvas beginRecording(int width, int height) {