@Override
	public boolean getAllPossibleValues(List<Completion> completions, Class<?> targetType, String existingData,
			String optionContext, MethodTarget target) {
		String kind = determineKind(optionContext);
		SpringXDOperations springXDOperations = xdShell.getSpringXDOperations();
		DeployedCriteria criteria = DeployedCriteria.parse(optionContext);

		boolean kindSupported = true;
		try {
			if ("stream".equals(kind)) {
				populate(completions, springXDOperations.streamOperations().list(), criteria, "Streams");
			}
			else if ("job".equals(kind)) {
				populate(completions, springXDOperations.jobOperations().list(), criteria, "Jobs");
			}
			else if ("counter".equals(kind)) {
				populate(completions, springXDOperations.counterOperations().list(), criteria, "Counters");
			}
			else if ("fvc".equals(kind)) {
				populate(completions, springXDOperations.fvcOperations().list(), criteria, "Field Value Counters");
			}
			else if ("gauge".equals(kind)) {
				populate(completions, springXDOperations.gaugeOperations().list(), criteria, "Gauges");
			}
			else if ("rich-gauge".equals(kind)) {
				populate(completions, springXDOperations.richGaugeOperations().list(), criteria, "Rich Gauges");
			}
			else if ("aggregate-counter".equals(kind)) {
				populate(completions, springXDOperations.aggrCounterOperations().list(), criteria, "Aggregate Counters");
			}
			else {
				kindSupported = false;
			}
		}
		catch (Exception e) {
			LOGGER.warn(String.format("Completion unavailable (%s)", e.getMessage()));
			return false;
		}
		Assert.isTrue(kindSupported, "Unsupported kind: " + kind);
		return true;
	}
Option Context of arguments that want to benefit from this converter should have this suffix present, with the
appended part representing the kind of entity they're interested in (<i>e.g.</i> {@code existing-stream}).
spring-xd-shell/src/main/java/org/springframework/xd/shell/converter/ExistingXDEntityConverter.java