   import Kernel, except: [match?: 2]
   defstruct [:major, :minor, :patch, :pre, :build]
 
-  @type version     :: String.t | t
-  @type requirement :: String.t | Version.Requirement.t
-  @type major       :: String.t | non_neg_integer
-  @type minor       :: non_neg_integer | nil
-  @type patch       :: non_neg_integer | nil
-  @type pre         :: [String.t | non_neg_integer]
-  @type build       :: String.t | nil
-  @type matchable   :: {major :: major,
-                        minor :: minor,
-                        patch :: patch,
-                        pre   :: pre}
-  @type t           :: %__MODULE__{
-                         major: major,
-                         minor: minor,
-                         patch: patch,
-                         pre:   pre,
-                         build: build}
+  @type version :: String.t() | t
+  @type requirement :: String.t() | Version.Requirement.t()
+  @type major :: String.t() | non_neg_integer
+  @type minor :: non_neg_integer | nil
+  @type patch :: non_neg_integer | nil
+  @type pre :: [String.t() | non_neg_integer]
+  @type build :: String.t() | nil
+  @type matchable :: {major :: major, minor :: minor, patch :: patch, pre :: pre}
+  @type t :: %__MODULE__{major: major, minor: minor, patch: patch, pre: pre, build: build}
 
   defmodule Requirement do
     @moduledoc false

          else
            convert_parts_to_integer(rest, [integer | acc])
          end
        :error ->
          convert_parts_to_integer(rest, [part | acc])
      end

    end

    def message(%{requirement: requirement}) do
      "invalid requirement: #{inspect(requirement)}"
    end
  end

