class FImage(Struct('w', 'h', 'pos', 'url')): pass
class FGroup(Struct('transform2D', 'forms')): pass
class RGB(Struct('r', 'g', 'b')): pass
class FShape(Struct('shapestyle', 'shape')): pass
class Key(Struct('key', 'modifiers')): pass
class Rect(Shape, Struct(('x', int), ('y', int))): def area(self): return self.x * self.y def peri(self): return 2 * (self.x + self.y)
class Solid(Struct('color')): pass
class Shape(Struct('point_list')): pass
class B(Struct('y')): pass
class Form(Struct('theta', 'scale', 'x', 'y', 'alpha', 'form')): pass
class A(Struct('x')): pass
class S(Struct('n')): def __add__(self, x): return self.n + S(x)
class Cons(Struct('hd', 'tl')): def len(self): return 1 + self.tl.len()
class Line(Struct('linestyle')): pass
class Texture(Struct('url')): pass
class Fill(Struct('fillstyle')): pass
class Grad(Struct('gradient')): pass
class Club(Struct(('name', str), ('members', T.List[Person]))): def foo(self): pass
class Range(Struct('start end')): @rule def from_lessThan_to(self): return self.start < self.end
class Mouse(Struct('position')): pass
class FPath(Struct('linestyle', 'path')): pass
class Circle(Shape, Struct(('r', int))): def area(self): return 3.14 * self.r * self.r def peri(self): return 2 * 3.14 * self.r
class Person(Struct(('name', str), ('age', int), ('cities', T.List[str]))): def walk(self): return "Walk"