code: public GlstringBuilder inPhase() {
          if (tree.isEmpty()) {
              throw new IllegalStateException("must call allele(String) before any operator (allelicAmbiguity, inPhase, plus, genotypicAmbiguity, locus)");
          }
          if (tree.root.isOperator() && tree.root.right == null) {
              throw new IllegalStateException("must call allele(String) between successive calls to any operator (allelicAmbiguity, inPhase, plus, genotypicAmbiguity, locus)");
          }
          Node root = new Node();
          root.value = "~";
          root.left = tree.root;
          tree.root = root;
          return this;
      }
docs: Return this GL String builder configured with an in phase operator ('<code>~</code>' character).
  The in phase operator combines two or more allele lists into a haplotype.
  
  <p>As an operator, calls to this method must be interspersed by calls to {@link #allele(String)}.</p>
  
  @return this GL String builder configured with an in phase operator ('<code>~</code>' character)
  @throws IllegalStateException if successive calls to any operator methods ({@link #allelicAmbiguity()},
  {@link #inPhase()}, {@link #plus()}, {@link #genotypicAmbiguity()}, and {@link #locus(String)}) are
  made without an interspersed call to {@link #allele(String)}