// Tests using the index returned from String.indexOf

class StringIndexOf {

    public static String remove(String l, String s) {
        int i = l.indexOf(s);
        if (i != -1) {
            return l.substring(0, i) + l.substring(i + s.length());
        }
        return l;
    }

    public static String nocheck(String l, String s) {
        int i = l.indexOf(s);
        // :: error: (argument.type.incompatible)
        return l.substring(0, i) + l.substring(i + s.length());
    }

    public static String remove(String l, String s, int from, boolean last) {
        int i = last ? l.lastIndexOf(s, from) : l.indexOf(s, from);
        if (i >= 0) {
            return l.substring(0, i) + l.substring(i + s.length());
        }
        return l;
    }

    public static String stringLiteral(String l) {
        int i = l.indexOf("constant");
        if (i != -1) {
            return l.substring(0, i) + l.substring(i + "constant".length());
        }
        // :: error: (argument.type.incompatible)
        return l.substring(0, i) + l.substring(i + "constant".length());
    }

    public static char character(String l, char c) {
        int i = l.indexOf(c);
        if (i > -1) {
            return l.charAt(i);
        }
        // :: error: (argument.type.incompatible)
        return l.charAt(i);
    }
}
