@Override public Object getArgumentValue(ArgumentInjectorParams params) { if (GenericTypeReflector.isSuperType(setOfStrings, params.getType().getType())) { return params.getResolutionEnvironment().dataFetchingEnvironment.getSelectionSet().get().keySet(); } Class raw = GenericTypeReflector.erase(params.getType().getType()); if (Field.class.equals(raw)) { return params.getResolutionEnvironment().fields.get(0); } if (GenericTypeReflector.isSuperType(listOfFields, params.getType().getType())) { return params.getResolutionEnvironment().fields; } if (ValueMapper.class.isAssignableFrom(raw)) { return params.getResolutionEnvironment().valueMapper; } if (ResolutionEnvironment.class.isAssignableFrom(raw)) { return params.getResolutionEnvironment(); } throw new IllegalArgumentException("Argument of type " + raw.getName() + " can not be injected via @" + GraphQLEnvironment.class.getSimpleName()); }