private String[] filter(String[] candidateCipherSuites, String[] requested, OptionsKey options) {
        List<String> candidates = Arrays.asList(candidateCipherSuites);
        EnumSet<Options> supports = toOptions(options.supports, true);
        EnumSet<Options> requires = toOptions(options.requires, false);
        List<String> result = new ArrayList<String>(requested.length);
        for (String choice : requested) {
            if (!matches(supports, requires, choice)) {
                Tr.warning(tc, "CSIv2_COMMON_CIPHER_SUITE_MISMATCH", choice, getOptions(choice), supports, requires);
            }
            if (candidates.contains(choice)) {
                result.add(choice);
            }
        }
        return result.toArray(new String[result.size()]);
    }
private String [ ] filter ( String [ ] candidateCipherSuites , String [ ] requested , OptionsKey options ) { List < String > candidates = Arrays . asList ( candidateCipherSuites ) ; EnumSet < Options > supports = toOptions ( options . supports , true ) ; EnumSet < Options > requires = toOptions ( options . requires , false ) ; List < String > result = new ArrayList < String > ( requested . length ) ; for ( String choice : requested ) { if ( ! matches ( supports , requires , choice ) ) { Tr . warning ( tc , "CSIv2_COMMON_CIPHER_SUITE_MISMATCH" , choice , getOptions ( choice ) , supports , requires ) ; } if ( candidates . contains ( choice ) ) { result . add ( choice ) ; } } return result . toArray ( new String [ result . size ( ) ] ) ; }
This method will warn if any requested cipher suites appear to not match the options

@param candidateCipherSuites locally supported cipher suites
@param requested cipher suites explicitly configured
@param options association options configured
@return intersection of candidates and requested