class Attribute implements Serializable, Cloneable {

    public void inherit(Attribute attribute) {
        if (value == null) {
            value = attribute.getValue();
        }
        Expression targetExpressionObject = attribute.getExpressionObject();
        if (targetExpressionObject != null
                && (expressionObject == null || expressionObject
                        .getExpression() == null)) {
            expressionObject = new Expression(targetExpressionObject);
        }
        if (roles == null || roles.isEmpty()) {
            roles = attribute.getRoles();
        }
        if (renderer == null) {
            renderer = attribute.getRenderer();
        }
    }

    public  Attribute();
    public  Attribute(Object value);
    public  Attribute(Attribute attribute);
    public  Attribute(Object value, String role);
    public  Attribute(Object value, Expression expression, String role, String rendererName);

}