class BasicAttributeContext implements AttributeContext, Serializable {

    public void addMissing(Map<String, Attribute> defaultAttributes) {
        if (defaultAttributes == null) {
            return;
        }

        if (attributes == null) {
            attributes = new HashMap<String, Attribute>();
            if (cascadedAttributes == null || cascadedAttributes.isEmpty()) {
                attributes.putAll(defaultAttributes);
                return;
            }
        }

        Set<Map.Entry<String, Attribute>> entries = defaultAttributes.entrySet();
        for (Map.Entry<String, Attribute> entry : entries) {
            String key = entry.getKey();
            if (!attributes.containsKey(key)
                    && (cascadedAttributes == null || !cascadedAttributes
                            .containsKey(key))) {
                attributes.put(entry.getKey(), entry.getValue());
            }
        }
    }

    public  BasicAttributeContext();
    public  BasicAttributeContext(Map<String, Attribute> attributes);
    public  BasicAttributeContext(AttributeContext context);
    public  BasicAttributeContext(BasicAttributeContext context);

}