// avoid unnecessary object creation if possible
PropertyState state = (PropertyState) getItemState();
InternalValue val = state.getValues()[0];
int type = val.getType();
if (type == PropertyType.BOOLEAN) {
return ((Boolean) val.internalValue()).booleanValue();
}
// not a BOOLEAN value, delegate conversion to Value object
return val.toJCRValue(session.getNamespaceResolver()).getBoolean();
}