class TestCase::SimpleChild extends TestCase::Simple {
  
  allow TestCase::Operator::CopyFields;
  
  has parent_child_duplicate : int;
  
  has z : rw public int;
  
  static method new : TestCase::SimpleChild () {
    return new TestCase::SimpleChild;
  }
  
  static method new_xyz : TestCase::SimpleChild ($x : int, $y : int, $z : int) {
    
    my $simple = new TestCase::SimpleChild;
    $simple->{x} = $x;
    $simple->{y} = $y;
    $simple->{z} = $z;
    
    return $simple;
  }

  method clear : void () {
    $self->SUPER::clear;
    
    $self->{z} = 0;
  }
  
  method DESTROY : void () {
    $self->SUPER::DESTROY();
    
    $TestCase::Simple::DESTROY_VALUE += 2;
    
  }
  
  method arg_object : string ($string : string) {
    return $string;
  }
  
  method arg_object_option : string ($string : string = undef) {
    return $string;
  }
}