class StringColumn extends AbstractStringColumn<StringColumn> {

  @Override
  public StringColumn lag(int n) {

    StringColumn copy = emptyCopy();
    copy.setName(name() + " lag(" + n + ")");

    if (n >= 0) {
      for (int m = 0; m < n; m++) {
        copy.appendMissing();
      }
      for (int i = 0; i < size(); i++) {
        if (i + n >= size()) {
          break;
        }
        copy.appendCell(get(i));
      }
    } else {
      for (int i = -n; i < size(); i++) {
        copy.appendCell(get(i));
      }
      for (int m = 0; m > n; m--) {
        copy.appendMissing();
      }
    }

    return copy;
  }

  private  StringColumn(String name, Collection<String> strings);
  private  StringColumn(String name, DictionaryMap map);
  private  StringColumn(String name);
  private  StringColumn(String name, String[] strings);

}