#![crate_name="issue_3979_traits"]

#![crate_type = "lib"]

pub trait Positioned {
  fn SetX(&mut self, _: isize);
  fn X(&self) -> isize;
}

pub trait Movable: Positioned {
  fn translate(&mut self, dx: isize) {
    let x = self.X() + dx;
    self.SetX(x);
  }
}