public function snake() {
    if ($this->areTitleCase) {
      foreach ($this->pieces as &$piece) {
        if (preg_match('@^[[:upper:]]+$@', $piece)) {
          // Leave an entirely uppercase piece alone.
          continue;
        }

        $piece = lcfirst($piece);
      }
    }

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