code: @FromString
      public static DateTime parse(String str) {
          return parse(str, ISODateTimeFormat.dateTimeParser().withOffsetParsed());
      }
docs: Parses a {@code DateTime} from the specified string.
  <p>
  This uses {@link ISODateTimeFormat#dateTimeParser()}{@code .withOffsetParsed()}
  which is different to passing a {@code String} to the constructor.
  <p>
  Sometimes this method and {@code new DateTime(str)} return different results.
  This can be confusing as the difference is not visible in {@link #toString()}.
  <p>
  When passed a date-time string without an offset, such as '2010-06-30T01:20',
  both the constructor and this method use the default time-zone.
  As such, {@code DateTime.parse("2010-06-30T01:20")} and
  {@code new DateTime("2010-06-30T01:20"))} are equal.
  <p>
  However, when this method is passed a date-time string with an offset,
  the offset is directly parsed and stored.
  As such, {@code DateTime.parse("2010-06-30T01:20+02:00")} and
  {@code new DateTime("2010-06-30T01:20+02:00"))} are NOT equal.
  The object produced via this method has a zone of {@code DateTimeZone.forOffsetHours(2)}.
  The object produced via the constructor has a zone of {@code DateTimeZone.getDefault()}.
  
  @param str  the string to parse, not null
  @since 2.0