@Override
    public void addComponent(Component component, LayoutParameter... layoutParameters) {
        Set<LayoutParameter> asSet = new HashSet<LayoutParameter>(Arrays.asList(layoutParameters));
        if(asSet.contains(MAXIMIZES_HORIZONTALLY) && asSet.contains(GROWS_HORIZONTALLY))
            throw new IllegalArgumentException("Component " + component + 
                    " cannot be both maximizing and growing horizontally at the same time");
        
        if(asSet.contains(MAXIMIZES_VERTICALLY) && asSet.contains(GROWS_VERTICALLY))
            throw new IllegalArgumentException("Component " + component + 
                    " cannot be both maximizing and growing vertically at the same time");
        
        componentList.add(new LinearLayoutComponent(component, asSet));
    }