/*
 * Copyright (c) 2011-2012, Stephen Colebourne & Michael Nascimento Santos
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *  * Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 *  * Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 *
 *  * Neither the name of JSR-310 nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package javax.time;

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
import java.util.regex.Pattern;
import java.util.zip.ZipInputStream;

import javax.time.calendrical.DateTimeAccessor;

/**
 * Test Class loading.
 * Use "-verbose:class".
 */
public class ClassLoaderTest {

    @SuppressWarnings("rawtypes")
    public static void main(String[] args) {
        Object a = new ConcurrentHashMap();
        a.toString();
        a = new ReentrantLock();
        a.toString();
        a = Pattern.compile("hello[a-z][^f]{2}");
        a.toString();
        a = new HashMap().entrySet();
        a.toString();
        a = new HashMap().values();
        a.toString();
        a = new HashMap().keySet();
        a.toString();
        a = new TreeMap().entrySet();
        a.toString();
        a = new TreeMap().values();
        a.toString();
        a = new TreeMap().keySet();
        a.toString();
        try {
            a = new DataInputStream(new ZipInputStream(new FileInputStream("/a.zip")));
        } catch (FileNotFoundException ex) {
            // ignore
        }
        a.toString();

        System.out.println("************************************************************");
        a = DateTimeAccessor.class;

        System.out.println("************************************************************");
        Month.of(5);

        System.out.println("************************************************************");
        a = LocalDate.class;

        System.out.println("************************************************************");
        LocalDate d = LocalDate.of(2011, 12, 20);

        System.out.println("************************************************************");
        LocalTime t = LocalTime.of(12, 20);

        System.out.println("************************************************************");
        LocalDateTime.of(d, t);

        System.out.println("************************************************************");
        a = GregorianCalendar.class;

        System.out.println("************************************************************");
        new GregorianCalendar();

        System.out.println("************************************************************");
        ZonedDateTime.of(2011, 6, 5, 13, 30, 0, 0, ZoneId.of("Europe/Paris"));

        System.out.println("************************************************************");
    }

}

@@ -1728,16 +1728,74 @@
 eption;%0A
+import java.util.ArrayList;%0Aimport java.util.Collections;%0A
 import j
@@ -1822,16 +1822,16 @@
 lendar;%0A
-
 import j
@@ -2199,16 +2199,18 @@
 arnings(
+%7B 
 %22rawtype
@@ -2211,16 +2211,31 @@
 awtypes%22
+, %22unchecked%22 %7D
 )%0A    pu
@@ -2442,16 +2442,41 @@
 %5Ef%5D%7B2%7D%22)
+.matcher(%22goo%22).matches()
 ;%0A      
@@ -2835,32 +2835,468 @@
   a.toString();%0A
+        a = Collections.unmodifiableMap(new HashMap()).entrySet();%0A        a.toString();%0A        a = Collections.unmodifiableMap(new HashMap()).values();%0A        a.toString();%0A        a = Collections.unmodifiableMap(new HashMap()).keySet();%0A        a.toString();%0A        a = Collections.unmodifiableList(new ArrayList());%0A        a.toString();%0A        a = Collections.unmodifiableList(new ArrayList()).iterator();%0A        a.toString();%0A
         try %7B%0A  
@@ -4217,32 +4217,52 @@
 *****%22);%0A       
+ LocalDateTime ldt =
  LocalDateTime.o
@@ -4631,51 +4631,19 @@
     
-ZonedDateTime.of(2011, 6, 5, 13, 30, 0, 0, 
+ldt.atZone(
 Zone

Enhance class loader test