/*
 *******************************************************************************
 * Copyright (C) 2005, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */
import java.util.ListResourceBundle;
import com.ibm.icu.impl.ICUListResourceBundle;
/*
 * Eclipse expects the java files in a package-like directory structure to have a package declaration at the top of the file.
 * To fool Eclipse this file has an "jpp" extension. The ant build script copies this file to the default package and renames it
 * before building.
 */ 
/**
 * @author ram
 */

public class TestData_en extends ListResourceBundle {
    public TestData_en() {
        
  }
  private static Object[][] data = new Object[][] { 
              {
                  "aaa",
                 "testcircularalias/aab",
              },
              {
                  "aab",
                  "testcircularalias/aac",
              },
              {
                  "aac",
                  "testcircularalias/aaa",
              } 
  };
  protected Object[][] getContents(){
      return data;
  }
}
