public OR(SemanticContext a, SemanticContext b) {Set<SemanticContext> operands = new HashSet<SemanticContext>();if ( a instanceof OR ) operands.addAll(Arrays.asList(((OR)a).opnds));else operands.add(a);if ( b instanceof OR ) operands.addAll(Arrays.asList(((OR)b).opnds));else operands.add(b);List<PrecedencePredicate> precedencePredicates = filterPrecedencePredicates(operands);if (!precedencePredicates.isEmpty()) {PrecedencePredicate reduced = Collections.max(precedencePredicates);operands.add(reduced);}this.opnds = operands.toArray(new SemanticContext[operands.size()]);}