def getJavaMethodName(el):
    name = el.getName()
    if " " in name:
        title = "".join(name.title().split())
    else:
        title = name
    return applyToFirstLetter(title, unicode.lower)
		for rend in pend.getNaryLink().getNaryLinkEnd() \
				if rend is not pend and rend.getConsumer() and rend.getConsumer().getRequiring().getInternalOwner()]

    r = [ (pend.getProvider().getProviding().getInternalOwner(), iface) \
		for port in program.getInternalStructure()\
		for req in  port.getRequired()\
		for iface in req.getRequiredElement() \
		for rend in req.getNaryProvider()\
		for pend in rend.getNaryLink().getNaryLinkEnd() \
				if pend is not rend and pend.getProvider() and pend.getProvider().getProviding().getInternalOwner()]
	
    for (jclass, iface) in p:
		ifname = iface.getName()
		fjcname = getFullClassName(jclass)
		fifname = getFullInterfaceName(iface)	
		vname = applyToFirstLetter(ifname, unicode.lower)+"Impl"
    
		# TODO: update this attribute somehow
		jatts = [ x for x in program.getOwnedAttribute() if x.getName() == vname]
		if len(jatts)==0:
		   jatt = createAttribute(program, vname, iface, "")
		   jatt.setValue("new " + fifname + "() {}")
		   note = modelingSession.getModel().createNote("JavaDesigner", "JavaAnnotation", jatt, "@Provided")
		   note.setMimeType('text/plain')
		   addTagValue(program, "JavaImport", "org.modelio.juniper.platform.Provided")
		else:
		   jatt = jatts[0]

    storagePrograms = [ pend.getProvider().getProviding().getInternalOwner()
            for port in program.getInternalStructure()\
            for req in port.getRequired()\
def getJavaClassName(el):
    return applyToFirstLetter(getJavaMethodName(el), unicode.upper)