class A {
A(int x);
A.y(int x);
}

class B extends A {
B(int x) : assert(x > 0) super(x);
}

class B2 extends A {
B2(int x) : assert(x > 0) super.y(x);
}

class B3 extends A {
B3(int x) : assert(x > 0) this.y(x);
B3.y(int x);
}

class C extends A {
int y;
C(int x) : assert(x > 0) y = 2*21;
}

class D extends A {
D(int x) : assert(x > 0) assert(x - 1 > 0);
}

class E extends A {
final int y;
E(int x) : assert(x > 0) this.y = x*2;
}


class[KeywordToken] A[StringToken] {[BeginToken]
A[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken];[SimpleToken]
A[StringToken].[SimpleToken]y[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]

class[KeywordToken] B[StringToken] extends[KeywordToken] A[StringToken] {[BeginToken]
B[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]x[StringToken] >[SimpleToken] 0[StringToken])[SimpleToken] super[KeywordToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]

class[KeywordToken] B2[StringToken] extends[KeywordToken] A[StringToken] {[BeginToken]
B2[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]x[StringToken] >[SimpleToken] 0[StringToken])[SimpleToken] super[KeywordToken].[SimpleToken]y[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]

class[KeywordToken] B3[StringToken] extends[KeywordToken] A[StringToken] {[BeginToken]
B3[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]x[StringToken] >[SimpleToken] 0[StringToken])[SimpleToken] this[KeywordToken].[SimpleToken]y[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
B3[StringToken].[SimpleToken]y[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]

class[KeywordToken] C[StringToken] extends[KeywordToken] A[StringToken] {[BeginToken]
int[StringToken] y[StringToken];[SimpleToken]
C[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]x[StringToken] >[SimpleToken] 0[StringToken])[SimpleToken] y[StringToken] =[SimpleToken] 2[StringToken]*[SimpleToken]21[StringToken];[SimpleToken]
}[SimpleToken]

class[KeywordToken] D[StringToken] extends[KeywordToken] A[StringToken] {[BeginToken]
D[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]x[StringToken] >[SimpleToken] 0[StringToken])[SimpleToken] assert[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken] >[SimpleToken] 0[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]

class[KeywordToken] E[StringToken] extends[KeywordToken] A[StringToken] {[BeginToken]
final[KeywordToken] int[StringToken] y[StringToken];[SimpleToken]
E[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]x[StringToken] >[SimpleToken] 0[StringToken])[SimpleToken] this[KeywordToken].[SimpleToken]y[StringToken] =[SimpleToken] x[StringToken]*[SimpleToken]2[StringToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]
