code: public String build() {
          if (locus == null && tree.isEmpty()) {
              throw new IllegalStateException("must call locus(String) or allele(String) at least once");
          }
          if (tree.isEmpty()) {
              return locus;
          }
          String glstring = tree.toString();
          char last = glstring.charAt(glstring.length() - 1);
          if (operators.matches(last)) {
              throw new IllegalStateException("last element of a glstring must not be an operator, was " + last);
          }
          return glstring;
      }
docs: Build and return a new GL String configured from the properties of this GL String builder.
  
  @return a new GL String configured from the properties of this GL String builder
  @throws IllegalStateException if {@link #locus(String)} or {@link #allele(String)} has not been called at least once
  @throws IllegalStateException if the last call was an operator ({@link #allelicAmbiguity()}, {@link #inPhase()},
  {@link #plus()}, {@link #genotypicAmbiguity()}, and {@link #locus(String)})