code: def main_target_usage_requirements (self, specification, project):
          
          assert is_iterable_typed(specification, basestring)
          assert isinstance(project, ProjectTarget)
          project_usage_requirements = project.get ('usage-requirements')
  
          # We don't use 'refine-from-user-input' because I'm not sure if:
          # - removing of parent's usage requirements makes sense
          # - refining of usage requirements is not needed, since usage requirements
          #   are always free.
          usage_requirements = property_set.create_from_user_input(
              specification, project.project_module(), project.get("location"))
  
          return project_usage_requirements.add (usage_requirements)
docs: Returns the use requirement to use when declaraing a main target,
              which are obtained by
              - translating all specified property paths, and
              - adding project's usage requirements
              specification:  Use-properties explicitly specified for a main target
              project:        Project where the main target is to be declared