code: public GlstringBuilder allele(final String glstring) {
          Node node = new Node();
          node.value = glstring;
          if (tree.isEmpty()) {
              tree.root = node;
          }
          else {
              if (!tree.root.isOperator()) {
                  throw new IllegalStateException("must provide an operator(allelicAmbiguity, inPhase, plus, genotypicAmbiguity, locus) between successive calls to allele(glstring)");
              }
              if (tree.root.left == null) {
                  tree.root.left = node;
              }
              else if (tree.root.right == null) {
                  tree.root.right = node;
              }
              else {
                  // todo:  is this ever reached?
                  throw new IllegalStateException("must provide an operator(allelicAmbiguity, inPhase, plus, genotypicAmbiguity, locus) between successive calls to allele(glstring)");
              }
          }
          return this;
      }
docs: Return this GL String builder configured with the specified allele.  Calls to this method must
  be interspersed by calls to operator methods ({@link #allelicAmbiguity()}, {@link #inPhase()},
  {@link #plus()}, {@link #genotypicAmbiguity()}, and {@link #locus(String)}).
  
  @param glstring allele in GL String format, must not be null
  @return this GL String builder configured with the specified allele
  @throws IllegalStateException if successive calls to this method are made without an interspersed
  call to an operator method ({@link #allelicAmbiguity()}, {@link #inPhase()}, {@link #plus()},
  {@link #genotypicAmbiguity()}, and {@link #locus(String)})