Support annotations & generic base type
This adds a generic type key for the ObjectCondition
so that a check like this:
require(typeToAdd).isNotNull().passes(subject -> !((Class) subject).isInterface());
can be cleaned up to look like this:
require(typeToAdd).isNotNull().passes(subject -> !subject.isInterface());
It also adds the @CheckResult
annotation so that a line like this:
check(someVar).message("This should not be null");
will be labeled as an error by android studio so that you know to update it to this:
check(someVar).message("This should not be null").isNotNull();