@Override
 public DependencyMetaData withTarget(ComponentSelector target) {
   if (target instanceof ModuleComponentSelector) {
     ModuleComponentSelector moduleTarget = (ModuleComponentSelector) target;
     ModuleVersionSelector requestedVersion =
         DefaultModuleVersionSelector.newSelector(
             moduleTarget.getGroup(), moduleTarget.getModule(), moduleTarget.getVersion());
     return copyWithTarget(moduleTarget, requestedVersion);
   } else if (target instanceof ProjectComponentSelector) {
     return copyWithTarget(target, requested);
   } else {
     throw new AssertionError("Invalid component selector type for substitution: " + target);
   }
 }