} else if (Idents.looksLikeANumber(cssText)) { val = new NumberValue(style, cssName, cssSACUnitType, cssText, cssStringValue);
    public static FSDerivedValue newDerivedValue(CalculatedStyle style,                                                 CSSName cssName,                                                 short cssSACUnitType,                                                 String cssText,                                                 String cssStringValue,                                                 RGBColor rgbColor) {        FSDerivedValue val = null;        // default to copy of parent if inherited; may be overridden in some cases        boolean declaredInherit = cssText.equals("inherit");        if (declaredInherit) {            if (style.getParent().isLengthValue(cssName)) {                val = new InheritedLength((LengthValue) style.getParent().valueByName(cssName));            } else {                // not as bad as it looks; all IdentValues return their                // own instance in copyOf, so they are really singletons                val = style.getParent().copyOf(cssName);            }        } else {            if (cssName == CSSName.BACKGROUND_POSITION) {                val = new PointValue(style, cssName, cssSACUnitType, cssText, cssStringValue);            } else if (COLOR_PROPERTIES.contains(cssName)) {                // TODO: we should probably cache these, as colors will be reused across styles                // and probably won't be too many of them                val = newColor(style, cssName, cssSACUnitType, cssText, cssStringValue, rgbColor);            } else if (STRING_PROPERTIES.contains(cssName)) {                val = new StringValue(style, cssName, cssSACUnitType, cssText, cssStringValue);            } else if (Idents.looksLikeALength(cssText) && !(cssName == CSSName.FONT_WEIGHT)) {                val = new LengthValue(style, cssName, cssSACUnitType, cssText, cssStringValue);            } else if (IDENT_PROPERTIES.contains(cssName) || IdentValue.looksLikeIdent(cssText)) {                val = IdentValue.getByIdentString(cssText);            } else if (Idents.looksLikeANumber(cssText)) {                val = new NumberValue(style, cssName, cssSACUnitType, cssText, cssStringValue);            } else {                throw new XRRuntimeException("Can't determine the dervived value type to use for property " +                        "named '" + cssName + "' with value " + cssText);            }        }        return val;    }