code: @Nonnull
      public SoftwareSystem addSoftwareSystem(@Nullable Location location, @Nonnull String name, @Nullable String description) {
          if (getSoftwareSystemWithName(name) == null) {
              SoftwareSystem softwareSystem = new SoftwareSystem();
              softwareSystem.setLocation(location);
              softwareSystem.setName(name);
              softwareSystem.setDescription(description);
  
              softwareSystems.add(softwareSystem);
  
              softwareSystem.setId(idGenerator.generateId(softwareSystem));
              addElementToInternalStructures(softwareSystem);
  
              return softwareSystem;
          } else {
              throw new IllegalArgumentException("A software system named '" + name + "' already exists.");
          }
      }
docs: Creates a software system and adds it to the model.
  
  @param location    the location of the software system (e.g. internal, external, etc)
  @param name        the name of the software system
  @param description a short description of the software system
  @return the SoftwareSystem instance created and added to the model (or null)
  @throws IllegalArgumentException if a software system with the same name already exists