// Path: lib/com/cowlark/luje/harmony/UCharacter.java
// public class UCharacter
// {
// 	public static String toLowerCase(Locale locale, String s)
// 	{
// 		char[] chars = s.toCharArray();
// 		for (int i = 0; i < chars.length; i++)
// 			chars[i] = Character.toLowerCase(chars[i]);
// 		return new String(chars);
// 	}
// }
// 
// Path: lib/com/cowlark/luje/harmony/VM.java
// public class VM
// {
// 	private static HashMap<String, String> _internSet = new HashMap<String, String>();
// 	
// 	public static synchronized String intern(String s)
// 	{
// 		String si = _internSet.get(s);
// 		if (si != null)
// 			return si;
// 		
// 		_internSet.put(s, s);
// 		return s;
// 	}
// 	
// 	public static void deleteOnExit()
// 	{}
// }


import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;
import java.util.Comparator;
import java.util.Locale;
import com.cowlark.luje.harmony.UCharacter;
import com.cowlark.luje.harmony.VM;
            int subOffset = subString.offset;
            char firstChar = target[subOffset];
            int end = subOffset + subCount;
            while (true) {
                int i = indexOf(firstChar, start);
                if (i == -1 || subCount + i > count) {
                    return -1; // handles subCount > count || start >= count
                }
                int o1 = offset + i, o2 = subOffset;
                while (++o2 < end && value[++o1] == target[o2]) {
                    // Intentionally empty
                }
                if (o2 == end) {
                    return i;
                }
                start = i + 1;
            }
        }
        return start < count ? start : count;
    }

    /**
     * Searches an internal table of strings for a string equal to this string.
     * If the string is not in the table, it is added. Returns the string
     * contained in the table which is equal to this string. The same string
     * object is always returned for strings which are equal.
     * 
     * @return the interned string equal to this string.
     */
    public String intern() {
// Path: lib/com/cowlark/luje/harmony/UCharacter.java
// public class UCharacter
// {
// 	public static String toLowerCase(Locale locale, String s)
// 	{
// 		char[] chars = s.toCharArray();
// 		for (int i = 0; i < chars.length; i++)
// 			chars[i] = Character.toLowerCase(chars[i]);
// 		return new String(chars);
// 	}
// }
// 
// Path: lib/com/cowlark/luje/harmony/VM.java
// public class VM
// {
// 	private static HashMap<String, String> _internSet = new HashMap<String, String>();
// 	
// 	public static synchronized String intern(String s)
// 	{
// 		String si = _internSet.get(s);
// 		if (si != null)
// 			return si;
// 		
// 		_internSet.put(s, s);
// 		return s;
// 	}
// 	
// 	public static void deleteOnExit()
// 	{}
// }


// Path: lib/java/lang/String.java
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;
import java.util.Comparator;
import java.util.Locale;
import com.cowlark.luje.harmony.UCharacter;
import com.cowlark.luje.harmony.VM;

            int subOffset = subString.offset;
            char firstChar = target[subOffset];
            int end = subOffset + subCount;
            while (true) {
                int i = indexOf(firstChar, start);
                if (i == -1 || subCount + i > count) {
                    return -1; // handles subCount > count || start >= count
                }
                int o1 = offset + i, o2 = subOffset;
                while (++o2 < end && value[++o1] == target[o2]) {
                    // Intentionally empty
                }
                if (o2 == end) {
                    return i;
                }
                start = i + 1;
            }
        }
        return start < count ? start : count;
    }

    /**
     * Searches an internal table of strings for a string equal to this string.
     * If the string is not in the table, it is added. Returns the string
     * contained in the table which is equal to this string. The same string
     * object is always returned for strings which are equal.
     * 
     * @return the interned string equal to this string.
     */
    public String intern() {
        return VM.intern(this);