@Override
	public EnumerablePropertySource<?> asPropertySource() {
		final EnumerablePropertySource<?> ps = composedModuleOptions.asPropertySource();

		final String prefix = moduleName + CompositeModule.OPTION_SEPARATOR;

		return new EnumerablePropertySource<Object>(this.toString(), composedModuleOptions) {

			@Override
			public String[] getPropertyNames() {
				Set<String> result = new HashSet<String>();
				for (String name : ps.getPropertyNames()) {
					if (name.startsWith(prefix)) {
						result.add(name.substring(prefix.length()));
					}
				}
				return result.toArray(new String[result.size()]);
			}

			@Override
			public Object getProperty(String name) {
				return ps.getProperty(prefix + name);
			}

			@Override
			public boolean containsProperty(String name) {
				return ps.containsProperty(prefix + name);
			}
		};
	}
A decorator on another instance of {@link ModuleOptions} (in practice, one representing options to a composed module)
that will filter and remap property values exposed through its property source. Only values starting with a given
prefix are exposed (without the prefix).

@author Eric Bottard
spring-xd-module/src/main/java/org/springframework/xd/module/options/PrefixNarrowingModuleOptions.java