package p;

/**
 * @see #takeANumber(Number)
 * @see Sub#takeANumber(Number)
 * @see Sub#takeANumber(Number)
 * @see Unrelated1#takeANumber(Number)
 * @see Unrelated1#takeANumber(Object)
 * @see Unrelated1#takeANumber(Number)
 * @see Unrelated1#takeANumber(Integer)
 * @see Unrelated2#takeANumber(Number)
 */
class A<T>{
    public boolean takeANumber(Number n) {
        return true;
    }
}

class Sub<E extends Number> extends A<E> {
    public boolean takeANumber(Number n) {
        if (n.doubleValue() > 0)
            return false;
        return super.takeANumber(n);
    }
}

class Unrelated1<E extends Number> {
    public boolean takeANumber(Number n) {
        return false;
    }
}

interface Unrelated2<E> {
    boolean takeANumber(Number n);
}

interface Unrelated3<T> {
    boolean takeANumber(Number n);
}
