@required_property<EOL><INDENT>def expression(self):<DEDENT>
The feature branch specification provided by the user (a string).

The value of this property is parsed as follows:

- If :attr:`expression` contains two nonempty substrings separated by
  the character ``#`` it is split into two parts where the first part
  is used to set :attr:`location` and the second part is used to set
  :attr:`revision`.

- Otherwise :attr:`expression` is interpreted as a revision without a
  location (in this case :attr:`location` will be :data:`None`).

Some examples to make things more concrete:

>>> from vcs_repo_mgr import FeatureBranchSpec
>>> FeatureBranchSpec(expression='https://github.com/xolox/python-vcs-repo-mgr.git#remote-feature-branch')
FeatureBranchSpec(expression='https://github.com/xolox/python-vcs-repo-mgr.git#remote-feature-branch',
                  location='https://github.com/xolox/python-vcs-repo-mgr.git',
                  revision='remote-feature-branch')
>>> FeatureBranchSpec(expression='local-feature-branch')
FeatureBranchSpec(expression='local-feature-branch',
                  location=None,
                  revision='local-feature-branch')