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