def _satisfyVersionByInstallingVersion(name, version_required, working_directory, version, type='<STR_LIT>', inherit_shrinkwrap=None):
assert(version)<EOL>logger.info('<STR_LIT>', version)<EOL>version.unpackInto(working_directory)<EOL>r = _clsForType(type)(working_directory, inherit_shrinkwrap = inherit_shrinkwrap)<EOL>if not r:<EOL><INDENT>raise Exception(<EOL>'<STR_LIT>' % (name, version_required, type)<EOL>)<EOL><DEDENT>if name != r.getName():<EOL><INDENT>raise Exception('<STR_LIT>' % (<EOL>type, name, version_required, r.getName()<EOL>))<EOL><DEDENT>r.runScript('<STR_LIT>')<EOL>return r<EOL>
installs and returns a Component/Target for the specified version requirement into
        'working_directory' using the provided remote version object.
        This function is not normally called via `satisfyVersionByInstalling',
        which looks up a suitable remote version object.