 
   @doc """
   Parse a version into a matchable value.
-
-  ## Examples
-
-      iex> Mix.Version.parse("1")
-      1
-      iex> Mix.Version.parse("1.0")
-      1.0
-      iex> Mix.Version.parse("1.0.0")
-      1.0.0
-      iex> Mix.Version.parse("1.0.0+alpha1")
-      1.0.0-alpha1
-      iex> Mix.Version.parse("1.0.0-alpha1")
-      1.0.0-alpha1
-      iex> Mix.Version.parse("1.0.3.4")
-      1.0.3.4
-
   """
   @spec parse(String.t) :: { :ok, Schema.t } | { :error, term }
   def parse(string) when is_binary(string) do


  @doc """
  Checks if a version string is compatible with [semver](http://semver.org/).

  ## Examples

      iex> Mix.Version.valid?("1")
      true
      iex> Mix.Version.valid?("1.0")
      true
      iex> Mix.Version.valid?("1.0.0")
      true
      iex> Mix.Version.valid?("1.0.0+alpha1")
      true
      iex> Mix.Version.valid?("1.0.0-alpha1")
      true
      iex> Mix.Version.valid?("1.0.3.4")
      false

  """
  @spec valid?(String.t | Schema.t) :: boolean
  def valid?(string) when is_binary(string) do


  @doc """
  Get the matchable representation.
  """
  @spec to_matchable(String.t | Schema.t) :: Mix.Version.matchable
  def to_matchable(Schema[major: nil, source: source]) do
