@Override
 public boolean canCompose(AtomicWhereClause signatureClause, AtomicWhereClause clause) {
   return ((PropertySetComposition) signatureClause.getCompositionBehaviour()).group
           == ((PropertySetComposition) clause.getCompositionBehaviour()).group
       && matches(signatureClause)
       && matches(clause)
       && signatureClause
           .getInputVariables()
           .iterator()
           .next()
           .getObject()
           .isCompatible(clause.getInputVariables().iterator().next().getObject());
 }
 @Override
 public boolean matches(AtomicWhereClause clause) {
   return clause.getVisualizationClauseList().getWords().size() == 6
       && clause.getVisualizationClauseList().getWords().get(1) instanceof InputVariable
       && clause.getInputVariables().iterator().next().getObject().isTable()
       && clause.getVisualizationClauseList().getWords().get(2) instanceof FixedString
       && (clause.getVisualizationClauseList().getWords().get(3) instanceof FixedString
           || clause.getVisualizationClauseList().getWords().get(3) instanceof OutputVariable)
       && clause.getVisualizationClauseList().getWords().get(4) instanceof OperatorConstant
       && clause.getVisualizationClauseList().getWords().get(5) instanceof Constant;
 }
 @Override
 public List<ConfigurableWord> getKeyWords(AtomicWhereClause clause) {
   return clause.getVisualizationClauseList().getWords().subList(3, 4);
 }