BottomWaveContainer.smali

.class public Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;
.super Landroid/widget/RelativeLayout;
.source "BottomWaveContainer.java"


# static fields
.field private static a:J

.field private static b:J

.field private static c:I


# instance fields
.field private d:Lcom/dianxinos/optimizer/feed/bottom/Wave;

.field private e:Landroid/widget/RelativeLayout$LayoutParams;

.field private f:I

.field private g:F

.field private h:Landroid/animation/ValueAnimator;

.field private i:Landroid/animation/ValueAnimator;

.field private j:Landroid/view/VelocityTracker;

.field private k:F


# direct methods
.method static constructor <clinit>()V
    .registers 2

    .prologue
    .line 29
    const-wide/16 v0, 0x1f4

    sput-wide v0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->a:J

    .line 30
    const-wide/16 v0, 0x5dc

    sput-wide v0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->b:J

    .line 31
    const/16 v0, 0xc

    sput v0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->c:I

    return-void
.end method

.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
    .registers 4

    .prologue
    .line 46
    invoke-direct {p0, p1, p2}, Landroid/widget/RelativeLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V

    .line 36
    const/4 v0, 0x0

    iput v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->f:I

    .line 38
    const/4 v0, 0x0

    iput v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->g:F

    .line 47
    return-void
.end method

.method static synthetic a(Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;F)F
    .registers 2

    .prologue
    .line 24
    iput p1, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->g:F

    return p1
.end method

.method static synthetic a(Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;)I
    .registers 2

    .prologue
    .line 24
    iget v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->f:I

    return v0
.end method

