public function camel() {
    if ($this->areTitleCase) {
      // If the pieces are already in title case, lower the case of the first
      // piece only, unless it's in uppercase.
      if (!preg_match('@^[[:upper:]]+$@', $this->pieces[0])) {
        $this->pieces[0] = lcfirst($this->pieces[0]);
      }
    }
    else {
      $first_piece = array_shift($this->pieces);

      $this->pieces = array_map('ucfirst', $this->pieces);

      array_unshift($this->pieces, $first_piece);
    }

    return implode('', $this->pieces);
  }