public void op(Object x, Object y) {
        if (x instanceof double[])
            opDouble((double[]) x, (double[]) y);
        else if (x instanceof int[])
            opInt((int[]) x, (int[]) y);
        else if (x instanceof boolean[])
            opBoolean((boolean[]) x, (boolean[]) y);
        else if (x instanceof byte[])
            opByte((byte[]) x, (byte[]) y);
        else if (x instanceof char[])
            opChar((char[]) x, (char[]) y);
        else if (x instanceof short[])
            opShort((short[]) x, (short[]) y);
        else if (x instanceof long[])
            opLong((long[]) x, (long[]) y);
        else if (x instanceof float[])
            opFloat((float[]) x, (float[]) y);
        else
            throw new IllegalArgumentException("Datatype is not supported");
    }