anchor.diff:  
   Since you are importing `springcloudstream`, you need to provide `requirements.txt` in the top level directory with an entry for `springcloudstream` minimally.
   
  +## Jython Wrapper
  +
   If you need to convert types to and from `<str>`, you may configure a Jython wrapper. JSon should work well in most cases, but if you want to pickle something, its best to stick with standard types such as `<dict>`, `<tuple>`, etc. Pickling user defined objects between Jython and native Python has some known issues, but YMMV. 
   
   The Jython wrapper uses a simple convention illustrated by this example: 
  
positive.code:             self.images[key] = page.images[key]
  
  
  # protocol = pickle.HIGHEST_PROTOCOL
  protocol = 1
  
  'payload is bound to Java object, e.g., spring.io.data.Page' representing a web page configuration 
  that has a map of link and a map of images.
  page = Page(payload)
  
  'Pickle the Page dict representation'
  input = pickle.dumps(page.__dict__, protocol)
  'processor is bound to ShellProcessor. Invoke the shell processor and receive a dict'
  data = processor.sendAndReceive(input)
  'deserialize'
  returned_page = pickle.loads(data)
  'transform to java String as Json'
  result = String(json.dumps(returned_page))
  ----
  
  Page.java
  [source, java]
  ----
  public class Page {
  	Map<String, Object> links = new HashMap<>();
  	Map<String,Object> images = new HashMap<>();
  
  	public Page() {
  		try {
  			links.put("google", new URI("http://www.google.com"));
  			links.put("yahoo", new URI("http://www.yahoo.com"));
  			links.put("pivotal", new URI("http://www.pivotal.io"));
  			links.put("spring", new URI("http://www.spring.io"));
  
  			images.put("image1", "image1.gif");
  			images.put("image2", "image2.gif");
  			images.put("image3", "image3.gif");
  		}
  		catch (URISyntaxException e) {
  			e.printStackTrace();
  		}
  
  	}
  
  	public Map<String, Object> getLinks() {
  		return links;
  
negative.code: 
  ----
  
  The `pickle-page.py` wrapper transforms the input prior to invoking `processor.sendAndReceive`. This is the Java `ShellProcessor` that calls the external Python app. It is always bound to the variable named `processor`. Then the script transforms the output to a JSON string, which will be consumed by the next app in the stream.   
  
  See link:../docs/JavaPythonBuildPack.adoc[Deploying to Cloud Foundry]
  
  