import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
final class HandshakeCalculator {
private static final int REVERSE_SIGNALS_BIT_POSITION = 4;
List<Signal> calculateHandshake(final int number) {
final List<Signal> result = new ArrayList<>();
for (final Signal signal : Signal.values()) {
if (isBitSet(signal.ordinal(), number)) {
result.add(signal);
}
}
if (isBitSet(REVERSE_SIGNALS_BIT_POSITION, number)) {
Collections.reverse(result);
}
return result;
}
private boolean isBitSet(final int position, final int number) {
return ((number >> position) & 1) == 1;
}
}