  @Override
  public String toString() {
    if (this.hasContainers.isEmpty())
      return super.toString();
    else
      return 0 == this.ids.length
          ? StringFactory.stepString(this, this.returnClass.getSimpleName().toLowerCase(), this.hasContainers)
          : StringFactory
              .stepString(this, this.returnClass.getSimpleName().toLowerCase(), Arrays.toString(this.ids), this.hasContainers);
  }

  private <X extends Element> Iterator<X> iteratorList(final Iterator<X> iterator) {
    final List<X> list = new ArrayList<>();