CredentialsCase[] (Class<T> languageContributionClass, CredentialsCase... cases) { List<CredentialsCase> exCases = new ArrayList<>(); for (final CredentialsLanguageContribution contribution : CredentialsLanguageContribution.EP_NAME.getExtensions()) { if (contribution.getLanguageContributionClass() == languageContributionClass) { exCases.add(new CredentialsCase() { @Override public CredentialsType getType() { return contribution.getType(); } @Override public void process(Object credentials) { processLanguageContribution((T)contribution, credentials); } }); } } return ArrayUtil.mergeArrays(cases, exCases.toArray(new CredentialsCase[0])); }