refactored checked exception throwing
fixed javadoc error
added support for functional interfaces (like Comparable) that declare java.lang.Object methods