public static SingleSuccedentSequentOnBitSet buildArraySequent(
      FormulaFactory factory, Collection<Formula> leftFormulas, Formula rightFormula) {
    SingleSuccedentSequentOnBitSet seq = new SingleSuccedentSequentOnBitSet(factory);

    if (leftFormulas != null) for (Formula wff : leftFormulas) seq.addLeft(wff);
    seq.addRight(rightFormula);
    return seq;
  }
  @SuppressWarnings("unchecked")
  @Override
  public SingleSuccedentSequentOnBitSet clone() {
    try {
      SingleSuccedentSequentOnBitSet result = (SingleSuccedentSequentOnBitSet) super.clone();
      result.leftSide = (BitSet) this.leftSide.clone();
      result.leftFormulas = (LinkedList<Formula>[]) new LinkedList[FormulaType.values().length];
      for (int i = 0; i < this.leftFormulas.length; i++)
        if (this.leftFormulas[i] != null)
          result.leftFormulas[i] = (LinkedList<Formula>) this.leftFormulas[i].clone();

      result.rightSide = this.rightSide;
      return result;
    } catch (CloneNotSupportedException e) {
      throw new ImplementationError(e.getMessage());
    }
  }