private TypeSpecificConfigModel createLocalTypeSpecific(
     RepoType type, LocalRepoDescriptor descriptor) {
   MavenTypeSpecificConfigModel mavenModel = null;
   TypeSpecificConfigModel model = null;
   switch (type) {
     case Bower:
       model = new BowerTypeSpecificConfigModel();
       break;
     case Docker:
       DockerTypeSpecificConfigModel dockerType = new DockerTypeSpecificConfigModel();
       DockerApiVersion dockerApiVersion = descriptor.getDockerApiVersion();
       if (dockerApiVersion != null) {
         dockerType.setDockerApiVersion(dockerApiVersion);
       }
       dockerType.setForceDockerAuthentication(descriptor.isForceDockerAuthentication());
       model = dockerType;
       break;
     case NuGet:
       NugetTypeSpecificConfigModel nugetType = new NugetTypeSpecificConfigModel();
       populateSharedNuGetValues(nugetType, descriptor);
       nugetType.setMaxUniqueSnapshots(descriptor.getMaxUniqueSnapshots());
       model = nugetType;
       break;
     case Npm:
       model = new NpmTypeSpecificConfigModel();
       break;
     case Pypi:
       model = new PypiTypeSpecificConfigModel();
       break;
     case Vagrant:
       model = new VagrantTypeSpecificConfigModel();
       break;
     case GitLfs:
       model = new GitLfsTypeSpecificConfigModel();
       break;
     case Debian:
       DebTypeSpecificConfigModel debType = new DebTypeSpecificConfigModel();
       debType.setTrivialLayout(descriptor.isDebianTrivialLayout());
       model = debType;
       break;
     case YUM:
       YumTypeSpecificConfigModel yumType = new YumTypeSpecificConfigModel();
       yumType.setMetadataFolderDepth(descriptor.getYumRootDepth());
       yumType.setGroupFileNames(descriptor.getYumGroupFileNames());
       yumType.setAutoCalculateYumMetadata(descriptor.isCalculateYumMetadata());
       model = yumType;
       break;
     case Gems:
       model = new GemsTypeSpecificConfigModel();
       break;
     case Generic:
       model = new GenericTypeSpecificConfigModel();
       break;
     case Maven:
       mavenModel = new MavenTypeSpecificConfigModel();
       break;
     case Gradle:
       mavenModel = new GradleTypeSpecificConfigModel();
       break;
     case Ivy:
       mavenModel = new IvyTypeSpecificConfigModel();
       break;
     case SBT:
       mavenModel = new SbtTypeSpecificConfigModel();
       break;
   }
   if (model != null) {
     return model;
   }
   // We will get here only if our model is maven / gradle / ivy / sbt and we populate the values
   populateMavenLocalValues(mavenModel, descriptor);
   return mavenModel;
 }