code: public StringAttribute<Owner> substring(int start, int end)
      {
          return new CalculatedStringAttribute<Owner>(new SubstringCalculator(this, start, end));
      }
docs: A lenient substring. If the end is passed the actual end of the string, this returns substring(start, size).
  Some databases may not be lenient; ensure start and end are sensible values.
  Setting end to -1 means to the end of the string
  @param start the start index, inclusive. This is zero based index (the same as Java's String.substring)
  @param end the end index, exclusive
  @return A queriable string attribute