public boolean refuse(Version first, Version second) {
        if (first.compareTo(second) > 0)
            return refuse(second, first);

        if (first.compareTo(second) == 0)
            return false;

        return refuse(new int[]{  first.getMajor(),  first.getMinor(),  first.getMicro() },
                      new int[]{ second.getMajor(), second.getMinor(), second.getMicro() },
                      0, root, root);
    }
Logic for what platform and compile versions are incompatible.

This class is instantiated with a list of versions which are only compatible with other versions
that are not older than themselves. Each entry in this list is represented by a string, and any
major, minor or micro with the value @{code *} means all versions are such boundaries.
Versions A, B are incompatible iff. there exists an incompatibility boundary X such that
(A &ge; X) &ne; (B &ge; X).

@author jonmv
component/src/main/java/com/yahoo/component/VersionCompatibility.java