Package-level declarations
Types
Thrown by it.unibo.tuprolog.solve.libs.oop.OverloadSelector.findConstructor (and, through it, by it.unibo.tuprolog.solve.libs.oop.TypeRef.create) when type has no public constructor accepting arguments whose types are compatible with admissibleTypes -- e.g. new_object('java.util.ArrayList', [foo], X) fails this way, since no ArrayList constructor accepts an atom.
Thrown when dealiasingExpression -- e.g. an argument or sub-term where a $Alias expression was expected -- is not actually of the shape $Alias (a compound with functor it.unibo.tuprolog.solve.libs.oop.OOP.DEALIASING_OPERATOR and one argument), such as $(a, b) or $1.
Thrown by it.unibo.tuprolog.solve.libs.oop.OverloadSelector.findMethod (and, through it, by it.unibo.tuprolog.solve.libs.oop.Ref.invoke) when type has no public member named missingMethodName accepting arguments whose types are compatible with admissibleTypes -- e.g. invoking foo on an object whose class declares no such method, or calling an existing method with the wrong number/kind of arguments.
Thrown when dealiasingExpression -- a well-formed $Alias expression, unlike the one triggering MalformedAliasException -- names an alias that no it.unibo.tuprolog.solve.libs.oop.rules.Alias fact currently registers, e.g. $undefined_alias when no alias(undefined_alias, _) clause exists (see register/2 / it.unibo.tuprolog.solve.libs.oop.primitives.Register for registering one).
The base type for every error :oop-lib can run into while bridging Prolog and JVM/Kotlin reflection -- e.g. an unresolvable method/constructor/property overload, a malformed alias expression, or a reflective operation actually throwing.
Wraps whatever Throwable itself threw while being reflectively invoked on receiver -- e.g. a NullPointerException from calling a method on a null-valued field, or any other exception the invoked JVM/Kotlin code raises. On the JVM this unwraps the java.lang.reflect.InvocationTargetException reflection wraps such failures in, so cause is the original exception thrown by the invoked code, not the reflection machinery's own wrapper.
Thrown by it.unibo.tuprolog.solve.libs.oop.OverloadSelector.findProperty (and, through it, by it.unibo.tuprolog.solve.libs.oop.Ref.assign) when type has no public mutable property named missingPropertyName whose setter accepts a value compatible with admissibleTypes -- e.g. assigning to a read-only val, to a non-existent property, or to a property of an incompatible type.
Thrown when the platform's reflection facilities deny access to callable on receiver -- on the JVM, this wraps a kotlin.reflect.full.IllegalCallableAccessException, typically raised when the JVM's own access-control checks (e.g. module boundaries, a SecurityManager) reject an otherwise public, reflectively-resolved member.
Thrown by it.unibo.tuprolog.solve.libs.oop.TermToObjectConverter.convertInto when term cannot be turned into an instance of targetType (or of any type at all, if targetType is null) -- e.g. converting a compound term that is not a recognized as/$ expression, or an it.unibo.tuprolog.solve.libs.oop.ObjectRef whose wrapped object is not a subtype of the requested type.