.method private a(Landroid/content/Context;)V
    .registers 6

    .prologue
    const/16 v3, 0x8

    .line 56
    const v0, 0x7f0e0563

    invoke-virtual {p0, v0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->findViewById(I)Landroid/view/View;

    move-result-object v0

    check-cast v0, Lcom/dianxinos/optimizer/feed/bottom/Wave;

    iput-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->d:Lcom/dianxinos/optimizer/feed/bottom/Wave;

    .line 57
    const v0, 0x7f0e0566

    invoke-virtual {p0, v0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->findViewById(I)Landroid/view/View;

    move-result-object v0

    check-cast v0, Landroid/widget/TextView;

    .line 58
    invoke-static {p1}, Ldxoptimizer/atb;->f(Landroid/content/Context;)I

    move-result v1

    .line 59
    if-lez v1, :cond_50

    .line 60
    invoke-static {v1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V

    .line 61
    invoke-virtual {p1}, Landroid/content/Context;->getAssets()Landroid/content/res/AssetManager;

    move-result-object v1

    const-string v2, "fonts/BaiduMobileGuards9.0-Regular.ttf"

    invoke-static {v1, v2}, Landroid/graphics/Typeface;->createFromAsset(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;

    move-result-object v1

    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V

    .line 70
    :goto_30
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->d:Lcom/dianxinos/optimizer/feed/bottom/Wave;

    invoke-virtual {v0}, Lcom/dianxinos/optimizer/feed/bottom/Wave;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams;

    move-result-object v0

    check-cast v0, Landroid/widget/RelativeLayout$LayoutParams;

    iput-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->e:Landroid/widget/RelativeLayout$LayoutParams;

    .line 71
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->e:Landroid/widget/RelativeLayout$LayoutParams;

    iget v0, v0, Landroid/widget/RelativeLayout$LayoutParams;->height:I

    iput v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->f:I

    .line 72
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->d:Lcom/dianxinos/optimizer/feed/bottom/Wave;

    iget v1, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->f:I

    sget v2, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->c:I

    int-to-float v2, v2

    .line 73
    invoke-static {p1, v2}, Ldxoptimizer/cec;->a(Landroid/content/Context;F)F

    move-result v2

    float-to-int v2, v2

    .line 72
    invoke-virtual {v0, p1, v1, v2}, Lcom/dianxinos/optimizer/feed/bottom/Wave;->a(Landroid/content/Context;II)V

    .line 75
    return-void

    .line 64
    :cond_50
    const/4 v1, 0x1

    const/high16 v2, 0x41500000    # 13.0f

    invoke-virtual {v0, v1, v2}, Landroid/widget/TextView;->setTextSize(IF)V

    .line 65
    const v1, 0x7f080708

    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(I)V

    .line 66
    const v0, 0x7f0e0565

    invoke-virtual {p0, v0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->findViewById(I)Landroid/view/View;

    move-result-object v0

    invoke-virtual {v0, v3}, Landroid/view/View;->setVisibility(I)V

    .line 67
    const v0, 0x7f0e0567

    invoke-virtual {p0, v0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->findViewById(I)Landroid/view/View;

    move-result-object v0

    invoke-virtual {v0, v3}, Landroid/view/View;->setVisibility(I)V

    goto :goto_30
.end method

.method static synthetic b(Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;)Landroid/widget/RelativeLayout$LayoutParams;
    .registers 2

    .prologue
    .line 24
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->e:Landroid/widget/RelativeLayout$LayoutParams;

    return-object v0
.end method

.method private b(Landroid/view/MotionEvent;)V
    .registers 3

    .prologue
    .line 182
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    if-nez v0, :cond_a

    .line 183
    invoke-static {}, Landroid/view/VelocityTracker;->obtain()Landroid/view/VelocityTracker;

    move-result-object v0

    iput-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    .line 185
    :cond_a
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    invoke-virtual {v0, p1}, Landroid/view/VelocityTracker;->addMovement(Landroid/view/MotionEvent;)V

    .line 187
    return-void
.end method

.method static synthetic c(Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;)Lcom/dianxinos/optimizer/feed/bottom/Wave;
    .registers 2

    .prologue
    .line 24
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->d:Lcom/dianxinos/optimizer/feed/bottom/Wave;

    return-object v0
.end method

.method private c()V
    .registers 5

    .prologue
    .line 126
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    if-eqz v0, :cond_d

    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->isRunning()Z

    move-result v0

    if-eqz v0, :cond_d

    .line 148
    :goto_c
    return-void

    .line 129
    :cond_d
    const/4 v0, 0x2

    new-array v0, v0, [F

    const/4 v1, 0x0

    iget-object v2, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->d:Lcom/dianxinos/optimizer/feed/bottom/Wave;

    invoke-virtual {v2}, Lcom/dianxinos/optimizer/feed/bottom/Wave;->getMeasuredHeight()I

    move-result v2

    int-to-float v2, v2

    aput v2, v0, v1

    const/4 v1, 0x1

    iget v2, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->f:I

    mul-int/lit8 v2, v2, 0x3

    int-to-float v2, v2

    aput v2, v0, v1

    invoke-static {v0}, Landroid/animation/ValueAnimator;->ofFloat([F)Landroid/animation/ValueAnimator;

    move-result-object v0

    iput-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    .line 130
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    new-instance v1, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer$1;

    invoke-direct {v1, p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer$1;-><init>(Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;)V

    invoke-virtual {v0, v1}, Landroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V

    .line 140
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    new-instance v1, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer$2;

    invoke-direct {v1, p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer$2;-><init>(Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;)V

    invoke-virtual {v0, v1}, Landroid/animation/ValueAnimator;->addListener(Landroid/animation/Animator$AnimatorListener;)V

    .line 146
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    sget-wide v2, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->a:J

    invoke-virtual {v0, v2, v3}, Landroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/ValueAnimator;

    .line 147
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->start()V

    goto :goto_c
.end method

.method private d()V
    .registers 5

    .prologue
    .line 151
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->i:Landroid/animation/ValueAnimator;

    if-eqz v0, :cond_d

    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->i:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->isRunning()Z

    move-result v0

    if-eqz v0, :cond_d

    .line 167
    :goto_c
    return-void

    .line 154
    :cond_d
    const/4 v0, 0x2

    new-array v0, v0, [F

    const/4 v1, 0x0

    iget-object v2, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->d:Lcom/dianxinos/optimizer/feed/bottom/Wave;

    invoke-virtual {v2}, Lcom/dianxinos/optimizer/feed/bottom/Wave;->getMeasuredHeight()I

    move-result v2

    int-to-float v2, v2

    aput v2, v0, v1

    const/4 v1, 0x1

    iget v2, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->f:I

    int-to-float v2, v2

    aput v2, v0, v1

    invoke-static {v0}, Landroid/animation/ValueAnimator;->ofFloat([F)Landroid/animation/ValueAnimator;

    move-result-object v0

    iput-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->i:Landroid/animation/ValueAnimator;

    .line 155
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->i:Landroid/animation/ValueAnimator;

    new-instance v1, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer$3;

    invoke-direct {v1, p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer$3;-><init>(Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;)V

    invoke-virtual {v0, v1}, Landroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V

    .line 165
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->i:Landroid/animation/ValueAnimator;

    sget-wide v2, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->b:J

    invoke-virtual {v0, v2, v3}, Landroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/ValueAnimator;

    .line 166
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->i:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->start()V

    goto :goto_c
.end method

.method static synthetic d(Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;)V
    .registers 1

    .prologue
    .line 24
    invoke-direct {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->d()V

    return-void
.end method

.method private e()V
    .registers 2

    .prologue
    .line 170
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->i:Landroid/animation/ValueAnimator;

    if-eqz v0, :cond_11

    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->i:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->isRunning()Z

    move-result v0

    if-eqz v0, :cond_11

    .line 171
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->i:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->cancel()V

    .line 173
    :cond_11
    return-void
.end method

.method private f()V
    .registers 2

    .prologue
    .line 176
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    if-eqz v0, :cond_11

    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->isRunning()Z

    move-result v0

    if-eqz v0, :cond_11

    .line 177
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->h:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->cancel()V

    .line 179
    :cond_11
    return-void
.end method


# virtual methods
.method public a()V
    .registers 3

    .prologue
    .line 113
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->getScrollVelocity()I

    move-result v0

    const/16 v1, -0x1f4

    if-ge v0, v1, :cond_f

    .line 114
    invoke-direct {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->c()V

    .line 118
    :goto_b
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->b()V

    .line 119
    return-void

    .line 116
    :cond_f
    invoke-direct {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->d()V

    goto :goto_b
.end method

.method public a(F)V
    .registers 2

    .prologue
    .line 78
    iput p1, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->k:F

    .line 79
    return-void
.end method

.method public a(Landroid/view/MotionEvent;)V
    .registers 2

    .prologue
    .line 122
    invoke-direct {p0, p1}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->b(Landroid/view/MotionEvent;)V

    .line 123
    return-void
.end method

.method public b()V
    .registers 2

    .prologue
    .line 190
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    if-eqz v0, :cond_11

    .line 191
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    invoke-virtual {v0}, Landroid/view/VelocityTracker;->clear()V

    .line 192
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    invoke-virtual {v0}, Landroid/view/VelocityTracker;->recycle()V

    .line 193
    const/4 v0, 0x0

    iput-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    .line 195
    :cond_11
    return-void
.end method

.method public b(F)V
    .registers 5

    .prologue
    .line 85
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->getScrollVelocity()I

    move-result v0

    const/16 v1, -0x1f4

    if-ge v0, v1, :cond_f

    .line 86
    invoke-direct {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->e()V

    .line 87
    invoke-direct {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->c()V

    .line 107
    :cond_e
    :goto_e
    return-void

    .line 89
    :cond_f
    invoke-direct {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->f()V

    .line 90
    invoke-direct {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->e()V

    .line 91
    iget v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->k:F

    sub-float/2addr v0, p1

    float-to-int v0, v0

    .line 92
    if-ltz v0, :cond_e

    .line 95
    iput p1, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->k:F

    .line 96
    iget v1, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->g:F

    int-to-float v2, v0

    add-float/2addr v1, v2

    iput v1, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->g:F

    .line 97
    iget v1, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->g:F

    iget v2, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->f:I

    mul-int/lit8 v2, v2, 0x2

    int-to-float v2, v2

    cmpl-float v1, v1, v2

    if-gez v1, :cond_e

    .line 100
    iget-object v1, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->e:Landroid/widget/RelativeLayout$LayoutParams;

    iget v2, v1, Landroid/widget/RelativeLayout$LayoutParams;->height:I

    add-int/2addr v0, v2

    iput v0, v1, Landroid/widget/RelativeLayout$LayoutParams;->height:I

    .line 104
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->d:Lcom/dianxinos/optimizer/feed/bottom/Wave;

    iget-object v1, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->e:Landroid/widget/RelativeLayout$LayoutParams;

    iget v1, v1, Landroid/widget/RelativeLayout$LayoutParams;->height:I

    invoke-virtual {v0, v1}, Lcom/dianxinos/optimizer/feed/bottom/Wave;->a(I)V

    .line 105
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->requestLayout()V

    goto :goto_e
.end method

.method public getScrollVelocity()I
    .registers 3

    .prologue
    .line 198
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    if-eqz v0, :cond_13

    .line 199
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    const/16 v1, 0x3e8

    invoke-virtual {v0, v1}, Landroid/view/VelocityTracker;->computeCurrentVelocity(I)V

    .line 200
    iget-object v0, p0, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->j:Landroid/view/VelocityTracker;

    invoke-virtual {v0}, Landroid/view/VelocityTracker;->getYVelocity()F

    move-result v0

    float-to-int v0, v0

    .line 202
    :goto_12
    return v0

    :cond_13
    const/4 v0, 0x0

    goto :goto_12
.end method

.method protected onFinishInflate()V
    .registers 2

    .prologue
    .line 51
    invoke-super {p0}, Landroid/widget/RelativeLayout;->onFinishInflate()V

    .line 52
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->getContext()Landroid/content/Context;

    move-result-object v0

    invoke-direct {p0, v0}, Lcom/dianxinos/optimizer/feed/bottom/BottomWaveContainer;->a(Landroid/content/Context;)V

    .line 53
    return-void
.end method