// Path: systemlib/src/main/java/android/view/DisplayListCanvas.java
// public class DisplayListCanvas extends Canvas {
// 
//   private static final int POOL_LIMIT = 25;
//   //android 6.0,7.0,7.1,8.0,8.1,9.0
//   private static final Pools.SynchronizedPool<DisplayListCanvas> sPool =
//       new Pools.SynchronizedPool<DisplayListCanvas>(POOL_LIMIT);
// 
//   public void onPreDraw(Rect dirty) {
//   }
// 
//   public void insertReorderBarrier() {
//   }
// 
//   public void insertInorderBarrier() {
//   }
// 
//   public void drawRenderNode(RenderNode renderNode) {
//   }
// }
// 
// Path: systemlib/src/main/java/android/view/HardwareCanvas.java
// public class HardwareCanvas extends Canvas {
// 
//   public void insertReorderBarrier() {
//   }
// 
//   public void insertInorderBarrier() {
//   }
// 
//   public void drawRenderNode(RenderNode renderNode) {
//   }
// }
// 
// Path: systemlib/src/main/java/android/view/RenderNode.java
// public class RenderNode {
//   public DisplayListCanvas start(int width, int height) {
//     return null;
//   }
// 
// //  public HardwareCanvas start(int width, int height,Object...obj) {
// //    return null;
// //  }
// 
//   private RenderNode() {
//   }
// 
//   public static RenderNode create(String name, View owningView) {
//     return null;
//   }
// 
//   public void end(HardwareCanvas canvas) {
//   }
// 
// 
//   public void end(DisplayListCanvas canvas) {
//   }
// 
//   public boolean setAlpha(float alpha) {
//     return false;
//   }
// 
// 
//   public boolean setLeftTopRightBottom(int left, int top, int right, int bottom){
//     return false;
//   }
// 
//   public boolean setOutline( Outline outline) {
//     return false;
//   }
// 
//   public boolean setHasOverlappingRendering(boolean hasOverlappingRendering) {
//     return false;
//   }
// 
//   public boolean setClipToBounds(boolean clipToBounds) {
//     return false;
//   }
//   public boolean isValid() {
//     return false;
//   }
// 
// }


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



public class RenderNodeV21Impl extends RenderNodeCompact {

  private RenderNode renderNode;

  public RenderNodeV21Impl(String name) {
    renderNode = RenderNode.create(name, null);
  }

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

  @Override
  public HardwareCanvas beginRecording(int width, int height) {
    renderNode.setLeftTopRightBottom(0, 0, width, height);
    try {
// Path: systemlib/src/main/java/android/view/DisplayListCanvas.java
// public class DisplayListCanvas extends Canvas {
// 
//   private static final int POOL_LIMIT = 25;
//   //android 6.0,7.0,7.1,8.0,8.1,9.0
//   private static final Pools.SynchronizedPool<DisplayListCanvas> sPool =
//       new Pools.SynchronizedPool<DisplayListCanvas>(POOL_LIMIT);
// 
//   public void onPreDraw(Rect dirty) {
//   }
// 
//   public void insertReorderBarrier() {
//   }
// 
//   public void insertInorderBarrier() {
//   }
// 
//   public void drawRenderNode(RenderNode renderNode) {
//   }
// }
// 
// Path: systemlib/src/main/java/android/view/HardwareCanvas.java
// public class HardwareCanvas extends Canvas {
// 
//   public void insertReorderBarrier() {
//   }
// 
//   public void insertInorderBarrier() {
//   }
// 
//   public void drawRenderNode(RenderNode renderNode) {
//   }
// }
// 
// Path: systemlib/src/main/java/android/view/RenderNode.java
// public class RenderNode {
//   public DisplayListCanvas start(int width, int height) {
//     return null;
//   }
// 
// //  public HardwareCanvas start(int width, int height,Object...obj) {
// //    return null;
// //  }
// 
//   private RenderNode() {
//   }
// 
//   public static RenderNode create(String name, View owningView) {
//     return null;
//   }
// 
//   public void end(HardwareCanvas canvas) {
//   }
// 
// 
//   public void end(DisplayListCanvas canvas) {
//   }
// 
//   public boolean setAlpha(float alpha) {
//     return false;
//   }
// 
// 
//   public boolean setLeftTopRightBottom(int left, int top, int right, int bottom){
//     return false;
//   }
// 
//   public boolean setOutline( Outline outline) {
//     return false;
//   }
// 
//   public boolean setHasOverlappingRendering(boolean hasOverlappingRendering) {
//     return false;
//   }
// 
//   public boolean setClipToBounds(boolean clipToBounds) {
//     return false;
//   }
//   public boolean isValid() {
//     return false;
//   }
// 
// }


// Path: saklib/src/main/java/com/wanjian/sak/system/rendernode/RenderNodeV21Impl.java
import android.graphics.Canvas;
import android.view.DisplayListCanvas;
import android.view.HardwareCanvas;
import android.view.RenderNode;
import java.lang.reflect.Method;

package com.wanjian.sak.system.rendernode;



public class RenderNodeV21Impl extends RenderNodeCompact {

  private RenderNode renderNode;

  public RenderNodeV21Impl(String name) {
    renderNode = RenderNode.create(name, null);
  }

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

  @Override
  public HardwareCanvas beginRecording(int width, int height) {
    renderNode.setLeftTopRightBottom(0, 0, width, height);
    try {
      Method method = RenderNode.class.getDeclaredMethod("start", int.class, int.class);