private static double getDoubleImpl(Object o, Double def) {
		try {
			if (o == null) return def;
			if (o instanceof String) return Double.parseDouble((String) o);
			if (o instanceof Number) return ((Number) o).doubleValue();
			if (o instanceof Range) return ((Range) o).randDouble();
			if (o instanceof Boolean) return ((Boolean) o) ? 1 : 0;
		} catch (NumberFormatException e) {}
		Log.w("Object cast error - cannot cast " + o + " to Double.");
		return def;
	}