// Path: nlp/src/main/java/org/ocpsoft/prettytime/nlp/parse/DateGroup.java
// public interface DateGroup
// {
//    /**
//     * Get the line in which this {@link DateGroup} was found.
//     */
//    int getLine();
// 
//    /**
//     * Get the text fragment parsed into this {@link DateGroup}.
//     */
//    String getText();
// 
//    /**
//     * Get the {@link Date} to which this {@link DateGroup} recurs.
//     */
//    Date getRecursUntil();
// 
//    /**
//     * Get the starting position of this {@link DateGroup} in the language text.
//     */
//    int getPosition();
// 
//    /**
//     * Get all {@link Date} instances parsed from the language text.
//     */
//    List<Date> getDates();
// 
//    /**
//     * Return <code>true</code> if this {@link DateGroup} is a recurring event.
//     */
//    boolean isRecurring();
// 
//    /**
//     * If this {@link DateGroup} is recurring, return the interval in milliseconds with which this {@link DateGroup}
//     * recurs, otherwise return -1;
//     */
//    long getRecurInterval();
// }


import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TimeZone;
import org.ocpsoft.prettytime.nlp.parse.DateGroup;
import com.joestelmach.natty.Parser;
      else if (number < 100)
      {
         int unit = number % 10;
         key = tensNames[number / 10] + numNames[unit];
      }
      else
      {
         int unit = number % 10;
         int ten = number % 100 - unit;
         int hundred = (number - ten) / 100;
         if (hundred < 20)
            key = numNames[hundred] + " hundred";
         else
            key = tensNames[hundred / 10] + numNames[hundred % 10] + " hundred";
         if (ten + unit < 20 && ten + unit > 10)
            key += numNames[ten + unit];
         else
            key += tensNames[ten / 10] + numNames[unit];
      }
      return key.trim();
   }

   /**
    * Parse the given language and return a {@link List} with all discovered {@link Date} instances.
    */
   public List<Date> parse(String language)
   {
      language = words2numbers(language);

      List<Date> result = new ArrayList<Date>();
// Path: nlp/src/main/java/org/ocpsoft/prettytime/nlp/parse/DateGroup.java
// public interface DateGroup
// {
//    /**
//     * Get the line in which this {@link DateGroup} was found.
//     */
//    int getLine();
// 
//    /**
//     * Get the text fragment parsed into this {@link DateGroup}.
//     */
//    String getText();
// 
//    /**
//     * Get the {@link Date} to which this {@link DateGroup} recurs.
//     */
//    Date getRecursUntil();
// 
//    /**
//     * Get the starting position of this {@link DateGroup} in the language text.
//     */
//    int getPosition();
// 
//    /**
//     * Get all {@link Date} instances parsed from the language text.
//     */
//    List<Date> getDates();
// 
//    /**
//     * Return <code>true</code> if this {@link DateGroup} is a recurring event.
//     */
//    boolean isRecurring();
// 
//    /**
//     * If this {@link DateGroup} is recurring, return the interval in milliseconds with which this {@link DateGroup}
//     * recurs, otherwise return -1;
//     */
//    long getRecurInterval();
// }


// Path: nlp/src/main/java/org/ocpsoft/prettytime/nlp/PrettyTimeParser.java
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TimeZone;
import org.ocpsoft.prettytime.nlp.parse.DateGroup;
import com.joestelmach.natty.Parser;

      else if (number < 100)
      {
         int unit = number % 10;
         key = tensNames[number / 10] + numNames[unit];
      }
      else
      {
         int unit = number % 10;
         int ten = number % 100 - unit;
         int hundred = (number - ten) / 100;
         if (hundred < 20)
            key = numNames[hundred] + " hundred";
         else
            key = tensNames[hundred / 10] + numNames[hundred % 10] + " hundred";
         if (ten + unit < 20 && ten + unit > 10)
            key += numNames[ten + unit];
         else
            key += tensNames[ten / 10] + numNames[unit];
      }
      return key.trim();
   }

   /**
    * Parse the given language and return a {@link List} with all discovered {@link Date} instances.
    */
   public List<Date> parse(String language)
   {
      language = words2numbers(language);

      List<Date> result = new ArrayList<Date>();
      List<com.joestelmach.natty.DateGroup> groups = parser.parse(language);