class Staff::Record { has Str $.name; has Int $.rank; has Hash $.pref; method CREATE(Str $name, Int $rank, Hash $cereal_pref) { .check_rank($rank); ($.name, $.rank, $.pref) = ($name, $rank, $cereal_pref); } method name() returns Str { return $.name; } method rank() returns Str { return $.rank; } method rank(Int $new_rank) { .check_rank($new_rank); $.rank = $new_rank; } method check_rank(Staff::Record $obj: Int $rank) is private { die "Invalid rank for $obj.class() object: $rank" unless 0 < $rank < 10; } # Other methods here }