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