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],[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],[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],[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],[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],[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],[SimpleToken] this[KeywordToken].[SimpleToken]y[StringToken] =[SimpleToken] x[StringToken]*[SimpleToken]2[StringToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]
